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

More Related Content

Viewers also liked

歌声分析のエンタテイメント応用
歌声分析のエンタテイメント応用歌声分析のエンタテイメント応用
歌声分析のエンタテイメント応用Akinori Ito
 
音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろはkthrlab
 
LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要Kenji Urai
 
機械学習アルゴリズムの絵本
機械学習アルゴリズムの絵本機械学習アルゴリズムの絵本
機械学習アルゴリズムの絵本Hirokazu Nishio
 
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷Masao Ikeya
 
20160601画像電子学会
20160601画像電子学会20160601画像電子学会
20160601画像電子学会nlab_utokyo
 
カンバン駆動開発チュートリアル
カンバン駆動開発チュートリアルカンバン駆動開発チュートリアル
カンバン駆動開発チュートリアル洸人 高橋
 
機械学習フレームワーク横断、Chainer, Keras
機械学習フレームワーク横断、Chainer, Keras機械学習フレームワーク横断、Chainer, Keras
機械学習フレームワーク横断、Chainer, KerasTeppei Murakami
 
Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用Yuya Unno
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクールYuya Unno
 
Machine Translation Introduction
Machine Translation IntroductionMachine Translation Introduction
Machine Translation Introductionnlab_utokyo
 
人工知能(AI)の現況と、ビジネスへの活用
人工知能(AI)の現況と、ビジネスへの活用人工知能(AI)の現況と、ビジネスへの活用
人工知能(AI)の現況と、ビジネスへの活用Koichi Masukura
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするHayashi Yuichi
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例Recruit Technologies
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
推薦システムを構築する手順書 with Azure Machine Learning
推薦システムを構築する手順書 with Azure Machine Learning推薦システムを構築する手順書 with Azure Machine Learning
推薦システムを構築する手順書 with Azure Machine LearningMasayuki Ota
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門shiracamus
 
マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例nlab_utokyo
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (20)

歌声分析のエンタテイメント応用
歌声分析のエンタテイメント応用歌声分析のエンタテイメント応用
歌声分析のエンタテイメント応用
 
音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは音楽で理解する情報科学のいろは
音楽で理解する情報科学のいろは
 
LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要LSTM (Long short-term memory) 概要
LSTM (Long short-term memory) 概要
 
機械学習アルゴリズムの絵本
機械学習アルゴリズムの絵本機械学習アルゴリズムの絵本
機械学習アルゴリズムの絵本
 
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷
20161112 第17回 全脳アーキテクチャ若手の会 勉強会 カジュアルトーク 「AI技術をサービスで活用するには?」 アディッシュ池谷
 
20160601画像電子学会
20160601画像電子学会20160601画像電子学会
20160601画像電子学会
 
カンバン駆動開発チュートリアル
カンバン駆動開発チュートリアルカンバン駆動開発チュートリアル
カンバン駆動開発チュートリアル
 
機械学習フレームワーク横断、Chainer, Keras
機械学習フレームワーク横断、Chainer, Keras機械学習フレームワーク横断、Chainer, Keras
機械学習フレームワーク横断、Chainer, Keras
 
Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール
 
Machine Translation Introduction
Machine Translation IntroductionMachine Translation Introduction
Machine Translation Introduction
 
人工知能(AI)の現況と、ビジネスへの活用
人工知能(AI)の現況と、ビジネスへの活用人工知能(AI)の現況と、ビジネスへの活用
人工知能(AI)の現況と、ビジネスへの活用
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
推薦システムを構築する手順書 with Azure Machine Learning
推薦システムを構築する手順書 with Azure Machine Learning推薦システムを構築する手順書 with Azure Machine Learning
推薦システムを構築する手順書 with Azure Machine Learning
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門
 
マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例マシンパーセプション研究におけるChainer活用事例
マシンパーセプション研究におけるChainer活用事例
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

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

Editor's Notes

  1. Syrup16g,BUMP OF CHICKEN きのこ帝国
  2. 明示的には、レビュー評価 暗示的には、ログを解析することによる。
  3. データもとがわかったところで、先にアーティストを如何にして出すか、の結論の紹介 ここから難しい話になる。
  4. ここで後述するクラスタリングからBUMPとRADは同じ5番のグループになる。
  5. 最初は適当に色を割り当てている。
  6. 色ごとに重心をとっています
  7. 一番近い重心の色に変わっていく。
  8. 重心をそれぞれのクラスタでとりなおすと、ばつの部分が移動します。
  9. 再度重心から距離を計算し、近いところへ色を変更します…こういうながれをばつが移動しなくなるまでやる。
  10. クラスタに偏りはあるものの、大体300~400程度のクラスタに分割することができた。
  11. ユーザ1,ユーザ2が近いことを協調しておく。
  12. Netfilxのコンペで採用された手法