これ僕.com:行動分析学マニアがおくる行動戦略

意図と行動のギャップから生じる「不自由さ」への挑戦。果たして僕たちに自由はあるのか?

ウケるWebサービスの企画を”探索”するには

某「*.in」なサービスが大量生産されているのを見て、良し悪しはともかく、すげーバイタリティだなぁと思う一方で、ふと大学院時代に学んだことを思い出していた。これって、探索アルゴリズムでいうところのランダム探索なんじゃなかろうか。


ランダム探索というのは、例えば、f(x, y, z)という式があって、学習データに対して最適になるx, y, zを探すために、次から次にランダム値を当てはめていくという。まぁ、ランダムなんで時間をかければ何時かは最適解に近いところに行き着く可能性はあるんだろうけど、当然、効率は非常に悪い。許容できる時間内に最適解が見つかることはあまりないのかな。これと反対に位置するのが、最適解を確実に見つけるためのロジック(アルゴリズム)を考えて、あとはマシンパワーに頼って計算するというもの。ロジックが間違っていなければ、時間さえかければ、何時かは解にたどり着く。ただ、問題によっては計算時間が天文学的数字になったりするわけだ(将棋とか)。
んで、色々工夫された手法があるのだけど、私が学んだのは遺伝的アルゴリズム(GA)というもの。以下のようなステップで探索を行う。

  1. x,y,zの値をランダムに設定した個体をn個用意する
  2. n個の個体を評価し、上位50%を除いて削除する(淘汰)
    • 淘汰のさせ方にも色んなバリエーションがある。わざと悪い評価の個体を残したりして、局所最適解に陥るのを避けたりとか。
  3. 評価の高い個体同士を組み合わせて新しい個体を作る(交叉)
    • 例えば、f(1, 2, 3)とf(4, 5, 6)という個体の評価が高い場合、この2つを組み合わせてf(1, 5, 6)とf(4, 2, 3)という個体を作る。良い個体同士を組み合わせて、更に良い解を探し出そうというもの。
    • 2で淘汰した数分だけ、交叉によって新たな個体を生成する
  4. 全体の1〜2%(もっと低かったかも)に対して、ランダム値を適用する(突然変異)
  5. 2へ戻る

良い因子を持つもの同士の良い部分が組み合わされば、より良い個体が生まれるんじゃね?局所最適解から抜け出さないとまずいから、一部だけ突然変異させればいいんじゃね?的な考え方。結構、面白かった。


で、話を戻す。
まず、あまり考えずに、Webサービスをとにかくたくさん作って、ヒットしたものに力を注ぐというのは、ランダム探索に近い。ような気がする。確かに、事前にヒットするサービスを知ることは困難なので、間違った方法ではないと思う。んでも、GAのような方法を応用することも可能なのではないかと思った。
例えば、以下のようなステップで。

  1. 過去にヒットしたWebサービスをピックアップし、ヒット要因に分解する
  2. ヒット要因を組み合わせて、新しいWebサービスの企画を100個くらい作る(交叉)
    • その際、思いつきの突飛なアイデアを幾つか入れ込む(突然変異)
  3. 自分達で検討して、2〜3個くらいを選択する(淘汰第1弾)
  4. 開発してみる
  5. リリースして反応をみる(淘汰第2弾)
    • はてぶ等である程度の反応は見える
  6. 長期的にユーザーを引き付けるサービスを見極める(淘汰第3弾)

以下、繰り返すわけだけど、反応の良かったWebサービスからは要因を抜き出して、次の新しいサービスや上手くいかなかったサービスに盛り込んでいく流れだろうか。あ、Webサービスという大きな単位じゃなくて、機能という単位でやるのもありか。
これをフレームワークにして、要因分解するところや、交叉するところ等で具体的なノウハウを積み重ねていくと、面白そうだな〜。