推薦システムを作ってると、ふと機械学習って本当に必要か?と疑問に思う瞬間がある。
たとえばユーザーをいくつかのグループに分けるだろう。そして各グループがどんな属性のアイテムをクリックするのかを見ていく。
すると、実はそのクリック分布を眺めるだけで、ユーザーの行動領域なんてほぼ特定できてしまうんだよな。
つまり、ユーザー×アイテムの関係性は、結局データベースの設計レベルで決まってしまう。
結合の仕方や属性の粒度をどう設計するかのほうが支配的で、クリック履歴をわざわざ機械学習モデルに食わせて学習させる意味は、想像以上に小さい。
仮に機械学習が役立つとすれば、それはユーザーやアイテムの未知属性を推定するような補完的な部分だけなんだよ。
たとえば年齢層が不明なユーザーに対して、クリック傾向から年代を推測するとか、アイテムの特徴を自動抽出するとか。
けどそれは、推薦の核心ではない。推薦の本質はクリックさせることにある。
そしてその瞬間、重要なのはアルゴリズムじゃなく、デザインや文言、つまり心理的なトリガーなんだ。ボタンの色ひとつ、コピーの一文ひとつでCTRなんて平気で変わる。
クリック率を上げるって話になると、もはやエンジニアリングの領域じゃなくて心理設計の領域なんだよ。
だからプログラマーの俺がどれだけアルゴリズムを磨いたところで、根本的な改善にはならない。
A/Bテストで調整する手もあるけど、それも何度も繰り返せばユーザーは離脱する。
つまり、理屈の上でどんなに精巧なモデルを作っても、現実の行動を左右するのは心の動きであって、数式じゃない。
そう思うと、機械学習の出番って案外、思われてるよりもずっと狭いんだよな。