SlideShare a Scribd company logo
SIer も BigData 解析ビジネスに踏み出
                       そう




2012/10/27 #TokyoWebmining
        @ emmie_pp
         もりみえ
免責事項

● 本プレゼンテーションにおいて示されている見解は、私個人の見解で
  あり、 TIS (株)の見解を必ずしも反映したものではありません。ご
  了承ください。
はじめまして

● もりみえ( @emmie_pp )  TIS( 株)といいます

  - 元々はデータモデル/ DB 屋です
     □ 議事録をデータモデルで描いたりします
     □ 共著で本を書く機会を頂いたりもしました
     □ 情報処理試験作成委員もやってます
  - 日々の仕事
     □ BigData 、データ解析関連製品の評価検証
     □ これを使った提案支援、 PJ 支援、事業企画

  - 性能対策の一貫で Hadoop に手をだしました




     □   「並列分散処理の常識を Hadoop ファミリから学ぶ」
     □   「いまさら聞けない KVS の常識を Hbase で身につける」
     □   「試すのが難しいー機械学習の常識は Mahout で変わる」
     □   「グラフ問題とバルク同期並列の常識を Giraph で体得」
     □   「バッチ処理の常識を AsakusaFW で身につける」
     □   「リアルタイム分散処理の常識を S4 で身につける」
今日はこんなことを話します
1.ビッグデータ解析への取り組み
 -ユーザの課題のポイント
 -ベンダーの取り組みのずれ

2. Mahout でのテキストマイニングをやってみた
 -ソーシャルデータを使った加盟店分析
 -性能問題の原因
 -課題取組と再チャレンジ
BigData で色々提案してます




● メリット
  - 高価なハード不要で、バッチ性能が改善
  - スケールアウトが容易
● デメリット
  - MapReduce へロジックをマッピング
  - バッチ限定
BigData 事例も合わせてご紹介

● 性能改善に向けた技術提供+ビッグデータ事例の紹介


        名前        効果           利用例
  1.見える化     大量データを一度に「見れ   ・交通履歴から通行
             る」             可能道路の取得

  2.概略・傾向の 蓄積された膨大なデータから ・顧客行動セグメン
  取得(マイニン 、              テーション
  グ)       「隠れた関係性や規則性を
           発見」
  3.予測       データから発見した規則を元 ・災害時被害予測
  (マイニング+    に、次のアクションや事象を ・リコメンド
             機械が予測
  α )                      ・利用実績に基づく
                            不正利用検出
事例: 1. 見える化

 ● カーナビで収集した交通履歴から、交通可能道路を表示 (ITS Japan)
                        http://www.its-jp.org/saigai/

                        Honda/ パイオニア/トヨタ/日産の
                        プルーブ情報を元に作成
                        ・ 15 分ごとに表示を更新
                        ・個々のデータ精度は低い
                        ・真に通行可能な道路が明らか



                        ■ ビッグデータの可視化の課題
                        データが多いかつ多様な場合、
                        形をなさない
事例:2.概略・傾向の取得
●   ソーシャルデータのテキストマイニングによる「特徴的な話題」のクラスタリング
    - 判断は人が行う




     ■ ビッグデータが「嬉しい」領域
     ・小さいデータだと難しい異常検知が、ビッグデータだとはっ きり分かる
     ・小さいデータを見てても分からないパターン発見が、ビッグデータだと見
     えやすい
       ex. マウスとヒトのゲノム比較が、ビッグデータだとすごく簡単
     ・サンプルでは分からないクラスタリングが、ビッグデータだと小さな集合
     でも発見できる            「 VextMiner 」 http://www.qualica.co.jp/service/txt/marketing/dem
                                        o1.html
                                     「感 °Report 」 http://kandoreport.jp/work/work.html
事例:3 . 予測
● クレジットカードの不正利用検知 モデルの精度向上
  - 会員毎の利用パターンモデルを構築・更新し異常検知
    □ 全会員の利用モデル作成、 Hadoop 導入により数週間から 13 分に (VISA)
      http://www.publickey1.jp/blog/09/hadoophadoop_worldny_2009_1.html
                                               ・カード会員 5 億人
                                               ・トランザクション 1 億件 / 日
                                               ・過去のトランザクションで構築したモデル
                                               に基づき、新たなトランザクションが不正利
                                               用である可能性を判定する

                                               ほかの事例:
                                               ・ユーザの購入履歴に基づいて商品を推奨
                                               (Amazon など多数 )

                                               ・自販機カメラで顧客セグメント分析 (JR 東
                                               日本ウォータービジネス
                                               http://itpro.nikkeibp.co.jp/article/COLUMN/201
                                               20123/379107/




   ■ ビッグデータになることで 精度があがるメカニズムがある場合に有効
   ・元々機械学習はデータが少なくても、それなりに良い結果を出そうというアプ
   ローチ
     データが大きいことで、単純なモデルでも精度があがる(はず)
   ・「ビッグ」になることで、ファクタが増えるアソシエーション分析はあまり嬉しくない
いま一つ感触が
  良くない
よもや、そろそろバズワード?「ビッグ・データ」

                                 ベンダー側のビッグ・データに
                                 対する取り組み熱は、最高潮。
                                 反面、ユーザー企業の多くが自
                                 社の戦略とビッグ・データの関
                                 連性 を見いだすに至っていない




         http://www.gartner.co.jp/press/html/pr20121003-01.html
         ガートナー ジャパン:日本におけるテクノロジのハイプ・サイクル( 2012 年 10 月 3 日
ユーザのビッグデータへの課題
ビッグデータの 1 つの
目安である「 10TB 以
上」を持つのは全体                                 500 人未満の企業での
の約 28 % (野村総                              BI 導入状況 10%
研)              Volume
                (容量)


                               解析
                                            New Value
                 BigData


      Velocity              Variety
   (頻度・スピード)               (多様性)
                                 構造化データー各種基幹業務データ
 HFT ( High                      非構造化データー携帯端
 Frequency                       末、 SNS 、 Web 、センサーから得られる
 Trading )                       各種フォーマットのテキスト、ログ、画像
                                 、動画、音声、位置
 他は … ?
                                 どうやって組み合わせる?

       データを精査して、そこから新たな「価値仮説」を立て
                 る所が課題
ベンダーが示すビッグデータへのアプローチ
SSD 、 InfiniBand, 分散
キャッシュ、カラム指向
RDB 、 NoSQL 、 Hadoop 、
                                           BI /マイニングツールを
                                           ストレージとの連携を強化
                         Volume
                         (容量)

                                       解
                                       析     New Value
                      BigData


       Velocity              Variety
    (頻度・スピード)               (多様性)

 CEP 、リアルタイム分
 散処理
 FW ( S4 、 Storm)..
                                  技術によるアプローチが困難な領域
そこは SIer の得意領域かも
● まずは顧客の持つ資産=ビッグデータを紐解き、
  業務の全体像(ボリュームを含む)を把握し、検討の俎上に載せられ
  るように
  することが先決              たとえばデータモデルで …

                                      AsIs 先行型
                                      ToBe 先行型

  概念
 モデル
           概念クラス図        概念クラス図


論理・物理
モデル
         物理現行データモデル    物理新規データモデル

        AsIs (ボトムアッ   ToBe (トップダウン)
           プ)
でも、解析は勉強
  しないと
ソーシャルデータを使った加盟店分析

 ● 現状課題「クレジットカード会社は、加盟店の業種を把握できてな
   い」
 ● 検証「 Web 上のデータを使って把握できないか?」
    ⇒Web データをテキストマイニングして、店舗をクラスタ
     リング
                                                     AWS Elastic MapReduce
① データ収集と格納                  1 seqdirectory
             メニュー、          sequenceFile フォーマットで格納
              口コミ


② 形態素解析                      2 seq2sparce
             Analyzer 、辞書    形態素解析
                   、
               stopword


                             3 canopy
③ クラスタリング                    クラスタ初期中心点算出
              パラメータ


                             4 kmeans                       似ている店の
                             クラスタリング                         クラスタ
( クラスタリングとは? )
● たくさんの要素を、近いものグループ (= クラスタ ) にわけること
  - 要素をどんな属性であらわすか、その値
  - 近い / 遠い ( 距離 ) の計算式
  - アルゴリズム
    □ 計算量とコストの兼ね合い
    □ クラスタ同士の重なりアリ / ナシ
● 機械学習の一分野
  - ブログ、ニュース記事のカテゴライズ
  - ユーザー・セグメンテーション など
( Apache Mahout とは? )

 ● 機械学習のアルゴリズムを
   - レコメンデーション、クラスタリング、分類、パターン・マイニング等
   - 16 種が integrated 、ほか鋭意開発中
 ● 並列分散に実行できるよう実装した
   - Hadoop 上で動く一つのバッチアプリケーション
 ● 参考
   - “Mahout In Action”
   - Mahout JP

          Mapper
                                                  Reducer
            worke
              r
            worke
              r
                                                       worke   Output
                                                         r     File 0
            worke
              r
            worke                       shuffle        worke   Output
              r                                          r     File 1
            worke
              r
                          local write
ざっと手順
 データ取得
    - HotPepper サイトから、メニュー部分のみ取得して HDFS へ

             doc = Jsoup.connect(listPageURL).get();
                 Elements elements = doc.getElementsByTag("dd");

                  とうがらし料理「赤ちり亭」田町店 赤ちり鍋
                  TVに多数登場する逸品♪韓国唐辛子・コチュジャンなどの 7 つの調味料
                  を練り込んだ特製味噌ベースのスープが絶品
                  1 人前  880 円

  形態素解析とフィルタリング
      形態素解析=単語区切りと品詞付け
          Chasen/kuromoji/mecab 等の日本語向け公開 Tokenizer を利用

                                             とう  副詞 , 助詞類接続 ,*,* とうトウトウ
    とうがらし料理 赤ちり亭 田町店                         が    助詞 , 格助詞 , 一般 ,* がガガ
    ★                                        らし  助動詞 ,*,*,* らしいラシラシ
                                             料理  名詞 , サ変接続 ,*,* 料理リョウリリョーリ
 >$MAHOUT_HOME/bin/mahout seqdirectory
 --input ./data --output ./seq -c
 UTF-8 --chunkSize 128                             ①  「とうがらし」を手作業で辞書登
                                                   録 
 >$MAHOUT_HOME/bin/mahout seq2sparse -i            ②   Tokenizer の結果から、名詞を取
 hdfs:///seq -o hdfs:///vector -a                  得
 HotcakeJapaneseAnalyzer -seq -nv                  この結果を元に店舗毎の「単語
                                                   Vector 」を形成
 --norm 2 -s 10 -md 20 -x 40 -ng 3
 -ml 300
(K-means)

 ● K-means( クラスタリング )
         1.   無作為に中心点となる代表ベクトルを N 個定義(図では青い矩形2
              点)
         2.   近い代表ベクトルをそれぞれ探す
         3.   尤も近い代表ベクトルに帰属
         4.   このクラスタ内のベクトルの平均を計算し、次の中心点とする
         5.   2に戻る 

                   ・                     ・      ・          ・     ・
                         ・
               ■
                                                                ◆
              ・                  ・
                                       ■
                                                      ・■        ・
                       ・
                                             ◆

               ・       ◆
                                  ・            ・       ・
                   1 回目                 2 回目                   3 回目

      妥当な中心点を得る為、 Canopy も併用

   >$MAHOUT_HOME/bin/mahout canopy -i hdfs:///vector/tfidf-vectors -o
   hdfs:///canopy --distanceMeasure
   org.apache.mahout.common.distance.CosineDistanceMeasure -t1 0.89 -t2 0.75

   >$MAHOUT_HOME/bin/mahout kmeans 
    -i $DATA_DIR/vec/tfidf-vectors 
    -o $DATA_DIR/kmeans 
    --distanceMeasure
   org.apache.mahout.common.distance.CosineDistanceMeasure 
    -c $DATA_DIR/canopy/$LAST_CLUSTER 
    -x 20 -ow -cl kmeans_OPTS 2>&1 | tee -a $0.log
アウトプット
結果は?
●     あるときのクラスタ内容
      -   1146 店舗→ 153 クラスタ
      -   1 クラスタあたりの店舗数が 5 以下のものが 76 クラスタ
      -   残り 77 クラスタ中の 4 割程度がそこそこ分類(目視)

要素数                                       店名
          Top Terms
          カルビ、焼肉、ホルモン、タン、タン 塩、ハラ、塩、       味楽亭
350
          キムチ、和牛、ロース、クッパ、韓国、スープ、ビビン       新宿 正統派 焼肉 東海苑 本店
          パ、冷 麺、牛、ユッケ、上、麺、特、ナムル、部位、
                                          牛の達人 西武新宿駅前   本店
          ユッケ ジャン、特選、ジャン、石、冷、サンチュ、チ
          ゲ、チヂミ                           とらじ館 新宿店
                                          元祖 牛ホルモン鍋 みつる
                                          中央苑 ...
          タイ、カレー、ココナッツ、トムヤムクン、グリーン
94                                        You and I
          カレー、鶏肉、辛い、春雨、スープ、パパイヤ、レッド
          カレー、春巻き、グリーン、レッド、パパイヤ サラダ       タイ・ベトナムカフェレストラン サームロット
          、ココナッツ ミルク、バンコク、タイ タイ、空、ミル      バンタイ
          ク、タイ 屋台、春雨 サラダ、タピオカ、屋台、ソムタ      May Asian Foods
          ム、トム、青 パパイヤ、タイ スキ、挽肉、空 芯
                                          ラサ マレーシア
                                          ゲーンキョワーン
          大手町、直結、画面、ライオン、銀座 ライオン、ブ        Coffee & Dining Bar
                                          タイレストラン ホットペッパー 1 ... 菜々
4
                                          ブラッスリー銀座ライオン 大手町ビル店
          ラッスリ、 dvd 、ブラッスリ 銀座 ライオン、立食、ビ
                                          ブラッスリー 銀座ライオン 青山一丁目店
          ヤホール、ソーセージ 盛合せ、 tv 、ソーセージ、入り    パブレストラン うすけぼー 昭和通り日本橋店
          口、最大、銀座、宴会、菜、コンビネーション サラダ
          、盛合せ、一級、ビール、昭和通り、チョップ、チキン
          、キング、個室、ミックス ピザ、和風、サーロイン ス
          テーキ
性能は? ~ Canopy のスケールアウト問題

 reduce task 数が「1」にハードコード
  public class CanopyDriver extends AbstractJob {     データ量
                                                                         約 1 万件
       private static Path buildClustersMR ( .. ) {
                                                                         (50MB)
               job.setNumReduceTasks(1);              インスタンス数
                                                                         1 ~4

                                                                         (m1.large)
                                                                         数秒
                                                      処理時間 1
                     これを直せば、スケールアウトす
                           る?                         SequenceFile 化
                         …わけではない                      2 Lucene Index 化   41 分

                                                      3 Canopy           7 時間 10
                                                                         分
                                                      4 Kmeans           43 分


                           T2                         1. ランダムに中心点となる
               T2                                     代表ベクトルを一つ選ぶ
                                                      2 . T2 内のベクトルは吸着
                                                      (削除)
                                     Canopy B
          Canopy A                                    3 .それ以外のベクトルから
                                                      中心点を選ぶ(⇒2へ)

                            T1
                T1
(Mahout における Canopy の動作 )
                                           Node が別れたことで CanopyA に
                                                吸着されないベクタ
①Map



        T2                                              Canopy B
                   Canopy A                        T2



   T1                                         T1



                                                               全ての中心点だけで、再度
②Reducer                                                           Canopy




                                                        ● 最後に全ての中心点を集めて
                  CanopyE
       Canopy D              Canopy B                     Canopy を再計算
                                        Canopy C
                                                           - Map の結果残った点が多いと Reduce
                  Canopy A                                   の処理負荷が高くなる
                                                           - Kmeans は繰返しの仕組みあり
課題検討と再チャレンジ
● クラスタリング結果が今ひとつ
     - 中心点をユーザが定義して、これで「分類( Classification )」した方が良いのでは
             □ 中心点をどうやって定義するかが課題
● 新規単語の辞書登録の手間
     - Analyzer が認識できない単語をしらみつぶしで、辞書登録するのはつらい
             □ 「麻婆豆腐」→「麻」、「婆」、「豆腐」 
             □ 単語 n-gram を適用して、単語を再構築
                     ☆ 1 グラム=麻、 2 グラム=麻婆、3グラム=麻婆豆腐
             □ 単語どおしのアソシエーション分析から、一緒に登場する頻度低いものは除く
● 結果を簡単に確認
     - 作る必要あり。ほかも含め R で検証してからの方が良いかも。
[root@CentOS6 ~]# ./ClusteredPointsDistances.sh g
Input Path: /root/data/kmeans/clusteredPoints/part-m-00000
------------------------------------------------------------
Clusters Path Found: /root/data/kmeans/clusters-1
CV         総数 分布状況( 10 以上は A-Z,36 以上は * )
0        1294 --------------------------------------------------------112677FAYMV*****************Y***KMOIC462-2-3
1      795 ------------------------------------------------1-11113B44AGGMRVUOQVTWLQXQVWMIISWMPJGEGDDCB865
2      10        27        -----------------------------1---11-11---------------1----11-22211--11--1--1-1--121-------1--1------


● その他諸々未解決…
                                        アイディア求む!
     - 類義語の統合 - 柚子コショー と ゆずこしょう。共起頻度ではイマイチ
     - 精度向上 - ノイズ除去、
ご清聴ありがとうございました

More Related Content

Big data解析ビジネス

  • 1. SIer も BigData 解析ビジネスに踏み出 そう 2012/10/27 #TokyoWebmining @ emmie_pp もりみえ
  • 2. 免責事項 ● 本プレゼンテーションにおいて示されている見解は、私個人の見解で あり、 TIS (株)の見解を必ずしも反映したものではありません。ご 了承ください。
  • 3. はじめまして ● もりみえ( @emmie_pp )  TIS( 株)といいます - 元々はデータモデル/ DB 屋です □ 議事録をデータモデルで描いたりします □ 共著で本を書く機会を頂いたりもしました □ 情報処理試験作成委員もやってます - 日々の仕事 □ BigData 、データ解析関連製品の評価検証 □ これを使った提案支援、 PJ 支援、事業企画 - 性能対策の一貫で Hadoop に手をだしました □ 「並列分散処理の常識を Hadoop ファミリから学ぶ」 □ 「いまさら聞けない KVS の常識を Hbase で身につける」 □ 「試すのが難しいー機械学習の常識は Mahout で変わる」 □ 「グラフ問題とバルク同期並列の常識を Giraph で体得」 □ 「バッチ処理の常識を AsakusaFW で身につける」 □ 「リアルタイム分散処理の常識を S4 で身につける」
  • 4. 今日はこんなことを話します 1.ビッグデータ解析への取り組み -ユーザの課題のポイント -ベンダーの取り組みのずれ 2. Mahout でのテキストマイニングをやってみた -ソーシャルデータを使った加盟店分析 -性能問題の原因 -課題取組と再チャレンジ
  • 5. BigData で色々提案してます ● メリット - 高価なハード不要で、バッチ性能が改善 - スケールアウトが容易 ● デメリット - MapReduce へロジックをマッピング - バッチ限定
  • 6. BigData 事例も合わせてご紹介 ● 性能改善に向けた技術提供+ビッグデータ事例の紹介 名前 効果 利用例 1.見える化 大量データを一度に「見れ ・交通履歴から通行 る」 可能道路の取得 2.概略・傾向の 蓄積された膨大なデータから ・顧客行動セグメン 取得(マイニン 、 テーション グ) 「隠れた関係性や規則性を 発見」 3.予測 データから発見した規則を元 ・災害時被害予測 (マイニング+ に、次のアクションや事象を ・リコメンド 機械が予測 α ) ・利用実績に基づく  不正利用検出
  • 7. 事例: 1. 見える化 ● カーナビで収集した交通履歴から、交通可能道路を表示 (ITS Japan) http://www.its-jp.org/saigai/ Honda/ パイオニア/トヨタ/日産の プルーブ情報を元に作成 ・ 15 分ごとに表示を更新 ・個々のデータ精度は低い ・真に通行可能な道路が明らか ■ ビッグデータの可視化の課題 データが多いかつ多様な場合、 形をなさない
  • 8. 事例:2.概略・傾向の取得 ● ソーシャルデータのテキストマイニングによる「特徴的な話題」のクラスタリング - 判断は人が行う ■ ビッグデータが「嬉しい」領域 ・小さいデータだと難しい異常検知が、ビッグデータだとはっ きり分かる ・小さいデータを見てても分からないパターン発見が、ビッグデータだと見 えやすい   ex. マウスとヒトのゲノム比較が、ビッグデータだとすごく簡単 ・サンプルでは分からないクラスタリングが、ビッグデータだと小さな集合 でも発見できる 「 VextMiner 」 http://www.qualica.co.jp/service/txt/marketing/dem o1.html 「感 °Report 」 http://kandoreport.jp/work/work.html
  • 9. 事例:3 . 予測 ● クレジットカードの不正利用検知 モデルの精度向上 - 会員毎の利用パターンモデルを構築・更新し異常検知 □ 全会員の利用モデル作成、 Hadoop 導入により数週間から 13 分に (VISA) http://www.publickey1.jp/blog/09/hadoophadoop_worldny_2009_1.html ・カード会員 5 億人 ・トランザクション 1 億件 / 日 ・過去のトランザクションで構築したモデル に基づき、新たなトランザクションが不正利 用である可能性を判定する ほかの事例: ・ユーザの購入履歴に基づいて商品を推奨 (Amazon など多数 ) ・自販機カメラで顧客セグメント分析 (JR 東 日本ウォータービジネス http://itpro.nikkeibp.co.jp/article/COLUMN/201 20123/379107/ ■ ビッグデータになることで 精度があがるメカニズムがある場合に有効 ・元々機械学習はデータが少なくても、それなりに良い結果を出そうというアプ ローチ   データが大きいことで、単純なモデルでも精度があがる(はず) ・「ビッグ」になることで、ファクタが増えるアソシエーション分析はあまり嬉しくない
  • 11. よもや、そろそろバズワード?「ビッグ・データ」 ベンダー側のビッグ・データに 対する取り組み熱は、最高潮。 反面、ユーザー企業の多くが自 社の戦略とビッグ・データの関 連性 を見いだすに至っていない http://www.gartner.co.jp/press/html/pr20121003-01.html ガートナー ジャパン:日本におけるテクノロジのハイプ・サイクル( 2012 年 10 月 3 日
  • 12. ユーザのビッグデータへの課題 ビッグデータの 1 つの 目安である「 10TB 以 上」を持つのは全体 500 人未満の企業での の約 28 % (野村総 BI 導入状況 10% 研) Volume (容量) 解析 New Value BigData Velocity Variety (頻度・スピード) (多様性) 構造化データー各種基幹業務データ HFT ( High 非構造化データー携帯端 Frequency 末、 SNS 、 Web 、センサーから得られる Trading ) 各種フォーマットのテキスト、ログ、画像 、動画、音声、位置 他は … ? どうやって組み合わせる? データを精査して、そこから新たな「価値仮説」を立て る所が課題
  • 13. ベンダーが示すビッグデータへのアプローチ SSD 、 InfiniBand, 分散 キャッシュ、カラム指向 RDB 、 NoSQL 、 Hadoop 、 BI /マイニングツールを ストレージとの連携を強化 Volume (容量) 解 析 New Value BigData Velocity Variety (頻度・スピード) (多様性) CEP 、リアルタイム分 散処理 FW ( S4 、 Storm).. 技術によるアプローチが困難な領域
  • 14. そこは SIer の得意領域かも ● まずは顧客の持つ資産=ビッグデータを紐解き、   業務の全体像(ボリュームを含む)を把握し、検討の俎上に載せられ るように することが先決 たとえばデータモデルで … AsIs 先行型 ToBe 先行型   概念 モデル 概念クラス図 概念クラス図 論理・物理 モデル 物理現行データモデル 物理新規データモデル AsIs (ボトムアッ ToBe (トップダウン) プ)
  • 16. ソーシャルデータを使った加盟店分析 ● 現状課題「クレジットカード会社は、加盟店の業種を把握できてな い」 ● 検証「 Web 上のデータを使って把握できないか?」 ⇒Web データをテキストマイニングして、店舗をクラスタ リング AWS Elastic MapReduce ① データ収集と格納 1 seqdirectory メニュー、 sequenceFile フォーマットで格納 口コミ ② 形態素解析 2 seq2sparce Analyzer 、辞書 形態素解析 、 stopword 3 canopy ③ クラスタリング クラスタ初期中心点算出 パラメータ 4 kmeans 似ている店の クラスタリング クラスタ
  • 17. ( クラスタリングとは? ) ● たくさんの要素を、近いものグループ (= クラスタ ) にわけること - 要素をどんな属性であらわすか、その値 - 近い / 遠い ( 距離 ) の計算式 - アルゴリズム □ 計算量とコストの兼ね合い □ クラスタ同士の重なりアリ / ナシ ● 機械学習の一分野 - ブログ、ニュース記事のカテゴライズ - ユーザー・セグメンテーション など
  • 18. ( Apache Mahout とは? ) ● 機械学習のアルゴリズムを - レコメンデーション、クラスタリング、分類、パターン・マイニング等 - 16 種が integrated 、ほか鋭意開発中 ● 並列分散に実行できるよう実装した - Hadoop 上で動く一つのバッチアプリケーション ● 参考 - “Mahout In Action” - Mahout JP Mapper Reducer worke r worke r worke Output r File 0 worke r worke shuffle worke Output r r File 1 worke r local write
  • 19. ざっと手順  データ取得 - HotPepper サイトから、メニュー部分のみ取得して HDFS へ doc = Jsoup.connect(listPageURL).get();     Elements elements = doc.getElementsByTag("dd"); とうがらし料理「赤ちり亭」田町店 赤ちり鍋 TVに多数登場する逸品♪韓国唐辛子・コチュジャンなどの 7 つの調味料 を練り込んだ特製味噌ベースのスープが絶品 1 人前  880 円  形態素解析とフィルタリング  形態素解析=単語区切りと品詞付け  Chasen/kuromoji/mecab 等の日本語向け公開 Tokenizer を利用 とう  副詞 , 助詞類接続 ,*,* とうトウトウ とうがらし料理 赤ちり亭 田町店 が   助詞 , 格助詞 , 一般 ,* がガガ ★ らし  助動詞 ,*,*,* らしいラシラシ 料理 名詞 , サ変接続 ,*,* 料理リョウリリョーリ >$MAHOUT_HOME/bin/mahout seqdirectory --input ./data --output ./seq -c UTF-8 --chunkSize 128 ①  「とうがらし」を手作業で辞書登 録  >$MAHOUT_HOME/bin/mahout seq2sparse -i ②   Tokenizer の結果から、名詞を取 hdfs:///seq -o hdfs:///vector -a 得 HotcakeJapaneseAnalyzer -seq -nv この結果を元に店舗毎の「単語 Vector 」を形成 --norm 2 -s 10 -md 20 -x 40 -ng 3 -ml 300
  • 20. (K-means) ● K-means( クラスタリング ) 1. 無作為に中心点となる代表ベクトルを N 個定義(図では青い矩形2 点) 2. 近い代表ベクトルをそれぞれ探す 3. 尤も近い代表ベクトルに帰属 4. このクラスタ内のベクトルの平均を計算し、次の中心点とする 5. 2に戻る  ・ ・ ・ ・ ・ ・ ■ ◆ ・ ・ ■ ・■ ・ ・ ◆ ・ ◆ ・ ・ ・ 1 回目 2 回目 3 回目 妥当な中心点を得る為、 Canopy も併用 >$MAHOUT_HOME/bin/mahout canopy -i hdfs:///vector/tfidf-vectors -o hdfs:///canopy --distanceMeasure org.apache.mahout.common.distance.CosineDistanceMeasure -t1 0.89 -t2 0.75 >$MAHOUT_HOME/bin/mahout kmeans -i $DATA_DIR/vec/tfidf-vectors -o $DATA_DIR/kmeans --distanceMeasure org.apache.mahout.common.distance.CosineDistanceMeasure -c $DATA_DIR/canopy/$LAST_CLUSTER -x 20 -ow -cl kmeans_OPTS 2>&1 | tee -a $0.log
  • 22. 結果は? ● あるときのクラスタ内容 - 1146 店舗→ 153 クラスタ - 1 クラスタあたりの店舗数が 5 以下のものが 76 クラスタ - 残り 77 クラスタ中の 4 割程度がそこそこ分類(目視) 要素数 店名 Top Terms カルビ、焼肉、ホルモン、タン、タン 塩、ハラ、塩、 味楽亭 350 キムチ、和牛、ロース、クッパ、韓国、スープ、ビビン 新宿 正統派 焼肉 東海苑 本店 パ、冷 麺、牛、ユッケ、上、麺、特、ナムル、部位、 牛の達人 西武新宿駅前   本店 ユッケ ジャン、特選、ジャン、石、冷、サンチュ、チ ゲ、チヂミ とらじ館 新宿店 元祖 牛ホルモン鍋 みつる 中央苑 ... タイ、カレー、ココナッツ、トムヤムクン、グリーン 94 You and I カレー、鶏肉、辛い、春雨、スープ、パパイヤ、レッド カレー、春巻き、グリーン、レッド、パパイヤ サラダ タイ・ベトナムカフェレストラン サームロット 、ココナッツ ミルク、バンコク、タイ タイ、空、ミル バンタイ ク、タイ 屋台、春雨 サラダ、タピオカ、屋台、ソムタ May Asian Foods ム、トム、青 パパイヤ、タイ スキ、挽肉、空 芯 ラサ マレーシア ゲーンキョワーン 大手町、直結、画面、ライオン、銀座 ライオン、ブ Coffee & Dining Bar タイレストラン ホットペッパー 1 ... 菜々 4 ブラッスリー銀座ライオン 大手町ビル店 ラッスリ、 dvd 、ブラッスリ 銀座 ライオン、立食、ビ ブラッスリー 銀座ライオン 青山一丁目店 ヤホール、ソーセージ 盛合せ、 tv 、ソーセージ、入り パブレストラン うすけぼー 昭和通り日本橋店 口、最大、銀座、宴会、菜、コンビネーション サラダ 、盛合せ、一級、ビール、昭和通り、チョップ、チキン 、キング、個室、ミックス ピザ、和風、サーロイン ス テーキ
  • 23. 性能は? ~ Canopy のスケールアウト問題 reduce task 数が「1」にハードコード public class CanopyDriver extends AbstractJob { データ量 約 1 万件      private static Path buildClustersMR ( .. ) { (50MB) job.setNumReduceTasks(1); インスタンス数 1 ~4 (m1.large) 数秒 処理時間 1 これを直せば、スケールアウトす る? SequenceFile 化 …わけではない 2 Lucene Index 化 41 分 3 Canopy 7 時間 10 分 4 Kmeans 43 分 T2 1. ランダムに中心点となる T2 代表ベクトルを一つ選ぶ 2 . T2 内のベクトルは吸着 (削除) Canopy B Canopy A 3 .それ以外のベクトルから 中心点を選ぶ(⇒2へ) T1 T1
  • 24. (Mahout における Canopy の動作 ) Node が別れたことで CanopyA に 吸着されないベクタ ①Map T2 Canopy B Canopy A T2 T1 T1 全ての中心点だけで、再度 ②Reducer Canopy ● 最後に全ての中心点を集めて CanopyE Canopy D Canopy B Canopy を再計算 Canopy C - Map の結果残った点が多いと Reduce Canopy A の処理負荷が高くなる - Kmeans は繰返しの仕組みあり
  • 25. 課題検討と再チャレンジ ● クラスタリング結果が今ひとつ - 中心点をユーザが定義して、これで「分類( Classification )」した方が良いのでは □ 中心点をどうやって定義するかが課題 ● 新規単語の辞書登録の手間 - Analyzer が認識できない単語をしらみつぶしで、辞書登録するのはつらい □ 「麻婆豆腐」→「麻」、「婆」、「豆腐」  □ 単語 n-gram を適用して、単語を再構築 ☆ 1 グラム=麻、 2 グラム=麻婆、3グラム=麻婆豆腐 □ 単語どおしのアソシエーション分析から、一緒に登場する頻度低いものは除く ● 結果を簡単に確認 - 作る必要あり。ほかも含め R で検証してからの方が良いかも。 [root@CentOS6 ~]# ./ClusteredPointsDistances.sh g Input Path: /root/data/kmeans/clusteredPoints/part-m-00000 ------------------------------------------------------------ Clusters Path Found: /root/data/kmeans/clusters-1 CV 総数 分布状況( 10 以上は A-Z,36 以上は * ) 0 1294 --------------------------------------------------------112677FAYMV*****************Y***KMOIC462-2-3 1 795 ------------------------------------------------1-11113B44AGGMRVUOQVTWLQXQVWMIISWMPJGEGDDCB865 2 10 27 -----------------------------1---11-11---------------1----11-22211--11--1--1-1--121-------1--1------ ● その他諸々未解決… アイディア求む! - 類義語の統合 - 柚子コショー と ゆずこしょう。共起頻度ではイマイチ - 精度向上 - ノイズ除去、

Editor's Notes

  • #8: http://unit.aist.go.jp/cfsr/contents/meti-h22/project07.htm  がんこフードサービスと産総研 Honda 様、パイオニア様、トヨタ様、日産様が匿名かつ統計的に収集された 通行実績情報を使用し、それをもとに作成 たべみる 年間 180 万円、月額 15 万円
  • #9: 日経サイエンス 2012/01 http://cityhallblog.dallasnews.com/archives/2010/09/dont-question-dallas-police-cr.html http://meta-dad.com/2007/05/14/high-tech-crime-blotter-compstat
  • #10: IBM Infosphere BigInsights の事例として紹介されている 図は ( 株 ) インテリジェントウェイブの ACE plus から http://www.iwi.co.jp/product/ace_score.htm# 自販機 ・・・ 顔画像から性別・年代判定 ( 予め定義した 14 パターンの近い物に分類 )→ レコメンド、マーケティング両方に使う。年代・性別・時間帯と商品の組み合わせ。
  • #12: ベンダー側のビッグ・データに対する取り組み熱は、最高潮 反面、ユーザー企業の多くが自社の戦略とビッグ・データの関連性 を見いだすに至っていない
  • #13: http://www-06.ibm.com/software/jp/data/bigdata/ BI 導入 http://techtarget.itmedia.co.jp/tt/news/1210/04/news03.html
  • #14: http://www-06.ibm.com/software/jp/data/bigdata/ BI 導入 http://techtarget.itmedia.co.jp/tt/news/1210/04/news03.html
  • #17: 実システムでは Oracle PL/SQL で 27 時間 を要している
  • #19: コミッタ、コントリビュータ 245 人
  • #20: Java HTML parser
  • #24: http://javasourcecode.org/html/open-source/mahout/mahout-0.7/org/apache/mahout/clustering/canopy/CanopyDriver.java.html