トピックモデルと推薦:話題と好みを見つける
教師なし学習の応用として、文章の話題を見つけるトピックモデルと、おすすめを出す推薦のしくみを学びます。基礎層では、話題も好みも正解のラベルなしでデータから見つけ出すという大枠をつかみます。深掘り層では、潜在的ディリクレ配分法、協調フィルタリングのユーザーベースとアイテムベースという2つの流儀、コンテンツベースフィルタリングとの違い、コールドスタート問題まで説明できるようになります。
ねらい
このレッスンでは、教師なし学習の応用として、文章に隠れた話題を見つけるトピックモデルと、利用者に合ったものを選び出す推薦(すいせん)のしくみを学びます。
基礎
話題も好みも、正解のラベルなしでデータの中の似ている関係から見つけ出す、という大枠をつかみます。
1. 文章を話題の混ざり合いとしてとらえるトピックモデル
たくさんの文章の中から、どんな話題があるかを自動で見つけ出すしくみをトピックモデルといいます。
毎日届く大量の記事に、人手で話題のラベルを付け続けるのは現実的ではありません。しかも、1つの記事が1つの話題だけでできているとは限りません。ある記事は経済の話でありながら、国際情勢の話でもある、ということがふつうに起きます。記事を1つの箱に入れる仕分けでは、この実態をとらえきれないのです。
そこでトピックモデルは、1つの文章がいくつかの話題の混ざり合いでできていると考えます。ある記事は「経済の話題が7割、国際の話題が3割」というように、割合を持った混ざりとしてとらえます。
手がかりは、言葉の現れ方です。「株価」「金利」という言葉がよく一緒に現れるなら、そこには経済という話題のまとまりがあります。話題のラベルを人が与えなくても、言葉のまとまり方から話題そのものを機械が見つけ出す。この点で、トピックモデルは教師なし学習の仲間です。前のレッスンで学んだ次元削減とも近く、たくさんの言葉の情報を少数の話題という単位にまとめ直しているとも言えます。
2. 行動の記録と中身の特徴という推薦の2つの手がかり
利用者の好みに合いそうな商品や作品を選び出すしくみを推薦システムといいます。通販サイトの「あなたへのおすすめ」を作っているのが、このしくみです。サイトはあなたと会話をしたことがありません。手がかりにしているのは、あなたを含む大勢の利用者が何を買い、何を高く評価したかという行動の記録です。
手がかりは大きく2つあります。1つは、大勢の利用者の行動の記録です。誰が何を買い、何を高く評価したか。この記録が集まると、好みの似た人や、一緒に買われやすい商品の組み合わせが浮かび上がります。
もう1つは、商品そのものの中身の特徴です。あなたがある映画を気に入ったなら、ジャンルや監督の近い別の映画も、好みに合う見込みが高いと考えられます。
どちらの手がかりを使うときも、「この人にはこれをすすめるのが正解」というラベルを誰かが用意しているわけではありません。データの中の似ている関係から、好みに合いそうなものを選び出します。この点で、推薦も教師なし学習の応用です。
ポイント
トピックモデルは文章に隠れた話題を見つけ出し、推薦システムは利用者の好みに合うものを選び出します。どちらも正解のラベルに頼らず、データの中の似ている関係を手がかりにします。
ここまでの要点
- トピックモデルは、文章をいくつかの話題の混ざり合いとみなし、隠れた話題をラベルなしで見つけ出します。
- 推薦システムの手がかりは、大勢の利用者の行動の記録と、商品そのものの中身の特徴の2つです。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「話題も好みも、正解のラベルなしでデータの似ている関係から見つけ出す」と押さえられていれば、この先の深掘りに進む土台はできています。
発展
ここからは、話題を見つけ出す代表的な手法のしくみと、おすすめの出し方の流儀、そして推薦が動き出せなくなる弱点まで掘り下げます。
3. 隠れた2つの割合を言葉から逆算する潜在的ディリクレ配分法
トピックモデルの代表的な手法が、潜在的ディリクレ配分法(LDA)です。潜在(せんざい)とは、表からは見えないが内に隠れている、という意味です。ここで隠れているのは、話題そのものです。
潜在的ディリクレ配分法は、文章の成り立ちを2つの割合で考えます。
1つ目は、話題ごとの言葉の割合です。経済の話題なら「株価」や「金利」が現れやすい、という話題と言葉の結びつきの強さです。
2つ目は、文章ごとの話題の割合です。ある記事は経済が7割で国際が3割、という混ざり具合です。
機械が実際に観察できるのは、文章に現れた言葉だけです。そこで、現れた言葉のつじつまが最もよく合うように、この2つの隠れた割合を逆算します。
逆算が終わると、それぞれの話題にどんな言葉が集まりやすいかと、それぞれの文章がどんな話題からできているかが、同時に手に入ります。似た話題の文章をまとめたり、話題ごとに文章を整理したりできるのは、この結果のおかげです。話題の名前を人が決めていないのに、言葉のまとまり方から話題が浮かび上がる。ここがこの手法の要です。
理解の確認
潜在的ディリクレ配分法が逆算する2つの割合は、話題ごとの言葉の割合と、文章ごとの話題の割合です。この2つを自分の言葉で言い分けられるか、確かめてみてください。
4. 協調フィルタリングの2つの流儀であるユーザーベースとアイテムベース
推薦の1つ目の流儀が、協調フィルタリングです。協調フィルタリングは、大勢の利用者の行動の記録だけを手がかりにします。誰が何を買い、何を高く評価したか。使うのはそれだけで、商品の中身が何であるかは問いません。
この協調フィルタリングには、おすすめの出し方が2つあります。似ている人から探すユーザーベースと、似ている商品から探すアイテムベースです。
1つ目のユーザーベースは、あなたと好みが似ている別の利用者を起点にします。買った商品や高く評価した商品があなたと重なる人は、好みが似ていると考えられます。
その好みが似ている人が高く評価していて、あなたがまだ手に取っていない商品A。それをあなたにすすめるのが、ユーザーベースです。人から人へ、好みのつながりをたどっておすすめが届くイメージです。
2つ目のアイテムベースは、あなたが過去に高く評価した商品そのものに着目します。
大勢の利用者の記録を調べると、ある商品を買った人たちの多くが別のある商品も買っている、という組み合わせが見つかります。この2つは、買われ方が似ている商品です。あなたが高く評価した商品Bに対して、買われ方の似ている商品Cを探し出し、あなたに提案します。これがアイテムベースです。
どちらの流儀でも、もとになるのは利用者たちの行動の記録です。記録が積み上がるほど、似ている人も似ている商品も正確に見つかり、おすすめの精度が上がります。
裏を返すと、記録がまだ無い相手に対しては、協調フィルタリングは動き出せません。この弱点には名前が付いています。もう1つの流儀を見たあとで、正面から取り上げます。
5. 商品の中身の特徴からすすめるコンテンツベースフィルタリング
推薦のもう1つの流儀が、コンテンツベースフィルタリングです。こちらは、他の利用者の記録を使いません。手がかりにするのは、商品や作品そのものの中身の特徴です。
あなたがある映画を高く評価したとします。コンテンツベースフィルタリングは、その映画のジャンル・監督・出演者といった特徴を調べ、特徴の近い別の映画を選んですすめます。
協調フィルタリングとの違いは、手がかりの置き場所です。協調フィルタリングは利用者たちの行動の記録に、コンテンツベースフィルタリングは商品の中身の特徴に、それぞれ手がかりを置きます。中身さえ分かれば、他の利用者の記録が1件も無くてもすすめられる。この性質が、次に見る問題への備えになります。
理解の確認
ユーザーベースは人と人の似ている度合い、アイテムベースは商品と商品の買われ方の似ている度合い、コンテンツベースフィルタリングは商品の中身の特徴。この3つの手がかりの違いを自分の言葉で言い分けられるか、確かめてみてください。
6. 記録の無さが推薦を止めるコールドスタート問題
協調フィルタリングの弱点に戻ります。新しく登録したばかりの利用者は、まだ何も買っておらず、何も評価していません。行動の記録が無いので、好みが似ている人を探しようがありません。
新しく並んだばかりの商品も同じです。まだ誰にも買われていないため、買われ方の似ている商品も、すすめるべき相手も見つけられません。
このように、行動の記録が足りず推薦を始められない問題をコールドスタート問題といいます。コールドスタートとは、冷えた状態からの始動という意味です。エンジンが冷えたままの自動車が本来の力を出せないように、記録という燃料がたまるまで、協調フィルタリングは本来の力を出せません。
この弱点を補う定番の相棒が、コンテンツベースフィルタリングです。中身の特徴は、まだ誰にも買われていない商品にも最初から備わっています。記録が少ないうちは中身の特徴でおすすめを出し、記録がたまってきたら協調フィルタリングも使う、という組み合わせがよく採られます。
さらに発展的なやり方として、商品の説明文などの言葉を数値の並びに変えて、中身の特徴として使う方法もあります。この、言葉を数値の並びで表す技術は単語埋め込みと呼ばれ、そのしくみは自然言語処理の章で掘り下げます。
注意
コールドスタート問題は、行動の記録が無い新しい利用者や新しい商品で、協調フィルタリングが働かなくなる問題です。中身の特徴を使うコンテンツベースフィルタリングを組み合わせて補います。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。