今回から,コンテンツベースのレコメンドのHadoopによる実装を紹介します。おさらい:協調フィルタリング第3回~第5回に紹介した協調フィルタリングでは,入力データに履歴,アイテム間の類似性を計算するためにコサイン関数を使いました。その結果,アイテムごとに類似性の高いアイテム,すなわち,各アイテムを評価(購入,ダウンロード,チェック,クリックなど)したユーザが他に評価したアイテム集合を見つけることができました。このアイテム集合が,「⁠このアイテムを評価している人はこのアイテムも評価しています」というタイプのレコメンドの基本情報で,アイテムベースのレコメンドになります。同じ履歴およびコサイン関数を使って,ユーザ間の類似性も計算できます。ここで前提としているのは,「⁠ターゲットユーザ(レコメンドの対象ユーザ)と同じようなアイテムを評価するユーザは,ターゲットユーザと嗜好も似ている。したがって、評価が似たユーザ集合で気に入られたアイテムは,ターゲットユーザの嗜好にも合う。」というアイデアで,ターゲットユーザごとに類似ユーザの集合を見つけます。アイテムベースのレコメンドに対し,こちらはユーザベースのレコメンドと呼ばれます。ユーザベースのレコメンドは,ターゲットユーザごとに類似ユーザ集合の中で人気の高いアイテムを推薦します。ここで推薦されるアイテムは,ターゲットユーザの嗜好に合っていることが期待できます。コンテンツベースのレコメンドコンテンツベースでは履歴に代わり,各アイテムのメタデータ等を入力データとして使い,アイテム間の類似性を計算します。アイテムが映画であれば,メタデータとして映画の監督・脚本・プロデューサ・スタッフ・キャスト・あらすじなどがあります。この場合、類似性の高い映画は,製作陣が被っている映画,あるいはあらすじが似ている映画になります。前者であればシリーズ化された映画,後者であればリメークされた映画などが類似性の高い映画になります。メタデータとしてどのデータをどう使うかによりアイテム間の類似性が変わることに注意してください。左側はユーザの読書履歴を用いた協調フィルタリング,右側はアイテムのタグを用いたコンテンツベースによりアイテム間の類似性を表しています。協調フィルタリングではユーザ層がイタリアの歴史および中国の歴史で分かれ,「⁠君主論」と「韓非子」の間に類似性が見られませんが,コンテンツベースでは「権力者」および「政治学」のタグで類似性が見られます。コンテンツベースでもユーザ間の類似性を計算できます。その場合,データとしてユーザの年齢,性別、住所,職業,趣味といった属性やプロファイルなどを使います。ここで計算したユーザ間の類似性を使うと,各ターゲットユーザと似た属性やプロファイルを持つユーザ集合が気に入ったアイテムを抽出できます。同じアイテムベースで,協調フィルタリングとコンテンツベースにはどんな違いがあるのでしょう?アイテムが映画であれば,コンテンツベースではメタデータが類似している,つまり映画の中身が類似した映画が推薦される傾向がありますが,協調フィルタリングの場合,それぞれを評価したユーザ集合が類似している,つまり映画のカテゴリや内容が異なっていても,ユーザが共通して評価している映画が推薦される傾向があります。「⁠インビクタス」や「かいじゅうたちのいるところ」を推薦します。これらのレコメンド手法は長所や短所も違っています。協調フィルタリングでは,アイテムのメタデータに依存しないために,ユーザに対して意外性を与える推薦をできる長所がある一方で,履歴が無い,あるいは今まで誰にも評価されていないアイテム/評価したことの無い新規ユーザには推薦できないという短所があります。コンテンツベースでは,まだ評価されていないアイテムや履歴の無い新規ユーザにも推薦できる長所がある一方で,メタデータの量が十分に無い場合は推薦されるアイテムの質が安定しませんし,メタデータ自体が変化しない限り,推薦されるアイテムも変化しないという短所があります。したがって,実際のサービスでは,レコメンドの目的や利用可能なデータに応じて,どちらかを選択あるいは併用します。協調フィルタリングからコンテンツベースへ協調フィルタリングとコンテンツベースの大きな違いは使うデータの違いにあります。両者ともアイテムあるいはユーザ間の類似性を計算するのは同じです。ここで「使うデータが違うだけで,類似性の計算は一緒だから,プログラムは殆ど同じでは?」と思う読者の方もいると思います。Hadoopであれば,類似性を計算するまでの,どのデータからどれをkeyおよびvalueに設定するかの違いだけです。次回は,前回までの協調フィルタリングで紹介した関数を元に,コンテンツベースのレコメンドの実装方法について紹介します。専門は情報検索,統計的機械学習,マーケティングサイエンス。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。