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.

はてなインターン「機械学習」

5,321 views

Published on

Published in: Technology
  • Be the first to comment

はてなインターン「機械学習」

  1. 1. はてなインターン講義#7 機械学習 2010.08.07 株式会社はてな 倉井龍太郎
  2. 2. 自己紹介
  3. 3. id:r_kurain アプリケーションエンジニア  はてなブックマーク チーム  Myブックマーク 全文検索  iPhone アプリ(ブックマーク、モノリス)
  4. 4. id:r_kurain 私とはてなとインターン  2008年 8月 インターン はてなダイアリーキーワード検索  2009年4月 入社  2009年8月 インターン講師 全文検索講義 ブックマークチームメンター(検索にランキング導入)
  5. 5. 講義概要
  6. 6. 講義概要 機械学習とはなにか はてなでの応用例 実装への前提知識  休憩 確率論復習 ベイジアンフィルタ概説 課題説明
  7. 7. 機械学習とはなにか
  8. 8. 機械学習とは 質問 機械学習といえば?
  9. 9. スパムフィルタ 事前に与える(学習) -> spam メール 判定 -> spam or hum
  10. 10. 画像認識 http://developers.face.com/examples/tagger-widget/ 事前に与える -> 人の顔 判定 -> 顔 or その他
  11. 11. Webに近い分野 形態素解析(MeCab ChaSen)  学習:正しい品詞分解例を与えると  判定:未知の例文の品詞 手書き入力  学習:手書き文字の例  判定:未知の手書き入力文字 文書検索  学習:より良い検索の結果順(ranking)  判別:新しい検索結果の表示順
  12. 12. 機械学習とは 何かを識別する仕組み OK 訓練 データ 学習器 学習 判別 NG 未知 データ
  13. 13. はてなでの応用例
  14. 14. Spam blog対応 ワードサラダ “その日を覚えて、彼女は笑った。前の画面では、独 自の小さなテディベアで。すべての涙を笑った。の経 過も、しかし、毎週を殺すためにに困難です後暁飛、 双子のように荒れ地を開くのに時間がなかった。” 本文、コメントともに存在 SEOとかアフェリエイト収入目的か
  15. 15. Spamgelion(本邦初公開) 2009年インターン制作
  16. 16. うごメモ 写真判定(現在は不使用) 不適切な写真をアップさせないように
  17. 17. はてなブックマーク関連エントリ PFIさん開発  http://preferred.jp/index.html ベイジアンフィルタの一種  chrome OSが公開されたので buildしてみる - kurainの壺
  18. 18. はてなブックマーク カテゴリ判定 新規エントリーのカテゴリを判別 これだ!
  19. 19. ここまでまとめ 機械学習は大量のデータを扱える  サービスの大規模化に対応  Web のデータは常に変化・増加し続ける  はてなブックマークは 2400万エントリ 一歩先のサービスを提供するには必要 基本的には何かを判別するもの
  20. 20. 具体的手法
  21. 21. モデル化 自然に存在するものを認識・識別  写真  ブログエントリ 計算可能だろうか?  四則演算でかけそう? 計算可能な形に表現を変える  モデル化  手法は色々
  22. 22. モデル化の具体例 Bag of words Model 単語 回数 株式会社 1 株式会社はてなが運 はてな 2 用する、はてなブック 運用 1 マークは、ソーシャル ブックマークサービス ブックマーク 2 の最大手です ソーシャル 1 サービス 1 最大手 1 単語の出現位置は区別しない 単語間の関連性を無視するということ
  23. 23. 計算可能になったら 計算で識別すればよい ある単語の出現数に閾値を付ける N次元のベクトルと考えて、幾何学的距離をとる  コサイン類似度 単語 docA docB  類似度の閾値で判別 株式会社 1 0 はてな 2 3 運用 1 1 ブックマー 2 0 ク ソーシャ 1 3 ル サービス 1 0 最大手 1 0
  24. 24. 識別方法は色々 教師付き学習 (supervised learning)  識別の正解例を与える  e.g. spam メールの集合を与える 具体的な手法  SVM  ベイジアンフィルタ  決定木 ID3
  25. 25. 識別方法その2 教師なし学習  正解例を与えない  集合を与えると適当にグループに分ける(クラスタリング)  いくつに分けるかは、指定するものも、しないものも。 具体的実装  K-means  K-Nearest Neighbor
  26. 26. ここまでまとめ 訓練 データ 学習手法は色々 前処理 OK モデル化 学習器 データ 学習 判別 NG 未知 モデル化 データ データ 前処理
  27. 27. ヒューリスティックス 識別は機械学習だけか? ルールを記述していくことでもできる Spamメール判定  本文に http://... が 2 回以上でてくる  Reply_to, from が実際に送ってきたサーバーと違う  特定の単語を含む Viagra, 人妻, etc... 経験則(ヒューリスティックス)で書く
  28. 28. はてなでの例 はてなブックマーク(県別エントリ)  http://b.hatena.ne.jp/location
  29. 29. 地域別エントリの実装 住所名、駅名データから地域名データベースを  地域名 –> 県  滝川 –> 北海道 基本方針  地域名の出現回数で、エントリーを判別  滝川、音威子府、増毛 -> 北海道のエントリ 除外ルール  人名は地域名としてカウントしない  滝川クリステル -> not 北海道  Wikipedia 便利!
  30. 30. ヒューリスティックスの利点 ルールの特徴によっては非常に有効  単純  強固  書きやすい 例外条件を書きまくるだけで精度が上がる 機械学習より直感的に制御可能 実装も簡単 目的に合わせて使い分けるべき
  31. 31. 休憩 5分
  32. 32. 実装編
  33. 33. 実際に作ってみよう はてなブックマークのエントリ分類器  タグ情報を評価のための要素とする  タグでエントリの特徴をモデル化 実サービスは 8 カテゴリ 今回は 1 カテゴリとその他  2値分類器 そのまま課題に アルゴリズムだけ解説
  34. 34. 使用する学習器 ベイジアンフィルタ Spamフィルタでの利用  Paul Graham  “ハッカーと画家” ベイズの定理 実装が簡単 割に強力な性能
  35. 35. Classification 問題 ドキュメントをクラスに分ける問題 クラス ( C )  ブックマークのカテゴリのようなもの  分類する器のようなもの ドキュメント(d)  ブックマークの1エントリ 特徴変数(t_n)  N個の  単語の出現数  タグの出現数
  36. 36. ベイズの定理の前に 確率のおさらい P( A)  事象 A が起きる確率  エントリがクラスCである確率 P( C )  エントリにタグtが付いている確率 P(t) P( B | A)  条件付き確率  事象 A が起きた時に 事象 B が起きる確率  エントリがクラスCであるときに、タグが付いている確率 P( t|C )
  37. 37. 条件付き確率 求めたい確率は  エントリがクラス C であるときに、特徴変数集合 (<t_1,t_2,….>)が付加されている条件付き確率 P( <自民党,民主党,献金,...>|政治 ) 特徴変数集合<t_1,t_2,…>が付いているときに、そのエント リがクラスCである条件付き確率 P(政治|<自民党,民主党,献金,...>) 事後確率  どっちだ?
  38. 38. 事後確率とベイズの定理 P( B) P( A | B) P( B | A)  ベイズの定理 P( A) P(C ) P( t _ 1, t _ 2, t _ 3,.. | C ) P(C | t _ 1, t _ 2, t _ 3,.. )  P( t _ 1, t _ 2, t _ 3,.. ) n P( t _ 1, t _ 2, t _ 3,.. | C )   P(t _ k | C ) 条件付き独立仮定 k 1 n P(C | t _ 1, t _ 2, t _ 3,.. )  P(C ) P(t _ k | C ) k 1
  39. 39. さらに式変形 n P(C | t _ 1, t _ 2, t _ 3,.. )  P(C ) P(t _ k | C ) k 1 クラス中の _ kの数 t P(t _ k | C )  n クラスC中のt _ jの数 j 1 n log P(C | t _ 1, t _ 2, t _ 3,.. )  log P(C )   log P(t _ k | C ) k 1
  40. 40. 擬似コード(学習)
  41. 41. 擬似コード(判定)
  42. 42. 学習手順 全クラスにたいして  全ての単語(タグ)を抽出する – 語彙の作成 各クラスごとに  全ての単語(タグ)の数 Cct を数える  全てのドキュメントに対して 単語(タグ)の数Cdtを数える  全ての単語に対して P(t _ k | C )  を計算して保存
  43. 43. ドキュメント判定手順 全てのクラスに対して  ドキュメントに含まれる語彙を抽出  クラスの出現確率 P(C) を調べる  出現した語彙t_1..t_j に対して P(t_k|C) を調べる  下記式を計算 n log P(C )   P(t _ k | C ) k 1 値が一番大きいクラスが正しいクラス
  44. 44. ベイジアンフィルタまとめ ナイーブベイズについて説明しました “条件付き独立仮定”といういい加減な仮定  単語同士はお互いに独立 にもかかわらず良い結果 自分で体験してみてください
  45. 45. 参考文献 Introduction to Information Retrieval(13章) 集合知プログラミング フリーソフトで作る音声認識システム 情報知識ネットワーク特論(平成19年度)  http://www-ikn.ist.hokudai.ac.jp/ikn-tokuron/ikn- tokuron.html

×