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.
機械学習勉強会 #3
9章 クラスタリング
10章 k近傍法を用いた推薦システム
@ketancho
アジェンダ
1. クラスタリングとは(9章)
2. k近傍法とは(10.1)
3. k近傍法を用いた推薦システムとは(10.2)
4. 私のやりたかった推薦について皆さんに逆質問するコーナー
1. クラスタリングとは(9章)
2. k近傍法とは(10.1)
3. k近傍法を用いた推薦システムとは(10.2)
4. 私のやりたかった推薦について皆さんに逆質問するコーナー
クラスタリング #とは
・ある集団における各メンバの類似度を知りたい
・ex. 「この人と女性の趣味があうかを知りたい」
クラスタリング #やってみた
S氏 普通 うーん まぁまぁ うーん うーん 好きや!
G氏 ふつー 好き! うーん。 ふつー ふつー 大好き!
・
・
K氏 うーん ふつー うーん うーん 大好き 好きや! 
(私)
クラスタリング #やってみた
S氏 0 -1 0 -1 0 1
G氏  0 1 -1 0 0 1
・
・
K氏 -1 0 -1 -1 1 1 
(私)
クラスタリング #やってみた
1. 評価を符号化(+1, 0, -1)して行列化する
クラスタリング #やってみた
2. 行列を作って転置したものと掛け合わせる
 ※(互いの同意の数ー非同意の数)になる
   →値が正なら同意見が多く、負なら反対意見が多い
クラスタリング #やってみた
3. 人ごとのn次元ユークリッド距離を求める(今回は n = 7)
クラスタリング #やってみた
4. 可視化してみる
1. クラスタリングとは(9章)
2. k近傍法とは(10.1)
3. k近傍法を用いた推薦システムとは(10.2)
4. 私のやりたかった推薦について皆さんに逆質問するコーナー
k近傍法 #とは
・単純な線形の決定線境界を引けないときもある
?
k近傍法 #とは
・k近傍法 => 入力に最も近いk個の点の多数決で予測を行う
k=3 の場合は○
(k=1 の場合は△)
?
k近傍法 10.1でやってること
100個の x, y, label(0 or 1) のデータがある
→各点ごとの x, y から k近傍法でlabelを予想し、予想と事実の差異を比較
k近傍法 10.1でやってること
1. 各点ごとの距離を表すテーブル(100x100)を作成する
2. 各点ごとに自分に近い点の順に並び替え、
 上位25個(k=25)の点のLabelで多数決を取る
3. 2. で行ったk近傍法の予測値を元テー...
(余談)私のやりたかったレコメンド #とは
友人A氏
「さしこが好きで、ゆきりんはあまりタイプじゃないんだけど、
 他に可愛いメンバ紹介してよ。」
私
「(Bもさしこ好きで、ゆきりんあんまりって言ってて、
  たしかあいつさや姉も好きって言って...
1. クラスタリングとは(9章)
2. k近傍法とは(10.1)
3. k近傍法を用いた推薦システムとは(10.2)
4. 私のやりたかった推薦について皆さんに逆質問するコーナー
k近傍法 10.2でやってること
アイテムベースの方法を用いて、Rプログラマ50人が使用しているパッケージ情報を
元に、あるユーザが各パッケージをインストールしているかどうかを、そのユーザがイ
ンストールした他のパッケージの情報を用いて予測する...
k近傍法 10.2でやってること
1. 元データが縦長のデータになっているので、50 x 2,487 のテーブルに変換
2. 類似度の指標として、各列の相関係数テーブルを求める
 ※ 2,487 x 2,487 のテーブル(-1 ~ 1の実数が...
k近傍法 10.2でやってること
3. k近傍法を使うために類似度(相関)を距離に変換する。
 類似度1を距離0、類似度-1を距離∞に変換する
4. k近傍を取得する関数を作る
k近傍法 10.2でやってること
5. 4. の関数を用い、各パッケージごとに25つの近傍パッケージ(★)を取得。
 各ユーザが★をインストールしているかを調べ、
  (★の中でインストールしているパッケージの総数)/25
 をそのパッケージを...
k近傍法 10.2でやってること
6. 全てのパッケージについてインストールされている確率を計算し、
 確率をソートして、上位のパッケージを推薦する
やっぱり私のやりたいレコメンドとは
違った。既に分かっていることを推薦す
るのって意味ないんじ...
1. クラスタリングとは(9章)
2. k近傍法とは(10.1)
3. k近傍法を用いた推薦システムとは(10.2)
4. 私のやりたかった推薦について皆さんに逆質問するコーナー
・「協調フィルタリング」
 →他の人の嗜好を蓄積しておき、似ている人を見つけ、ユーザに推薦を行う
  
※まさに「さしこが好きで、ゆきりんが・・」の方法
・「内容ベースフィルタリング」
 →推薦の対象物(例えばAKBGのメンバ)の特徴から、ユー...
私がやりたいレコメンド #やってみた
・「アイテムベース」
 →蓄積したデータから「セットで好まれる数」を計算し、推薦する
※「さしことさや姉両方好きって言う人が多い」
 「この人さしこ好きらしい」
  →さや姉を紹介する?
・「ユーザベース」...
私がやりたいレコメンド #やってみた
私がやりたいレコメンド #やってみた
課題
 ・類似度の出し方ってこれでいいの?
 ・類似度が同じだったときに、推薦対象は多数決で決めていいの?
 ・精度を上げるには蓄積データを増やす必要があるけど、
  増やしすぎると処理時間かなり増えそう
...
Upcoming SlideShare
Loading in …5
×

機械学習勉強会 #3

564 views

Published on

2014/08/23 に行われた機械学習勉強会でグループ発表した資料。
書籍「機械学習入門」の9章と10章をベースに、クラスタリングとk近傍法を使ったレコメンドについて話ました。

Published in: Engineering
  • Be the first to comment

機械学習勉強会 #3

  1. 1. 機械学習勉強会 #3 9章 クラスタリング 10章 k近傍法を用いた推薦システム @ketancho
  2. 2. アジェンダ 1. クラスタリングとは(9章) 2. k近傍法とは(10.1) 3. k近傍法を用いた推薦システムとは(10.2) 4. 私のやりたかった推薦について皆さんに逆質問するコーナー
  3. 3. 1. クラスタリングとは(9章) 2. k近傍法とは(10.1) 3. k近傍法を用いた推薦システムとは(10.2) 4. 私のやりたかった推薦について皆さんに逆質問するコーナー
  4. 4. クラスタリング #とは ・ある集団における各メンバの類似度を知りたい ・ex. 「この人と女性の趣味があうかを知りたい」
  5. 5. クラスタリング #やってみた S氏 普通 うーん まぁまぁ うーん うーん 好きや! G氏 ふつー 好き! うーん。 ふつー ふつー 大好き! ・ ・ K氏 うーん ふつー うーん うーん 大好き 好きや!  (私)
  6. 6. クラスタリング #やってみた S氏 0 -1 0 -1 0 1 G氏  0 1 -1 0 0 1 ・ ・ K氏 -1 0 -1 -1 1 1  (私)
  7. 7. クラスタリング #やってみた 1. 評価を符号化(+1, 0, -1)して行列化する
  8. 8. クラスタリング #やってみた 2. 行列を作って転置したものと掛け合わせる  ※(互いの同意の数ー非同意の数)になる    →値が正なら同意見が多く、負なら反対意見が多い
  9. 9. クラスタリング #やってみた 3. 人ごとのn次元ユークリッド距離を求める(今回は n = 7)
  10. 10. クラスタリング #やってみた 4. 可視化してみる
  11. 11. 1. クラスタリングとは(9章) 2. k近傍法とは(10.1) 3. k近傍法を用いた推薦システムとは(10.2) 4. 私のやりたかった推薦について皆さんに逆質問するコーナー
  12. 12. k近傍法 #とは ・単純な線形の決定線境界を引けないときもある ?
  13. 13. k近傍法 #とは ・k近傍法 => 入力に最も近いk個の点の多数決で予測を行う k=3 の場合は○ (k=1 の場合は△) ?
  14. 14. k近傍法 10.1でやってること 100個の x, y, label(0 or 1) のデータがある →各点ごとの x, y から k近傍法でlabelを予想し、予想と事実の差異を比較
  15. 15. k近傍法 10.1でやってること 1. 各点ごとの距離を表すテーブル(100x100)を作成する 2. 各点ごとに自分に近い点の順に並び替え、  上位25個(k=25)の点のLabelで多数決を取る 3. 2. で行ったk近傍法の予測値を元テーブルに付与する 4. Label と 予測値の合致率を求める  →このデータでは合致率93% 私のやりたかった レコメンドとイメージが違う。。
  16. 16. (余談)私のやりたかったレコメンド #とは 友人A氏 「さしこが好きで、ゆきりんはあまりタイプじゃないんだけど、  他に可愛いメンバ紹介してよ。」 私 「(Bもさしこ好きで、ゆきりんあんまりって言ってて、   たしかあいつさや姉も好きって言ってたな。)  山本彩っていう子がオススメだよ!  あと松井玲奈ちゃんがめっちゃかわいい! 」 とか言っててもしょうがないので、10.2 を読んでみました。
  17. 17. 1. クラスタリングとは(9章) 2. k近傍法とは(10.1) 3. k近傍法を用いた推薦システムとは(10.2) 4. 私のやりたかった推薦について皆さんに逆質問するコーナー
  18. 18. k近傍法 10.2でやってること アイテムベースの方法を用いて、Rプログラマ50人が使用しているパッケージ情報を 元に、あるユーザが各パッケージをインストールしているかどうかを、そのユーザがイ ンストールした他のパッケージの情報を用いて予測する。 ユーザ(50人)ごとにパッケージ(2,487件)を入れているか否かのデータ
  19. 19. k近傍法 10.2でやってること 1. 元データが縦長のデータになっているので、50 x 2,487 のテーブルに変換 2. 類似度の指標として、各列の相関係数テーブルを求める  ※ 2,487 x 2,487 のテーブル(-1 ~ 1の実数が入っている) ユーザ パッケージ
  20. 20. k近傍法 10.2でやってること 3. k近傍法を使うために類似度(相関)を距離に変換する。  類似度1を距離0、類似度-1を距離∞に変換する 4. k近傍を取得する関数を作る
  21. 21. k近傍法 10.2でやってること 5. 4. の関数を用い、各パッケージごとに25つの近傍パッケージ(★)を取得。  各ユーザが★をインストールしているかを調べ、   (★の中でインストールしているパッケージの総数)/25  をそのパッケージをインストールしている確率にする  ユーザ1はパッケージ1の★のうち19パッケージをインストール済なので、  パッケージ1をインストールしている確率は 0.76 となる  
  22. 22. k近傍法 10.2でやってること 6. 全てのパッケージについてインストールされている確率を計算し、  確率をソートして、上位のパッケージを推薦する やっぱり私のやりたいレコメンドとは 違った。既に分かっていることを推薦す るのって意味ないんじゃ?
  23. 23. 1. クラスタリングとは(9章) 2. k近傍法とは(10.1) 3. k近傍法を用いた推薦システムとは(10.2) 4. 私のやりたかった推薦について皆さんに逆質問するコーナー
  24. 24. ・「協調フィルタリング」  →他の人の嗜好を蓄積しておき、似ている人を見つけ、ユーザに推薦を行う    ※まさに「さしこが好きで、ゆきりんが・・」の方法 ・「内容ベースフィルタリング」  →推薦の対象物(例えばAKBGのメンバ)の特徴から、ユーザに推薦を行う ※「黒髪の子がいい」とか「背が155cmより低い子がいい」とか? 私がやりたいレコメンド #やってみた
  25. 25. 私がやりたいレコメンド #やってみた ・「アイテムベース」  →蓄積したデータから「セットで好まれる数」を計算し、推薦する ※「さしことさや姉両方好きって言う人が多い」  「この人さしこ好きらしい」   →さや姉を紹介する? ・「ユーザベース」  →好みの一致割合からユーザとの類似度を計算する
  26. 26. 私がやりたいレコメンド #やってみた
  27. 27. 私がやりたいレコメンド #やってみた 課題  ・類似度の出し方ってこれでいいの?  ・類似度が同じだったときに、推薦対象は多数決で決めていいの?  ・精度を上げるには蓄積データを増やす必要があるけど、   増やしすぎると処理時間かなり増えそう  ・そもそも序盤のデータ蓄積どうするの?   何件あればそれなりの精度になるの? なにかと課題は多そうですが、スモールスタートでサービス作ってみます。

×