SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
今さら聞けない Hadoop 勉強会   第2回
      アルゴリズム編


             セントラルソフト株式会社
           システム1部 システム開発課
                    奥山 洋平

1
本勉強会の目的




2
本セミナーの目的
   Hadoop に関連する技術や培ったノウハウを、勉強会に参加された方
    と
    共有する                    SlideShare で公開
                                   「今さら聞けないhadoop セントラ
                                     ルソフト」で見つかります
   スケジュール
       第1回 Hadoop 基礎(1月19日開催)
           HDFS と MapReduce の概念
           ロールプレイ
       第2回 アルゴリズム(本日2月28日開催)
           k-means アルゴリズム
           TF-IDF アルゴリズム
       第3回 「MapReduce 実装テクニック」を予定(3月予定)
           ワードカウント
           k-means
           TF-IDF
       第4回 「理論・エコシステム編」を予定(4月予定)
           HDFS
           HBase
           Hive
    3
本日の目的
   2つのアルゴリズムを通してアルゴリズムからジョブ
    フローにする流れを知ってもらう

         今回   アルゴリズム


              ジョブフロー

         次回予定
          MapReduce プログラム

    4
目次
       k-means アルゴリズム
           アルゴリズムからジョブフローへ


       TF-IDF アルゴリズム
           アルゴリズムからジョブフローへ


       まとめと次回の予定




    5
k-means アルゴリズム
k-means アルゴリズムとは
   レコードの集合を k 個のよく似た特徴を持つ集合
    (クラスタ)に分割(クラスタリング)するアルゴリ
    ズム

   k = 2 の例   クラスタ    レコード




    7
クラスタリングの活用例
       機械学習
           手書き文字認識
                                 この数字は
                                  「9」

                 この数字は
                   何?
                                  9のクラス
                         7のクラス    タ
                         タ




       特徴抽出
           「7」と「9」の分類に必要な特徴は?

    8
k-means アルゴリズム概要
       k-menas アルゴリズムは「クラスタの割り当て」と
        「クラスタの重心を求める」という処理を繰り返し、
        最適な重心を求めるアルゴリズム




    9
k-means アルゴリズムの手順(1)
1.       初期化
        各レコードに対して、ランダムにクラスタを割り当てる


2.       割り当てたクラスタの重心を求める

3.       各レコードを、各クラスタの重心に一番近いクラスタ
         に
         割り当て直す

4.       クラスタの割り当て変化がある
                              終了
         2 の処理
         クラスタの割り当てに変化が無い
         10
         予め決めた回数クラスタの割り当てを行った
k-means アルゴリズムの手順(2)
k=3
           3. クラスタの再割り当て
           1. 初期化(ランダムにクラスタを割り当てる)
           2. クラスタの重心を求める
            ⇒ クラスタの割り当てが変化したので
              クラスタの割り当てが変化しなかったので
               2 の処理へ
               処理終了




11
アルゴリズムからジョブフローへ




12
ジョブフローを作る際に意識すること
    MapReduce は分散処理なので、複雑な処理はでき
     ない
        複雑な処理は複数回の MapReduce で実現する
        本勉強会の説明では1回の MapReduce を1ジョブとす
         る
        1ジョブの処理はシンプルにする       複雑な処理

                               ジョブ
                                2
         複雑な             ジョブ         ジョブ
          処理              1           4
                               ジョブ
                                3


    13
k-means アルゴリズム
1.       初期化
        各レコードに対して、ランダムにクラスタを割り当てる


2.       割り当てたクラスタの重心を求める

3.       各レコードを、各クラスタの重心に一番近いクラスタ
         に
         割り当て直す

4.       クラスタの割り当て変化がある
                              終了
         2 の処理
         クラスタの割り当てに変化が無い
         14
         予め決めた回数クラスタの割り当てを行った
処理の流れ
処理1:初期化
処理2:割り当てたクラスタの重心を求める
処理3:各レコードを、各クラスタの重心に一番近いクラ
  スタに    割り当て直す
                  レコー
                  ド集合
                              :入力

                              :出力
開始    処理1   処理2   処理3   終了
                              :フロー

                              :終了時
入力                      出力     処理3の
      処理1   処理2   処理3          結果が
ファイ                     ファイ
       結果    結果    結果
 ル                       ル     最終出力

15
MapReduce にできるか検討
    それぞれの処理が1回の MapReduce で実現できそ
     うか
     検討し、必要に応じて複数回のジョブで処理を実現
     する




    16
MapReduce の簡単な復習
    MapReduce は以下の3つのフェーズで構成される
        入力データの加工を行う「Map」
        データの整理と分配を行う「Shuffle & Sort」
            同じ key に対する value は一纏めにし、key 順にソートした
             データを Reduce を行うノードが受け取る
        まとめられたデータに対して処理を行う「Reduce」


    それぞれのフェーズの入出力は key と value のペア




    17
処理1概要
    処理
        各レコードに対して、ランダムにクラスタを割り当てる


    入力(クラスタリングするデータファイル)
        key     : 入力ファイルの形式による
        value   : 1レコード


    出力(ランダムにクラスタを割り当てられたレコー
     ド)
        key     : 割り当てられたクラスタ番号
        value   : 1レコード

    18
処理1検討

     <入力形式によって異なるkey , 1レコード>

                    入力

                                乱数
              処理1

       1回の MapReduce で実現できそう
     <ランダムに割り当てたクラスタ , 1レコード>


                    出力




19
処理2概要
    処理
        割り当てられたクラスタの重心を求める


    入力(ランダムにクラスタを割り当てられたレコー
     ド)
        key     : クラスタ番号
        value   : 1レコード


    出力(クラスタの重心)
        key     : クラスタ番号
        value   : クラスタの重心の位置

    20
処理2検討

     <クラスタ1, A><クラスタ2, B>
                        <クラスタ1, C>

                         Map 出力


     Shuffle & Sort で同じクラスタは一纏まりになり、
                     Shuffle & Sort
       その纏まりでクラスタの重心が計算できる

      <クラスタ1, [A , C]> <クラスタ2, [B]>
        1回の MapReduce で実現できそう

                         Reduce 入力




21
処理3概要
    処理
        各レコードを、一番近いクラスタに割り当て直す

    入力1(クラスタの重心)
        key          : クラスタ番号
        value   : クラスタの重心の位置
    入力2(クラスタリングするデータファイル)
        key          : <要検討>
        value   : 1レコード


    出力(クラスタを割り当て直したレコード)
        key          : 割り当てたクラスタ
        value   : 1レコード

    22
処理3検討
    問題となりそうなところ
        2つの形式のデータの入力はどうする?

        クラスタの重心のデータはすべての Reduce を行うノー
         ドに
         配布する必要があるがどうする?
            すべてに配布しないと各レコードがどのクラスタに近いのか
             比較できない
               実現方法を知っていれば1回の MapReduce で
                知らなければ MapReduce の回数を増やす


             次回、1回の MapReduce で実現する方法を解説
                          予定

    23
その他次回解説を行う問題
    <要検討>にしてあった部分

    処理3の終了後、条件によって処理を終了するか、
     処理2の処理に戻るか分岐する問題



    MapReduce の実装レベルの内容は次回行う(予
     定)




    24
TF-IDF アルゴリズム




25
TF-IDF アルゴリズムとは
    文書中の単語に関する重み付けのアルゴリズム
        その単語がその文書でどれくらい特徴的であるかを
         単語ごと文書ごとに数値化(tfidf 値)
            出てくる文書が少なく、特定の文書での出現回数が多い単語ほ
             ど
             その文書での数値が大きい
            キーワード抽出や Web 検索へ応用できる


    例:ある文書中の tfidf 値
                             “Hadoop”   : 0.3
                  文書         “HDFS”     : 0.6
                             “MapReduce”        : 0.5


    26                             …
tfidf 値の意味(1)
    異なる文書の同じ単語の場合
        単語の tfidf 値が高い文書ほど、その単語を特徴として持
         つ文書
                 その単語がよく表れる文書                   文書のキーワード
             検索


             文書A              文書B                    文書C




         “Hadoop” : 0.3    “Hadoop” : 0.5         “Hadoop” : 0.2


                   “Hadoop” の検索結果は上位から      文書B , A , C

    27
tfidf 値の意味(2)
   一つの文書内の単語の場合
        特定の文書中で tfidf 値が高い単語が、その文書を特徴付け
         る
               文書のインデックス作成             文書のキーワード検索
             の高速化
                         tfidf 値            インデックス
                     “Hadoop”   : 0.3
                     “HDFS”     : 0.6         “HDFS”
             文書A
                     “Java”     : 0.2         “MapReduce”
                     “MapReduce”        : 0.5 “Hadoop”
                     “Ruby”             : 0.1
                           …




    28
TF-IDF アルゴリズム(tfidf 値の求め方)(1)
    tfidf 値は、単語の出現頻度(tf : term frequency)と
     逆文書頻度(idf : inverse document frequency)の積で求め
     られる
         tfidf   単語の出現頻度 * 逆文書頻度

    単語の出現頻度(tf)は以下の式で求められる
                      文書中の単語の出現回 数
         単語の出現頻度
                       文書中の単語の総数
    逆文書頻度(idf)は以下の式で求められる(この式は
     ジップの法則に由来する)
                             文書数
         逆文書頻度     log10
                         単語が出現した文書数

    29
TF-IDF アルゴリズム(tfidf 値の求め方)(2)
             文書1                     文書2                    文書3

      A          tf:0.5
                 0.2385           単語の出現頻度 * 逆文書頻度
      A                      文書中の単語の出現回数 / 文書中の単語の総数
                                       0.5 * 0.477
     idf:0.477                                    2/4
                           log10(文書数/単語が出現した文書数)
                 tf:0.25               log10(3 / 1)
                                        tf:0.33
      B          0.044             B単語ごとに共通の値
                                        0.05808
     idf:0.176
      C          tf:0.25
                                 C     tf:0.33          C    tf:0.25
     idf:0       0                     0                     0


                                 D     tf:0.33          D    tf:0.5
                                       0.05808               0.088
     idf:0.17                                           D
     6                                                       tf:0.25
                                                        E    0.11925
     idf:0.47
30   7
アルゴリズムからジョブフローへ




31
k-means アルゴリズムとの違い
    k-means はアルゴリズムの中でフローが決まってい
     た

    TF-IDF は計算式だけでフローが無いので、どのよう
     な順番で処理を行うのか考えなければならない




    32
ジョブフローを作る際に意識すること(再掲)
    MapReduce は分散処理なので、複雑な処理はでき
     ない
        複雑な処理は複数回の MapReduce で実現する
        ここでは1回の MapReduce を1ジョブとする
        1ジョブの処理はシンプルにする
                               複雑な処理

                                ジョブ
                                 2
         複雑な             ジョブ           ジョブ
          処理              1             4
                                ジョブ
                                 3


    33
MapReduce の簡単な復習(再掲)
    MapReduce は以下の3つのフェーズで構成される
        入力データの加工を行う「Map」
        データの整理と分配を行う「Shuffle & Sort」
            同じ key に対する value は一纏めにし、key 順にソートした
             データを Reduce を行うノードが受け取る
        まとめられたデータに対して処理を行う「Reduce」


    それぞれのフェーズの入出力は key と value のペア




    34
アルゴリズムからジョブフローへの流れ
1.    大まかな処理に分ける
2.    処理の入出力を考える
3.    データを Reduce からの参照のされ方で分ける
     1.   全ての Reduce
     2.   全てではないが複数の Reduce
     3.   一つの Reduce
4.    処理ごとに簡単な MapReduce で実現できるか検討
      し、
      必要に応じてジョブを増やす



 35
1.大まかな処理に分ける
    必要なものを考え、大まかな処理に分ける

                     文書中の単語の出現回数を求める


                     文書中の単語の総数を求める
              式に代入
    tfidf 値   して計算
                        文書数を求める

                      単語が出現した文書数を求め
                            る

文書中の単語の出現回 数             文書数
             * log10
 文書中の単語の総数           単語が出現した文書数

    36
2.処理の入出力を考える(1)
     どのような key と value のペアを出力するか考える

     「式に代入して計算」の処理の場合
                              Hadoop    : 0.3
            文書A               HDFS      : 0.6
                              MapReduce : 0.5




                                    …
   key は
文書名と単語のペ
                                                value は
     ア
                                                 tfidf 値

           文書 A の Hadoop      の     値: 0.3
           文書 A の HDFS        の     値: 0.6
           文書 A の MapReduce   の     値: 0.5
     37
2.処理の入出力を考える(2)
    同様にして考えると以下の表のようになる


               処理            key     value
            式に代入して計算       文書名/単語    tfidf 値


         文書中の単語の出現回数を求める   文書名/単語    出現回数
          文書中の単語の総数を求める     文書名     単語の総数
             文書数を求める       <要検討>     文書数
         単語が出現した文書数を求める     単語      出現した文書
                                       数




    38
2.処理の入出力を考える(3)
    入力ファイルから文書名を取得する必要があるので、
     今回の入力ファイルは説明を簡単にするため以下の
     フォーマットを用いる

                    入力ファイル

         タイトル名1@バイトオフセット     文章
         タイトル名1@バイトオフセット     文章
         タイトル名1@バイトオフセット     文章
         タイトル名1@バイトオフセット     文章
         タイトル名2@バイトオフセット     文章
         タイトル名2@バイトオフセット     文章
         タイトル名2@バイトオフセット     文章
                …




    39
3.データを Reduce からの参照のされ方で分ける(1)
  「式に代入して計算」の処理の入力を考える
                     全体で共通の値

  以下は計算式と必要な値を求める処理の出力
各文書で共通の値 全て異なる値
                                        各単語で共通の
                                           値
         文書中の単語の出現回 数             文書数
                      * log10
          文書中の単語の総数           単語が出現した文書数

                処理           key     value
         文書中の単語の出現回数を求める   文書名/単語    出現回数
          文書中の単語の総数を求める     文書名     単語の総数
             文書数を求める       <要検討>     文書数
         単語が出現した文書数を求める     単語      出現した文書
                                       数

    40
3.データを Reduce からの参照のされ方で分ける(2)
    全体で共通の値
        k-means のクラスタの中心データの配布と同じ方法を使
         う

    部分的に共通の値
        ジョブ(MapReduce)を追加して全て異なる値と一緒に
         扱う
            全体で共通の値と同じ手法を使わない理由は次回




    41
ここまでで構築した処理の流れ

       文書数を求め            式に代入
          る              して計算


 入力    文書中の単語の                    出力
ファイ   出現回数を求める                   ファイル
  ル              値をまとめ   値をまとめ    (tfidf
                   る1      る2     値)
      単語が出現した
      文書数を求める


      文書中の単語の
       総数を求める


 42
4.簡単な MapReduce で実現できるか検討




43
「文書数を求める」検討
    入力ファイルから簡単な MapReduce で文書数を求
     めることはできない

    先に「文書のリスト作成」のジョブを作成してから
     だと、ワードカウントと同様にして文書数が求めら
     れる
                         文書数を求める
     文書数を求め       文書名の
       る                      文書名を数える
                 リスト作成




    44
「文書中の単語の出現回数を求める」検討
    入力から文書名と単語のペアを key にすれば、
     ワードカウントと同様にして文書中の単語の出現回
     数が求められる




    45
「単語が出現した文書数を求める」検討
    入力ファイルから簡単な MapReduce で単語が出現
     した文書数を求めることはできない

    先に「文書で出現した単語のリスト」を作成しして
     からだと、ワードカウントと同様にして単語が出現
     した文書数が求められる
                   単語が出現した文書数を求める
     単語が出現し
     た文書数を求                  リストから
                文書で出現した
       める                   単語が出現した
                 単語のリスト
                            文書数を求める




    46
「文書中の単語の総数を求める」検討
    文書名を key にすれば、ワードカウントと同様にし
     て
     文書中の単語の総数が求められる




    47
ジョブフロー

         文書数を求める
       文書名の     文書名を数                式に代入
       リスト作成     える                  して計算


        文書中の単語の                               出力
 入力     出現回数を求める
ファイ                                          ファイル
 ル                           値をまとめ   値をまとめ    (tfidf
        単語が出現した文書数を求める        る1      る2      値)

       文書で出現し       リストから
         た         単語が出現した
       単語のリスト      文書数を求める


       文書中の単語の
        総数を求める




  48
まとめと次回の予定




49
まとめ
    アルゴリズムからジョブフローにする手順
     1.        大まかな処理に分ける
     2.        処理の入出力を考える
     3.        データを Reduce からの参照のされ方で分ける
          1.    全ての Reduce
          2.    全てではないが複数の Reduce
          3.    一つの Reduce
     4.        処理ごとに簡単な MapReduce で実現できるか検討し、
               必要に応じてジョブを増やす




    50
次回の予定
   MapReduce プログラミング基礎とプログラミングテ
    クニック
        ワードカウント
        k-means
        TF-IDF




    51

Más contenido relacionado

La actualidad más candente

[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...
[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...
[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...Deep Learning JP
 
130323 slide all
130323 slide all130323 slide all
130323 slide allikea0064
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extractionKoji Sekiguchi
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)x1 ichi
 
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章Makoto Kawano
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習Naoaki Okazaki
 
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜Jun Okumura
 

La actualidad más candente (11)

[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...
[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...
[DLHacks]Fast and Accurate Entity Recognition with Iterated Dilated Convoluti...
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
Lucene terms extraction
Lucene terms extractionLucene terms extraction
Lucene terms extraction
 
PRML 4.1.6-4.2.2
PRML 4.1.6-4.2.2PRML 4.1.6-4.2.2
PRML 4.1.6-4.2.2
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章Pythonデータ分析 第4回勉強会資料 12章
Pythonデータ分析 第4回勉強会資料 12章
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
 
NLP2012
NLP2012NLP2012
NLP2012
 
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
 

Destacado

今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
建築インターンシップ
建築インターンシップ建築インターンシップ
建築インターンシップ09N1057
 
Devsumi2010-01-Suc3rum-20100218
Devsumi2010-01-Suc3rum-20100218Devsumi2010-01-Suc3rum-20100218
Devsumi2010-01-Suc3rum-20100218Sukusuku Scrum
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)Toru Takizawa
 

Destacado (7)

今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
 
建築インターンシップ
建築インターンシップ建築インターンシップ
建築インターンシップ
 
Devsumi2010-01-Suc3rum-20100218
Devsumi2010-01-Suc3rum-20100218Devsumi2010-01-Suc3rum-20100218
Devsumi2010-01-Suc3rum-20100218
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 

Similar a 今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)

Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアルK Yamaguchi
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料Recruit Technologies
 
XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介Ohsawa Goodfellow
 
VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-Takeshi Yamamuro
 
Perlと出会い、Perlを作る
Perlと出会い、Perlを作るPerlと出会い、Perlを作る
Perlと出会い、Perlを作るgoccy
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Koji Matsuda
 
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』Nagi Teramo
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
 
Sort
SortSort
Sortoupc
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Jun Ohtani
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
PRML 4.1 Discriminant Function
PRML 4.1 Discriminant FunctionPRML 4.1 Discriminant Function
PRML 4.1 Discriminant FunctionShintaro Takemura
 
Hadoop book-2nd-ch3-update
Hadoop book-2nd-ch3-updateHadoop book-2nd-ch3-update
Hadoop book-2nd-ch3-updateTaisuke Yamada
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)Hadoop / Spark Conference Japan
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案yushin_hirano
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要Google Cloud Platform - Japan
 
ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)KnowledgeGraph
 

Similar a 今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228) (20)

Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアル
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介
 
VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-
 
Perlと出会い、Perlを作る
Perlと出会い、Perlを作るPerlと出会い、Perlを作る
Perlと出会い、Perlを作る
 
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
Word Sense Induction & Disambiguaon Using Hierarchical Random Graphs (EMNLP2010)
 
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』~knitr+pandocではじめる~『R MarkdownでReproducible Research』
~knitr+pandocではじめる~『R MarkdownでReproducible Research』
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
Sort
SortSort
Sort
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
 
Paper: seq2seq 20190320
Paper: seq2seq 20190320Paper: seq2seq 20190320
Paper: seq2seq 20190320
 
PRML 4.1 Discriminant Function
PRML 4.1 Discriminant FunctionPRML 4.1 Discriminant Function
PRML 4.1 Discriminant Function
 
Hadoop book-2nd-ch3-update
Hadoop book-2nd-ch3-updateHadoop book-2nd-ch3-update
Hadoop book-2nd-ch3-update
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
 
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知るMapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)ナレッジグラフ/LOD利用技術の入門(後編)
ナレッジグラフ/LOD利用技術の入門(後編)
 

Último

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Último (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

今さら聞けないHadoop勉強会第2回 セントラルソフト株式会社(20120228)

  • 1. 今さら聞けない Hadoop 勉強会 第2回 アルゴリズム編 セントラルソフト株式会社 システム1部 システム開発課 奥山 洋平 1
  • 3. 本セミナーの目的  Hadoop に関連する技術や培ったノウハウを、勉強会に参加された方 と 共有する SlideShare で公開 「今さら聞けないhadoop セントラ ルソフト」で見つかります  スケジュール  第1回 Hadoop 基礎(1月19日開催)  HDFS と MapReduce の概念  ロールプレイ  第2回 アルゴリズム(本日2月28日開催)  k-means アルゴリズム  TF-IDF アルゴリズム  第3回 「MapReduce 実装テクニック」を予定(3月予定)  ワードカウント  k-means  TF-IDF  第4回 「理論・エコシステム編」を予定(4月予定)  HDFS  HBase  Hive 3
  • 4. 本日の目的  2つのアルゴリズムを通してアルゴリズムからジョブ フローにする流れを知ってもらう 今回 アルゴリズム ジョブフロー 次回予定 MapReduce プログラム 4
  • 5. 目次  k-means アルゴリズム  アルゴリズムからジョブフローへ  TF-IDF アルゴリズム  アルゴリズムからジョブフローへ  まとめと次回の予定 5
  • 7. k-means アルゴリズムとは  レコードの集合を k 個のよく似た特徴を持つ集合 (クラスタ)に分割(クラスタリング)するアルゴリ ズム  k = 2 の例 クラスタ レコード 7
  • 8. クラスタリングの活用例  機械学習  手書き文字認識 この数字は 「9」 この数字は 何? 9のクラス 7のクラス タ タ  特徴抽出  「7」と「9」の分類に必要な特徴は? 8
  • 9. k-means アルゴリズム概要  k-menas アルゴリズムは「クラスタの割り当て」と 「クラスタの重心を求める」という処理を繰り返し、 最適な重心を求めるアルゴリズム 9
  • 10. k-means アルゴリズムの手順(1) 1. 初期化  各レコードに対して、ランダムにクラスタを割り当てる 2. 割り当てたクラスタの重心を求める 3. 各レコードを、各クラスタの重心に一番近いクラスタ に 割り当て直す 4. クラスタの割り当て変化がある 終了 2 の処理 クラスタの割り当てに変化が無い 10 予め決めた回数クラスタの割り当てを行った
  • 11. k-means アルゴリズムの手順(2) k=3 3. クラスタの再割り当て 1. 初期化(ランダムにクラスタを割り当てる) 2. クラスタの重心を求める ⇒ クラスタの割り当てが変化したので クラスタの割り当てが変化しなかったので 2 の処理へ 処理終了 11
  • 13. ジョブフローを作る際に意識すること  MapReduce は分散処理なので、複雑な処理はでき ない  複雑な処理は複数回の MapReduce で実現する  本勉強会の説明では1回の MapReduce を1ジョブとす る  1ジョブの処理はシンプルにする 複雑な処理 ジョブ 2 複雑な ジョブ ジョブ 処理 1 4 ジョブ 3 13
  • 14. k-means アルゴリズム 1. 初期化  各レコードに対して、ランダムにクラスタを割り当てる 2. 割り当てたクラスタの重心を求める 3. 各レコードを、各クラスタの重心に一番近いクラスタ に 割り当て直す 4. クラスタの割り当て変化がある 終了 2 の処理 クラスタの割り当てに変化が無い 14 予め決めた回数クラスタの割り当てを行った
  • 15. 処理の流れ 処理1:初期化 処理2:割り当てたクラスタの重心を求める 処理3:各レコードを、各クラスタの重心に一番近いクラ スタに 割り当て直す レコー ド集合 :入力 :出力 開始 処理1 処理2 処理3 終了 :フロー :終了時 入力 出力 処理3の 処理1 処理2 処理3 結果が ファイ ファイ 結果 結果 結果 ル ル 最終出力 15
  • 16. MapReduce にできるか検討  それぞれの処理が1回の MapReduce で実現できそ うか 検討し、必要に応じて複数回のジョブで処理を実現 する 16
  • 17. MapReduce の簡単な復習  MapReduce は以下の3つのフェーズで構成される  入力データの加工を行う「Map」  データの整理と分配を行う「Shuffle & Sort」  同じ key に対する value は一纏めにし、key 順にソートした データを Reduce を行うノードが受け取る  まとめられたデータに対して処理を行う「Reduce」  それぞれのフェーズの入出力は key と value のペア 17
  • 18. 処理1概要  処理  各レコードに対して、ランダムにクラスタを割り当てる  入力(クラスタリングするデータファイル)  key : 入力ファイルの形式による  value : 1レコード  出力(ランダムにクラスタを割り当てられたレコー ド)  key : 割り当てられたクラスタ番号  value : 1レコード 18
  • 19. 処理1検討 <入力形式によって異なるkey , 1レコード> 入力 乱数 処理1 1回の MapReduce で実現できそう <ランダムに割り当てたクラスタ , 1レコード> 出力 19
  • 20. 処理2概要  処理  割り当てられたクラスタの重心を求める  入力(ランダムにクラスタを割り当てられたレコー ド)  key : クラスタ番号  value : 1レコード  出力(クラスタの重心)  key : クラスタ番号  value : クラスタの重心の位置 20
  • 21. 処理2検討 <クラスタ1, A><クラスタ2, B> <クラスタ1, C> Map 出力 Shuffle & Sort で同じクラスタは一纏まりになり、 Shuffle & Sort その纏まりでクラスタの重心が計算できる <クラスタ1, [A , C]> <クラスタ2, [B]> 1回の MapReduce で実現できそう Reduce 入力 21
  • 22. 処理3概要  処理  各レコードを、一番近いクラスタに割り当て直す  入力1(クラスタの重心)  key : クラスタ番号  value : クラスタの重心の位置  入力2(クラスタリングするデータファイル)  key : <要検討>  value : 1レコード  出力(クラスタを割り当て直したレコード)  key : 割り当てたクラスタ  value : 1レコード 22
  • 23. 処理3検討  問題となりそうなところ  2つの形式のデータの入力はどうする?  クラスタの重心のデータはすべての Reduce を行うノー ドに 配布する必要があるがどうする?  すべてに配布しないと各レコードがどのクラスタに近いのか 比較できない 実現方法を知っていれば1回の MapReduce で 知らなければ MapReduce の回数を増やす 次回、1回の MapReduce で実現する方法を解説 予定 23
  • 24. その他次回解説を行う問題  <要検討>にしてあった部分  処理3の終了後、条件によって処理を終了するか、 処理2の処理に戻るか分岐する問題  MapReduce の実装レベルの内容は次回行う(予 定) 24
  • 26. TF-IDF アルゴリズムとは  文書中の単語に関する重み付けのアルゴリズム  その単語がその文書でどれくらい特徴的であるかを 単語ごと文書ごとに数値化(tfidf 値)  出てくる文書が少なく、特定の文書での出現回数が多い単語ほ ど その文書での数値が大きい  キーワード抽出や Web 検索へ応用できる  例:ある文書中の tfidf 値 “Hadoop” : 0.3 文書 “HDFS” : 0.6 “MapReduce” : 0.5 26 …
  • 27. tfidf 値の意味(1)  異なる文書の同じ単語の場合  単語の tfidf 値が高い文書ほど、その単語を特徴として持 つ文書  その単語がよく表れる文書 文書のキーワード 検索 文書A 文書B 文書C “Hadoop” : 0.3 “Hadoop” : 0.5 “Hadoop” : 0.2 “Hadoop” の検索結果は上位から 文書B , A , C 27
  • 28. tfidf 値の意味(2)  一つの文書内の単語の場合  特定の文書中で tfidf 値が高い単語が、その文書を特徴付け る  文書のインデックス作成 文書のキーワード検索 の高速化 tfidf 値 インデックス “Hadoop” : 0.3 “HDFS” : 0.6 “HDFS” 文書A “Java” : 0.2 “MapReduce” “MapReduce” : 0.5 “Hadoop” “Ruby” : 0.1 … 28
  • 29. TF-IDF アルゴリズム(tfidf 値の求め方)(1)  tfidf 値は、単語の出現頻度(tf : term frequency)と 逆文書頻度(idf : inverse document frequency)の積で求め られる tfidf 単語の出現頻度 * 逆文書頻度  単語の出現頻度(tf)は以下の式で求められる 文書中の単語の出現回 数 単語の出現頻度 文書中の単語の総数  逆文書頻度(idf)は以下の式で求められる(この式は ジップの法則に由来する) 文書数 逆文書頻度 log10 単語が出現した文書数 29
  • 30. TF-IDF アルゴリズム(tfidf 値の求め方)(2) 文書1 文書2 文書3 A tf:0.5 0.2385 単語の出現頻度 * 逆文書頻度 A 文書中の単語の出現回数 / 文書中の単語の総数 0.5 * 0.477 idf:0.477 2/4 log10(文書数/単語が出現した文書数) tf:0.25 log10(3 / 1) tf:0.33 B 0.044 B単語ごとに共通の値 0.05808 idf:0.176 C tf:0.25 C tf:0.33 C tf:0.25 idf:0 0 0 0 D tf:0.33 D tf:0.5 0.05808 0.088 idf:0.17 D 6 tf:0.25 E 0.11925 idf:0.47 30 7
  • 32. k-means アルゴリズムとの違い  k-means はアルゴリズムの中でフローが決まってい た  TF-IDF は計算式だけでフローが無いので、どのよう な順番で処理を行うのか考えなければならない 32
  • 33. ジョブフローを作る際に意識すること(再掲)  MapReduce は分散処理なので、複雑な処理はでき ない  複雑な処理は複数回の MapReduce で実現する  ここでは1回の MapReduce を1ジョブとする  1ジョブの処理はシンプルにする 複雑な処理 ジョブ 2 複雑な ジョブ ジョブ 処理 1 4 ジョブ 3 33
  • 34. MapReduce の簡単な復習(再掲)  MapReduce は以下の3つのフェーズで構成される  入力データの加工を行う「Map」  データの整理と分配を行う「Shuffle & Sort」  同じ key に対する value は一纏めにし、key 順にソートした データを Reduce を行うノードが受け取る  まとめられたデータに対して処理を行う「Reduce」  それぞれのフェーズの入出力は key と value のペア 34
  • 35. アルゴリズムからジョブフローへの流れ 1. 大まかな処理に分ける 2. 処理の入出力を考える 3. データを Reduce からの参照のされ方で分ける 1. 全ての Reduce 2. 全てではないが複数の Reduce 3. 一つの Reduce 4. 処理ごとに簡単な MapReduce で実現できるか検討 し、 必要に応じてジョブを増やす 35
  • 36. 1.大まかな処理に分ける  必要なものを考え、大まかな処理に分ける 文書中の単語の出現回数を求める 文書中の単語の総数を求める 式に代入 tfidf 値 して計算 文書数を求める 単語が出現した文書数を求め る 文書中の単語の出現回 数 文書数 * log10 文書中の単語の総数 単語が出現した文書数 36
  • 37. 2.処理の入出力を考える(1)  どのような key と value のペアを出力するか考える  「式に代入して計算」の処理の場合 Hadoop : 0.3 文書A HDFS : 0.6 MapReduce : 0.5 … key は 文書名と単語のペ value は ア tfidf 値 文書 A の Hadoop の 値: 0.3 文書 A の HDFS の 値: 0.6 文書 A の MapReduce の 値: 0.5 37
  • 38. 2.処理の入出力を考える(2)  同様にして考えると以下の表のようになる 処理 key value 式に代入して計算 文書名/単語 tfidf 値 文書中の単語の出現回数を求める 文書名/単語 出現回数 文書中の単語の総数を求める 文書名 単語の総数 文書数を求める <要検討> 文書数 単語が出現した文書数を求める 単語 出現した文書 数 38
  • 39. 2.処理の入出力を考える(3)  入力ファイルから文書名を取得する必要があるので、 今回の入力ファイルは説明を簡単にするため以下の フォーマットを用いる 入力ファイル タイトル名1@バイトオフセット 文章 タイトル名1@バイトオフセット 文章 タイトル名1@バイトオフセット 文章 タイトル名1@バイトオフセット 文章 タイトル名2@バイトオフセット 文章 タイトル名2@バイトオフセット 文章 タイトル名2@バイトオフセット 文章 … 39
  • 40. 3.データを Reduce からの参照のされ方で分ける(1)  「式に代入して計算」の処理の入力を考える 全体で共通の値  以下は計算式と必要な値を求める処理の出力 各文書で共通の値 全て異なる値 各単語で共通の 値 文書中の単語の出現回 数 文書数 * log10 文書中の単語の総数 単語が出現した文書数 処理 key value 文書中の単語の出現回数を求める 文書名/単語 出現回数 文書中の単語の総数を求める 文書名 単語の総数 文書数を求める <要検討> 文書数 単語が出現した文書数を求める 単語 出現した文書 数 40
  • 41. 3.データを Reduce からの参照のされ方で分ける(2)  全体で共通の値  k-means のクラスタの中心データの配布と同じ方法を使 う  部分的に共通の値  ジョブ(MapReduce)を追加して全て異なる値と一緒に 扱う  全体で共通の値と同じ手法を使わない理由は次回 41
  • 42. ここまでで構築した処理の流れ 文書数を求め 式に代入 る して計算 入力 文書中の単語の 出力 ファイ 出現回数を求める ファイル ル 値をまとめ 値をまとめ (tfidf る1 る2 値) 単語が出現した 文書数を求める 文書中の単語の 総数を求める 42
  • 44. 「文書数を求める」検討  入力ファイルから簡単な MapReduce で文書数を求 めることはできない  先に「文書のリスト作成」のジョブを作成してから だと、ワードカウントと同様にして文書数が求めら れる 文書数を求める 文書数を求め 文書名の る 文書名を数える リスト作成 44
  • 45. 「文書中の単語の出現回数を求める」検討  入力から文書名と単語のペアを key にすれば、 ワードカウントと同様にして文書中の単語の出現回 数が求められる 45
  • 46. 「単語が出現した文書数を求める」検討  入力ファイルから簡単な MapReduce で単語が出現 した文書数を求めることはできない  先に「文書で出現した単語のリスト」を作成しして からだと、ワードカウントと同様にして単語が出現 した文書数が求められる 単語が出現した文書数を求める 単語が出現し た文書数を求 リストから 文書で出現した める 単語が出現した 単語のリスト 文書数を求める 46
  • 47. 「文書中の単語の総数を求める」検討  文書名を key にすれば、ワードカウントと同様にし て 文書中の単語の総数が求められる 47
  • 48. ジョブフロー 文書数を求める 文書名の 文書名を数 式に代入 リスト作成 える して計算 文書中の単語の 出力 入力 出現回数を求める ファイ ファイル ル 値をまとめ 値をまとめ (tfidf 単語が出現した文書数を求める る1 る2 値) 文書で出現し リストから た 単語が出現した 単語のリスト 文書数を求める 文書中の単語の 総数を求める 48
  • 50. まとめ  アルゴリズムからジョブフローにする手順 1. 大まかな処理に分ける 2. 処理の入出力を考える 3. データを Reduce からの参照のされ方で分ける 1. 全ての Reduce 2. 全てではないが複数の Reduce 3. 一つの Reduce 4. 処理ごとに簡単な MapReduce で実現できるか検討し、 必要に応じてジョブを増やす 50
  • 51. 次回の予定  MapReduce プログラミング基礎とプログラミングテ クニック  ワードカウント  k-means  TF-IDF 51