Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習輪講会資料

mahiguch
August 01, 2019

 機械学習輪講会資料

Wantedly機械学習輪講会での発表資料です。

mahiguch

August 01, 2019
Tweet

More Decks by mahiguch

Other Decks in Programming

Transcript

  1. Masahiro Higuchi / 樋口雅拓 • グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 • 機械学習のエンジニアですが、iOS,

    Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。twitter: @mahiguch1 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/
  2. 背景と目的: LIMIAとは? • メディアサービス。記事一覧を表示し、タップ すると記事詳細を閲覧できる。 • 記事詳細の最下部に別の記事への回遊導 線が付いている • 記事一覧:

    k-meansでユーザを分類し、それ ぞれの中でCTRが高い順に表示 • 記事下: トピックモデルで関連記事、協調フィ ルタでオススメ記事を表示。 → 教科書に書いてあるレベルは対応したため、 更に向上させるには論文調査が必要!
  3. 今月読んだ論文 社内で論文輪読会を開催し、まず次の 2つを読んで発表した。 • Personalized News Recommendation Based on Click

    Behavior: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/3559 9.pdf • k-means++: The Advantages of Careful Seeding: http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf 今回は社内で行った発表と同様に、上記 2つの論文について説明します。他社さんの論文輪読会の 雰囲気を知りたいため、普段通りに行っていただけると助かります。
  4. 本質的な興味予測 p(click | category=ci) = p(category = ci|click) p(click) /

    p(category = ci) これを「ユーザ毎」と「地域全体」の 2つを取得する。 地域全体と同じ動きをしていれば短期的な興味、違う動きをしていれば本質的な興味とわかる。 # 過去分の足し上げ これで特定の期間(1ヶ月とか)のユーザの興味が分かったので、過去分を足し上げる。 クリック数による加重平均を取る。
  5. 結論 # 結果 推薦枠のCTRは30%増加したが、GoogleNewsTop全体のCTRは変わらなかった。 つまり、その他の枠からクリックを奪った形になる。 また、1日あたりの訪問回数は 14%増加した。 # まとめと今後 分析したところ、ユーザの興味は短期と長期に分けられることが分かった。

    それをベイズで表現して組み込んだ結果、より良い成果を獲得できた。 枠位置補正が必要。 情報フィルタと協調フィルタを混ぜる方法を洗練させる。 ユーザ行動分析を通じて、さらに理解を深めたい。
  6. K-means++ algorithm k-meansの(1)の初期値選択を次のように変更する。 1a. 1つ目の中心点をランダムに選択する。 1b. 次の中心点を選択するとき、他の中心点から遠いものが選ばれ易くする。 1c. (1b)を繰り返して、必要な中心点を作る。 2-4.

    標準的なk-meansと同じ # 結果 k-meansだと稀に大きな誤差になることがあるが、 k-means++だと安定した結果を得られる。 誤差が20%減少し、速度が70%速くなった。
  7. // kmeans++の初期値を返す。入力のnumClusterはクラスタ数、dataは分類対象データ。 // 初期値同士を遠ざけることで、局所解を防ぐと共に収束を早くする。 // SEE ALSO: http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf func seeds(numCluster

    uint64, data []*entityIdeaVector.Entity) ([][]float64, error) { seeds := make([][]float64, numCluster) e := data[rand.Intn(len(data))] seeds[0] = e.Vector for i := uint64(1); i < numCluster; i++ { dist := make([]float64, len(data)) var sum float64 for k, v := range data { _, dist[k] = nearest(seeds, v.Vector) sum += dist[k] } threshold := rand.Float64() * sum var stack float64 var dataNum int for k, v := range dist { stack += v if threshold < stack { dataNum = k break } } seeds[i] = data[dataNum].Vector } return seeds, nil }
  8. これから読みたい論文や書籍 • * Google news personalization: scalable online collaborative filtering:

    https://www2007.org/papers/paper570.pdf • * Amazon amazon-all-the-research-you-need-about-its-algorithm-and-innovation: https://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf • * Netflix The Netflix Recommender System: Algorithms, Business Value, and Innovation: https://beta.vu.nl/nl/Images/werkstuk-fernandez_tcm235-874624.pdf • * Gunosy Greedy Optimized Multileaving for Personalization: https://arxiv.org/pdf/1907.08346.pdf • * Yahoo! News Embedding-based News Recommendation for Millions of Users: https://www.kdd.org/kdd2017/papers/view/bridging-collaborative-filtering-and-semi-supervised -learning-a-neural-appr • * 書籍 推薦システム―統計的機械学習の理論と実践 ― https://www.kyoritsu-pub.co.jp/bookdetail/9784320124301 • * 書籍 これからの強化学習: https://www.morikita.co.jp/books/book/3034