Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

初心者機械学習:アーティスト推薦システム

1,629 views

Published on

西区プログラムのスライドです。
大学生が流行りの機械学習を試してみました。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

初心者機械学習:アーティスト推薦システム

  1. 1. 機械学習/ アーティスト推薦システム
  2. 2. 自己紹介 みそぎ 九州大学芸術工学部の二回生 Twitter(@misogil0116) 4月からWebプログラミングをし始めた。 現在はRailsのエンジニアとしてインターン中 機械学習に本格的に取り組んだのはこの夏 自動作曲などに興味が出始めた 趣味はギター,はてブ,音楽鑑賞
  3. 3. Do you know ART-SCHOOL?
  4. 4. ART-SCHOOLは知らなくても..
  5. 5. 問題点 • バンドだけに絞ったとしても、wikipediaにのっているアーティ スト数で3000は超える…シンガーソングライターや他ソロアー ティスト、音楽グループを含めると膨大な数になる。 • そもそも、どうやって「そのバンドが好きならこちらのバンドを 好む」を再現する? 機械学習にたどり着く
  6. 6. 機械学習 既存のデータから、新しいデータに対しての予測をする 従来のプログラムと違い、データを学習することで、 予測モデルを変化させていく。 Amazonの「こちらの商品を買った人はこちらも..」などはこのシステムを 用いることで実現している。
  7. 7. データはどうする? • 機械学習をするためには膨大なデータが必要。 • Amazonはそれを明示的/暗示的にとっている。 (参考:minneの三宅さんの記事) http://sssslide.com/speakerdeck.com/monochromegane/pepabo- log-infrastructure-bigfoot (サービスに寄り添うログ基盤) ユーザの好みを反映したものを作るためには、何がいいのだろう… Twitterの#NowPlayingのハッシュタグを取 得し、そこのツイートデータからユーザごと に聴いているアーティストをとればよい!
  8. 8. アーティストを出すモデル(結論) Wikipediaの情報から、アーティストをおおきく10個のグループへクラスタリング …(1) ユーザが入力したアーティストと同じクラスタのアーティストを算出, Twitterのツイートから協調フィルタリングを使ってアーティストを出す. (2)
  9. 9. Twitterデータだけじゃなくて? • ユーザのツイートを大体tweepyを使って2GBぐらい集めてみ て,ユーザが大体70万件の行,アーティストが3500(現在:バン ドのみ)であり、演算に時間がかかりすぎる。うえに精度が出 ない。 • そこで、先に数を減らすべく(一種の次元削減),アーティストを wikipediaの文書情報からクラスタリングをすることにした。 データ元は、DBpediaを利用。 Linked Dataで簡単にデータを獲得可能。 http://ja.dbpedia.org/
  10. 10. イメージ BUMP OF CHCIEKN RADWIMPS 西野カナ 嵐 Alice 1 ? ? ? User1 1 1 1 1 User2 1 0 1 0 User3 0 1 0 0 User4 1 0 1 0 User5 0 0 1 1 User6 0 1 1 0
  11. 11. イメージ BUMP OF CHCIEKN RADWIMPS 西野カナ 嵐 Alice 1 ? ? ? User1 1 1 1 1 User2 1 0 1 0 User3 0 1 0 0 User4 1 0 1 0 User5 0 0 1 1 User6 0 1 1 0 今回はこのように, 1.Userのinputしたアーティストを少なくとも一件は聴いている 2.Userのinputしたアーティストと同じクラスタのアーティスト達 の2つでデータを絞り込むことによって,行列演算の精度を上げようと考えた。
  12. 12. (1)K-meansでクラスタリング • 機械学習で行うクラスタリング手法。 • 最初にK個の点を決めておき,その点からベクトルのユーク リッド距離が短いものをクラスタへ,そのk個のクラスタの中で 重心を取り,そして同様の処理へ。点が動かなくなった時点で クラスタリングをおしまい。 言葉で言われてもわからないと思う ので。。。 重心って平均の形じゃん!(加重平均)
  13. 13. (1)二次元空間での図解
  14. 14. ソースコードは全て pythonによるもの。 Mecabを使って、文書を 24万次元ほどに分割し ている。 Importは省略しています。 機械学習のためのライブ ラリであるScikit-learnを 使ってさきほどのK- meansが簡単に行うこと ができる。
  15. 15. (1)結果
  16. 16. (2)Twitterデータから協調フィルタリング • 協調フィルタリングとは何? • おおざっぱにいうと、自分が好みそうなアイテムを,ピアユーザ (自分に似たユーザ)を探して推薦してくれるシステム • AmazonやNetflixなどの大手企業でも使われている手法 ピアユーザをどうやってさがすの? メインで使われているのは、「ピアソンの相関係数」
  17. 17. (2)協調フィルタリングの原理 アイテム1 アイテム2 アイテム3 アイテム4 アイテム5 アリス 5 3 4 4 ? User1 3 1 2 3 3 User2 4 3 4 3 5 User3 3 3 1 5 4 User4 1 5 5 2 1 私はアリスに対してアイテム5を推薦するべきかどうか? 1.ピアユーザの決定 前に出たピアソン相関係数から算出。 User1~4はそれぞれ,類似度が 0.85, 0.70, 0.00, -0.79
  18. 18. (2)協調フィルタリングの原理2 2.アリスのアイテム5に対する評価の値を出す。 u’には、ピアユーザのUser1,User2を使って計算。 算出されたのは4.87という値で、これは5段階評価では高いと考え られるので、アリスにアイテム5は紹介されるべきと考えられる。
  19. 19. (2)Tweetデータから協調フィルタリング(データ整 形) Json形式でtweepy からかえってくるの で、numpy(python の行列演算ライブラ リ)で扱える形に変 換していく。 ユーザごとに並べて 3000次元の列に変 換。 聞いていたら1がつ く形にして,何回も聞 いていたらそれに応 じてリッカード尺度 調整。
  20. 20. (2)結果 失敗しているよ うに見えるが、 横にいくにつれ てなんらか1が ついている。 よこのナンバー はUserに一意 につけられたid である。 Pickleにするこ とによってデー タをバイナリに して軽量化して 実際は書き出し ています。
  21. 21. 次元削減を用いた協調フィルタリング • 実際にはデータが疎すぎるが故に,協調フィルタリングで有益な情 報を得ることができない。いわゆる次元の呪い。 • そんな大きいデータを高次元のデータの特徴をできるだけ保持した まま低次元のデータへ変換する,ということ。これがいわゆる次元削 減 • 配列の[0….1....2...0]の0というデータは,「評価値0」なのではなく, 「まだ聞いたことがない」という意味。そこに着目したのが MatrixFactorizationという次元削減手法
  22. 22. Matrix Factorization 行列のデータをUserの行×Itemの列で,元々の行列のデータをよりよく反映 したと考えられる行列へ分解する。
  23. 23. Matrix Factorization 具体的なパラメータの更新には以下を使えばうまく更新されることが知られ ている。 これによって、0という情報を保持しながら,次元の削減を行うことができるよ うになった。 値のあるところでのみ最適化を行うMatrixFactorizationが推薦システムに は効果的である。
  24. 24. (2)次元削減を用いた協調フィルタリングの実装 行列の演算には, 最適化手法のう ちの,最急降下 法という手法を 用いて演算を 行っている。
  25. 25. まとめ • しかし、まだまだ調整が必要。多く聞かれているアーティストへの局所解に偏る のをなんとかしたい。自分でなんらかの評価値を設けることが必要か。 • 1度も聞かれていないアーティストは協調フィルタリングが使えない…歌詞から 関連を探ろうと思う。 • ミュージシャンを好む本質をこれから改良して探っていきたい。 そしてバンド活動,音楽熱に応用したい(欲望)/ バンディットアルゴリズムでライブに歌われる曲を予測…とか面白いかもしれな い。。。 ・機械学習もpythonもすごく楽しい。あるきっかけで音楽情報処理の仕事を受けさ せてもらえそうなので,深層学習に踏み入りたい。 ご静聴ありがとうございました。

×