前編では,レコメンドシステムmarbleの概要について説明を行いました。後編では協調フィルタリングの下処理やMixChannelの使用例を解説します。手法の1つに,行列分解を用いる方法があります。前編の図2に示したようなユーザー/アイテム間行列について低次元の近似を求めることにより,ユーザーやアイテムをクラスタリングして扱い,レコメンド時の計算量を低減できます。(NMF)があります。NMFの特徴は,分解後の行列のすべての要素が非負になるようにうまく分解を行うところです。NMFでは,元の行列の値をある要素の足し合わせで表現することが求められ,各ユーザー/アイテムがそれぞれの要素をどの程度の強さで持っているかという表現が得られます。元の行列として,前編の図2のを使うことにします。この行列の積を計算すると,となり,もともとの行列で値が1だった箇所は大きな値になっています。0だった箇所は,そのユーザーと共通のアイテムを評価したユーザーがそのアイテムを評価したかどうかで値が変化します。ユーザーBから見たアイテムCが0のままなのは,ユーザーBの評価したアイテムAとBを評価したユーザーの中に,アイテムCを評価したユーザーがいないためです。このように,NMFを用いて行列を分解してから行列積を求めて元に戻すことで,協調フィルタリングによる評価値を求めることができます。実際の運用では定期的に行列分解を行い,その際に行列積の計算まで済ませておくか,行列積の計算処理が重い場合には分解後の2つの行列を保持しておき,アクセスに合わせてそのユーザーのベクトルとアイテム行列の積を求めることになります。NMFで得られた次元の小さい行列の要素は,人間が解釈できる特徴を示している場合があります。アイテムA~Dが映画を表しており,アイテムAとBは邦画,CとDは洋画だとします。すると,前者2つは要素0が大きく,後者2つは要素1が大きいため,要素0は邦画,要素1は洋画に対応すると推測されるといった事例です。この場合,ユーザーAは洋画と邦画の両方を見るユーザー,ユーザーBは邦画専門のユーザー,ユーザーCは洋画専門のユーザーということが分解した行列から読み取れます。Word2VecWord2Vecは,自然言語処理の分野では有名な,単語のベクトル表現を求める手法です。「⁠似た周辺語を持つ単語は似た意味である」という思想で,ある単語を入力するとその周辺語を出力するニューラルネットを作成し,その隠れ層への重み行列を用いるSkip-Gramが一般的な方法です。おもしろいことに,「⁠東京-日本+フランス」が「パリ」に近づくなど,得られた単語のベクトルで加算や減算がある程度成り立つと言われています。Word2Vecにおける単語をitemID,文章をあるユーザーの評価したitemID列と読み替えることによって,Word2Vecをアイテムベース協調フィルタリングアルゴリズムとして用いることができます(もちろん,単語をuserID,文章をあるアイテムを評価したuserID列としてとらえるとユーザーベースになります⁠)⁠。「⁠前後に似たアイテムが評価されているアイテムどうしは似ている」と考えると,自然に理解できるかもしれません。図1は,自然言語によるWord2Vecと,協調フィルタリングのためのWord2Vecを比較したものです。自然言語によるWord2Vecと,協調フィルタリングのためのWord2Vecの比較Word2VecではNMFと異なり,ユーザー側のベクトルは得られません。そのため,ユーザーの行動とアイテムのベクトルを使って求める必要があります。最近評価したアイテム5つのベクトルの相加平均を用いる方法などが考えられます。求めたベクトルの要素がある特徴を表すといった直接的な解釈はできません。解釈を行いたい場合は,適当なアルゴリズムでクラスタリングを行うなどの処理が必要です。レコメンドシステムの導入・運用レコメンドシステムを導入,運用するには,多くの機械学習システムと同様に気をつける点があります。目標を明確にすることが大切です。レコメンドシステムを運用していくには,何を学習データにするかも含めて広く調整を行う必要がありますが,明確なKPIが決定されていない状態でそれをするのは困難です。レコメンドシステムを含む機械学習システムでは,あとから目標を変えることが難しく,属人化やコード/ドキュメントの難読化の原因になります。効果測定でも注意が必要です。レコメンドでは,単純なクロスバリデーションを用いると,テストデータにしか存在しないitemIDが生まれてしまう場合があります。レコメンドのあるなしでそもそもユーザー行動が変化するため,レコメンドがない状態の正解データをどの程度信用するかなどの問題が発生する場合もあります。したがって,それぞれの場合に対して工夫を行うべきです。クロスバリデーションでは,順位相関や平均二乗誤差などさまざまな指標が考えられる中でどれを採用するかを考えておきましょう。実装が完了して現実的なKPIを追求する段階になったらA/Bテストを行います。このとき,セレクションバイアスの有無を確認するために,A/Aテストを行っておく必要があります。A群/B群のKPIは,統計上適切な方法で比較できるようにしておくべきでしょう。ほかに,技術的負債を生まないための細やかな努力が必要です。前述のようなレコメンドアルゴリズムをライブラリによってシンプルに実装する程度であれば,アルゴリズムを解説したドキュメントを用意しておくくらいで大丈夫でしょう。ライブラリの入力/出力に対して細かな処理を大量に追加するコードを書く場合や,ニューラルネットワークなどを使用した複雑なレコメンドアルゴリズムを用いる場合には,コード面,インフラ面,ドキュメント面などを含めて細心の注意を払ってください。MixChannelにおける使用例MixChannelの協調フィルタリングアルゴリズムでは,おもにWord2Vecを用いています。これは,計算時間などを考慮すると都合が良いからです。Machines)に変更することがありえます。marbleでは,定期的に学習を行う学習用サーバ(Python)と,実際にレコメンド結果を返す計算用サーバ(Python)を分けて用意しています。学習用サーバでは,定期的に本番用DBから学習元となるデータを取得し,学習を行ったのちに学習結果を計算用サーバに送信しています。計算用サーバでは,学習用サーバから送られてきたデータを用い,APIサーバ(Go言語)から送られてきたuserIDに対する推薦結果を計算して返しています。これらのサーバ間通信では,速度や保守性,型付けの安全性を鑑みて,gRPCを利用しています。協調フィルタリングではアイテムの絶対的な「良さ」が評価されないので,推薦を行う際にはデータに基づき,フィルタリングや補正をかけています。げ銭」「⁠最近の配信時間合計」などが考えられます。さまざまな調整の結果,レコメンドシステム導入前に比べ,ホーム画面からライブ配信画面への遷移回数をA/Bテストベースで50%ほど向上させることができました。おわりに今回は,MixChannelに関する連載の第1回としてレコメンドシステムについて述べました。この記事が読者のみなさんのシステムを改善するきっかけになればさいわいです。次回は,MixChannelにおけるサーバサイド開発についての記事を予定しています。Donutsでは,現在エンジニアを募集しています。詳しくは,https://www.donuts.ne.jp/jobs/engineer/https://recruit.jobcan.jp/donuts/をご覧ください。Word2Vec著者プロフィールAkihito株式会社Donuts入社後Mixchannel事業部に配属。リードエンジニアとして活躍中。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。