machine learning & apache mahout
DESCRIPTION
an introduction of machine learning & Apache MahoutTRANSCRIPT
機械学習とApache Mahout
Apache Mahoutとは
・ ASF (Apache Software Foundation)による新しいオープンソース・プロジェクト・目標は、 Apacheライセンスの下、無料で使用できるスケーラブルな機会学習な機械学習アルゴリズムを作成すること
・Mahout : 象を飼う人、象を使う人 Apache Hadoop (ロゴは黄色い象 )を使ってスケーラビリティとフォルト・トレランスを実現していることに由来します。
Apache Mahout
・ Apache Lucene(オープンソースの検索 )コミュニティーに関係していた数人によって開始されました。・一般的な機械学習アルゴリズムを、確実かつ、十分にドキュメントを整備した上で、スケーラブルに実装することを志向しています。・特徴 スケーラブル。 hadoopを利用した並列演算。 Javaライブラリであること。 (UIやパッケージ化されたサーバ等はありません )
機械学習とは
機械学習(きかいがくしゅう、Machine learning)
・人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコン
ピュータで実現させるための技術・手法のこと
・ある程度の数のサンプルデータ集合を対象に解析を行い、そのデータから有用な規則、ルール、知識表現、判断基準などを抽出する
機械学習はどんなところで使われているか(1)
・ Amazonなどのサイトで過去の購買履歴に基づいてユーザに商品を推薦するシステム
機械学習はどんなところで使われているか(2)
・指定された日付における類似のニュース記事をすべて見つけるシステム
機械学習はどんなところで使われているか(3)
・ webページをジャンル (スポーツ、経済など )にしたがって自動的にカテゴリー分けする・ Eメールからスパム・メールを検出・クレジット詐欺の発見、不正の検出・株式市場の分析
機械学習で使われる手法
・教師あり学習: ラベルつきの訓練データから機能を学習し、有効な任意の入力の値を予測します。
・教師なし学習: 何が正しいか正しくないかの例を使わずにデータの意味を推測します。
教師あり学習
・一般的な例: Eメールからスパムを分類する場合。 webページをジャンルに従ってラベル付けする場合。 手書き文字を認識する場合。
・よく使われるアルゴリズム 単純ベイズ分類器 ニューラルネットワーク SVM (サポートベクターマシン )
教師なし学習
・教師なし学習がよく使われる例: 類似の入力を論理的なグループに分類する場合。
・一般的な手法 K平均法 階層型クラスタリング 自己組織化マップ
よく使用される機械学習タスク
・以下の 3つは実際のアプリケーションで非常によく使われるタスクです。
・協調フィルタリング
・クラスタリング
・カテゴリー分け
協調フィルタリング
・協調フィルタリング (CF: Collaborative Filtering)では、ユーザ情報(評価、クリック数、購入履歴など)を使用して、他のサイト・ユーザに対してリコメンデーションを行います。
・ユーザ・ベース:類似のユーザを見つけることでアイテムを推薦します。
・アイテム・ベース:アイテム間の類似性を計算し、レコメンデーションを行います。
どの CF手法も最終的には、ユーザおよびユーザが評価したアイテムどうしの類似性を計算することになります。
レコメンデーションの例
これをクリックしたら同じようなテーマの商品が推薦されました。
レコメンデーションの応用例
2010年 8月に、 JR品川駅に登場した 次世代自動販売機
オムロンが開発した属性判定センサおよび人感センサを連動させることで、自販機の前に誰も居ない状態のときには、デジタルサイネージのネットワー
ク (WiMAX)を用い、コンテンツを配信する。
また、人が自販機の前に立って、商品購入をしようという場合は、顧客属性(年齢、性別 ) を判定し、属性ごと にお勧め商品の表示を行ったり、季節や時間帯、環境に応じた商品の提案といった 1人ひとりを見分けた "高度なマーケティング " が行われる。
クラスタリング
クラスタリングとは、類似のアイテムをグループ化することです。多くの実装では以下のようにクラスタリングします。
(1) 集合の中のアイテムを n次元空間のベクトルとして表現
(2) 2 つのアイテム間の距離を計算 (距離はユークリッド距離、マンハッタン距離、コサイン類似度など )
(3) 距離が近いアイテムどうしをグループ化 (4) (2), (3)を繰り返す
ブログをクラスタリングする場合
まず、それぞれのブログのフィードに現れる特定の単語の頻度を計算します。
" c h ina " " kid s " " mus ic " " ya hoo " …Got hamis t 2 3 3 0GigaOM 6 0 0 2Quic k Online Tip s 1 2 2 22…
ブログをクラスタリングする場合
この例だと “ Gothamist” ”と Quick Online Tips”の距離が一番近いのでこの 2つが最初にグループ化されます。
“china”の頻度
“kids”の頻度
GigaOM
Gothamist
Quick Online Tips
階層的クラスタリング
階層的クラスタリングでは、最も似ている 2つのグループをまとめることを繰り返すことによって、グループの階層を作り上げます。
①②
③
④
① 最も距離が近い aと bの 2つのアイテムがまとめられ、 aと bの間の位置に新しいグループとしてまとめられます。
② 新しいグループは cと一緒にまとめられます。
③ この場合 dと eが最も近いアイテムとなるのでこれらはまとめられて新たなグループを形成します。
④残っている 2つのグループがまとめられ、全体が一体となります。
ブログをクラスタリングした例
クラスタリングの例 (2)
人々が欲しい物のリストからクラスタリング
一般の人々が欲しい物のリストをクラスタリングしました。
ユーザ1 ユーザ2 ユーザ3 …wa t c h 1 0 0je a ns 1 1 1s ho e s 1 0 1 …
※ 欲しい: 1 欲しくない: 0
クラスタリング
カテゴリー分け
カテゴリー分けの手法のうち、ここではベイズ分類器による迷惑メール(スパム・メール)フィルタを説明します。
例えばタイトルに「無料お試し」という言葉が含まれているとき、そのメールが迷惑メールである確率をどうやって計算すればよいでしょうか?
迷惑メールとタイトルの関係
③ = (①かつ②)タイトルに「無料お試し」が含まれていて、かつ迷惑メールである。
② 迷惑メールである。割合 (確率) : P(迷
惑 )
① タイトルに「無料お試し」が含まれている。割合 (確率 ): P(無料お試
し )
この割合(確率)を知りたい。
ベイズの定理
ベイズの定理は条件付き確率をひっくり返す方法です。
※ 条件付き確率 P(A|B)は、「 Bが起こったという条件のもとで Aが起こる確率」と定義されています。
P(A | B) = P(B | A) × P(A) / P(B)
ベイジアンフィルタ (1)
過去のメールのデータを調べたところ、以下のようになりました。
・迷惑メールの割合は全メールの 20%
⇒ P(迷惑 ) = 0.2
・迷惑メールで、タイトルに「無料お試し」を含むもの割合は 60%
⇒ P(無料お試し |迷惑 ) = 0.6
・迷惑メールでないメールのうち、タイトルに「無料お試し」を含むものは 1%
⇒ P(無料お試し |迷惑でない ) = 0.01
ベイジアンフィルタ (2)
P(迷惑 | 無料お試し) ← ここでベイズの定理を使用します
= P(無料お試し |迷惑 ) × P(迷惑 ) / P(無料お試し )
= P(無料お試し |迷惑 ) × P(迷惑) / { P(迷惑 )×P(無料お試し |迷惑 )+P(迷惑でない )×P(無料お試し |迷惑でない ) }
= 0.6 × 0.2 / (0.6 × 0.2 + 0.4 ×0.01)
= 0.12 / (0.12 + 0.004)
= 約 96.8 % → 迷惑メールの可能性が高い!
P(迷惑 )、 P(無料お試し |迷惑 )、 P(無料お試し |迷惑でない ) は実際のメールでトレーニングを続けていくことができます。
機械学習とスケーラビリティ
・機械学習では大量の入力データを処理するだけでなく、素早く処理する必要があります。 (Picasa, amazon, Google News等 )
・また、機械学習ではしきい値等のパラメータを調整して何度も計算を行い、最適なものを選ぶということがよくあります。
⇒ これらのデータはたとえ高性能のコンピュータであっても一台のコンピュータで扱うことは不可能です。
⇒ そこでMahoutではスケーラビリティを重視し、 Hadoopを使って処理を複数のコンピュータに容易に分散させることを志向しています(現時点では対応できていないアルゴリズムもあります)
MapReduce
Mahoutで実装されている機能
・ Taste CF。 CFのためのオープンソース・プロジェクトであり、 SourceForgeの Sean Owenによって開始され、2008年にMahoutに寄贈されました。
・Map-Reduceに対応した、いくつかのクラスタリング実装( K平均法、ファジィ K平均法、 Canopy、ディリクレ、平均シフトなど)
・分散型単純ベイズ分類器と補完型単純ベイズ分類器の実装
・進化的プログラミングのための分散型適応度関数機能
・ニューラルネットワーク
・ランダム決定木
・サポートベクターマシン
Mahoutはどんなところで使われているか(1)
・ Booz Allen Hamilton(アメリカのコンサルティング会社 )ではバイオメトリックス (指紋、網膜パターン等 )のデータベースに HadoopとMahoutを使用するシステムを研究しています。
(http://www.slideshare.net/ydn/3-biometric-hadoopsummit2010)
Mahoutはどんなところで使われているか(2)
● Yahoo!の anti spam (http://www.slideshare.net/hadoopusergroup/mail-antispam?from=ss_embed)
【難点】 ・ 250億のコネクション、 50億のメール送信、 4.5億のメ
ールボックス ・スパマーからの、ターゲットに特化した攻撃 ・ボットネットの使用する IPアドレスはすぐに変動する
⇒ スパマーの作戦を調査、洞察するためのシステムを開発 ・ Hadoop: MapReduce + 分散ストレージ ・ Pig: データの分析と管理 ・Mahout: データマイニングのために使用
Mahoutはどんなところで使われているか(3)
● Kauli 日本のアドネットワーク会社 (http://kau.li/) 以下、ニュースリリースより。
・複数のアドネットワークから最も広告収益の高い広告を自動的に選択。機械学習の手法によって最も広告収益が高い広告アドネットワークの広告を計算する
・アドネットワークごとにサイト訪問者の広告閲覧回数や広告に対する行為などの計測結果を、再帰的に利用して学習するロジックを採用しているため、継続して利用するほど収益性が向上
参考文献
・ Apache Mahout のホームページ(http://mahout.apache.org/)
・「集合知プログラミング」 Toby Segaran, オライリー・ジャパン、 2008 (機械学習の Pythonによる実装が参考になりました)
・「 Apache Mahout の紹介」 Grant Ingersoll (http://www.ibm.com/developerworks/jp/java/library/j-mahout/), 2009
・「Mahout in Action 」 Sean Owen & Robin Anil, Manning, 2010 (http://www.manning.com/owen/)
・「食える数学」 神永 正博、ディスカヴァー・トゥエンティワン、 2010 (ベイジアンフィルタのところで参考にしました)
・マイコミジャーナルの記事http://journal.mycom.co.jp/news/2010/08/10/058/index.html (次世代自動販売機について参考にしました )