8章協調フィルタリングの詳細

 一般的な問題の1つとして、多数のユーザがいて多数の商品がある場合に、個々のユーザに最も有用な商品を推薦する問題がある。この問題にはさまざまなバリエーションがある。映画の推薦(Netflixなど)や、ホームページで個々のユーザにあわせて一部をハイライトして表示する、ソーシャルメディアでユーザごとに異なるストーリーを表示するなどだ。このような問題一般を解決する手法が協調フィルタリング(collaborative filtering)だ。この手法では、対象となるユーザが利用/選好したことのある製品を取り出し、それと同じような製品を利用/選好したユーザ群を見つけ、そのユーザ群が利用/選好した他の製品を、対象ユーザに推薦する。

 例えばNetflixで、ある人が1970年代に作られたSFアクション映画をたくさん見たとしよう。Netflixはそれらの映画の属性を知らないかもしれない。しかし、その人が見た映画を見た人は、他の1970年代のSFアクション映画を見る傾向が強いだろう。つまり、このアプローチを使うと、誰がそれを見たか以外の映画に関する情報を知る必要がない。

 この手法で解決できるより一般的な問題のクラスがある。そこでは、ユーザや製品が必ずしも関与しない。協調フィルタリングでは製品ではなくアイテムと呼ぶ。利用者がクリックするリンクや、患者に対して選択される診断がアイテムとなる。

 ここで重要なのは、潜在因子(latent factors)という概念だ。Netflixの例では、あるユーザが古いSFアクション映画が好きだ、という仮定から出発した。しかし、Netflixに対してそのユーザが、特定の種類の映画が好きだと言ったわけではないし、Netflixの映画データベースにも、古いとか、SFであるとか、アクションであることを示す列はない。しかし、どこかにこれらの映画のジャンルに関する概念が存在し、少なくとも一部のユーザの映画鑑賞対象の選択に関与しているはずだ。 ...

Get PyTorchとfastaiではじめるディープラーニング ―エンジニアのためのAIアプリケーション開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.