SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Introduction to
Fuzzy kmeans on Mahout
    (Fuzzy c-means)

          lawmn
      12th Jun. 2011
     #TokyoWebmining
始めに

この知識は個人的なものであり会社とは関係ありません。
Agenda

1. 自己紹介
2. Clustering overview
3. kmeans on Mahout
4. Fuzzy kmeans on Mahout
5. Mahout上でのFuzzy kmeans実行
6. Reference
自己紹介

● 名前
   ○ lawmn
● 出身
   ○ 新潟県
● 使用言語
   ○ Python, C#
● 大学のときの専攻
   ○ 素粒子物理学専攻、博士号取得(仕事とはなんの関係もあり
     ません)
● 趣味
   ○ 旅行
       ■ 今のところ行ったことがあるところは20カ国
       ■ 南米に行ってみたい
MahoutJP

● MahoutJPのお手伝い
Clustering overview
データの分類方法

  ● Clustering
     ○ 教師データなしでデータを分類


  ● Classification
     ○ 教師データありでデータを分類
Clustering overview
データの分類方法

  ● Clustering
     ○ 教師データなしでデータを分類


  ● Classification
     ○ 教師データありでデータを分類
Clustering overview




@hamadakoichi
Mahout Canopy Clustering - #TokyoWebmining 9
http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
Clustering overview




@hamadakoichi
Mahout Canopy Clustering - #TokyoWebmining 9
http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
Clustering overview




@hamadakoichi
Mahout Canopy Clustering - #TokyoWebmining 9
http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
kmeans on Mahout



以下の評価関数を最小化するクラスタリング
(n個のデータ点をk個のクラスタに分割する)



                         :データ点
                         :クラスタ中心
                         :ユークリッド距離
kmeans on Mahout
アルゴリズム

1. 全データから初期中心を選ぶ
2. クラスタ中心と各データとの距離を求め、距離が最も近い中心のクラスタにデータ
   を割り当てる
3. クラスタ中心の変化が閾値以下だった場合は処理を終了する
4. 各クラスタの中心を計算する
5. 2の処理へ




@hamadakoichi
Mahout Canopy Clustering - #TokyoWebmining 9
http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
kmeans vs Fuzzy kmeans
  kmeans
   ● 一つのデータを一つのクラスタに割り当て
   ● 利点
      ○ アルゴリズムが単純
   ● 欠点
      ○ データを無理にでも一つのクラスタに割り当てないといけない
      ○ はずれ値に影響を受けやすい(クラスタ中心が引っ張られる)
   ● 適用例
      ○ 画像減色処理
      ○ http://opencv.jp/opencv2-x-samples/k-means_clustering


  fuzzy kmeans
   ● 一つのデータを複数のクラスタに割り当て
   ● 割り当て方は各クラスタへの帰属度で指定
   ● 利点
      ○ 完全に分割できないデータで有効
      ○ はずれ値に影響を受けにくい
   ● 欠点
      ○ kmeansに比べてアルゴリズムが複雑
   ● 適用例
      ○ 遺伝子発現データのクラスタ解析(バイオインフォマティクス)
      ○ http://www.sbj.or.jp/wp-content/uploads/file/sbj/8407_tokusyu_03.
        pdf
Fuzzy kmeans on Mahout


以下の評価関数を最小化するクラスタリング
(n個のデータ点をk個のクラスタに分割する)




                         :データ点
                         :クラスタ中心
        :クラスタへの帰属度
                         :ユークリッド距離
                         :fuzziness(m > 1)
Fuzzy kmeans on Mahout
アルゴリズム
1. 全データから初期中心を選ぶ
2. 初期中心を固定して、クラスタへの帰属度を計算する
3. 2で計算した帰属度を用いて, 各クラスタの中心を計算する
4. 3で計算した中心を用いて,帰属度を計算する
5. 3~4を繰り返し、クラスタ中心の変化が閾値以下であれば終了




Fuzzy kmeans



kmeans


                        最終的に上図のようになる
Fuzzy kmeans on Mahout

パッと見、評価関数を以下で定義してもfuzzy kmeansが実行できる
ように見える。




しかし、この場合に帰属度の条件を満たし最小化しようとすると
kmeansの評価関数と同じになってしまう。
参考:http://www.cs.osakafu-u.ac.jp/hi/honda/mathematics.htm

このため、fuzziness: mを導入して、例えばm=2として実行する。
Mahout上でのFuzzy kmeans実行
1. Data converter(tsvからsequenceFileを生成)をMahoutに追加
      ○ @hamadakoichiさんに感謝
      ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1
2. クラスタリング対象データ(tsv)をHDFS上にアップ
3.  sequenceFile生成
4.  初期中心生成
      ○ Random
      ○ Canopy
5. Fuzzy kmeans実行
6.  クラスタリング結果確認
                               Mahout version
                               mahout-distribution-0.5
                         27 May 2011 - Apache Mahout 0.5 released
                         maven, Hadoop, Mahoutがインストール済み
                         であることを前提とする
Mahout上でのFuzzy kmeans実行
1. Data converter(tsvからsequenceFileを生成)をMahoutに追加
      ○ @hamadakoichiさんに感謝
      ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1
2. クラスタリング対象データ(tsv)をHDFS上にアップ
3.  sequenceFile生成
4.  初期中心生成
      ○ Random
      ○ Canopy
5. Fuzzy kmeans実行
6.  クラスタリング結果確認
                               Mahout version
                               mahout-distribution-0.5
                         27 May 2011 - Apache Mahout 0.5 released
                         maven, Hadoop, Mahoutがインストール済み
                         であることを前提とする
Mahout上でのFuzzy kmeans実行

Data converter(tsvからsequenceFileを生成)をMahoutに追加
http://d.hatena.ne.jp/hamadakoichi/20110112/p1

1. javaファイル配置
  ● $MAHOUT_HOME/examples/src/main/java/org/apache/mah
    out/text
  ● 元々org.apache.mahout.clustering.toolsだったが、都合上org.
    apache.mahout.textに変更
2. javaファイルのpackage記述を"org.apache.mahout.text"に変更
3.  インストール
  ● $ cd $MAHOUT_HOME/examples/
  ● $ mvn install
Mahout上でのFuzzy kmeans実行
1. Data converter(tsvからsequenceFileを生成)をMahoutに追加
     ○ @hamadakoichiさんに感謝
     ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1
2. クラスタリング対象データ(tsv)をHDFS上にアップ
3. sequenceFile生成
4.  初期中心生成
     ○ Random
     ○ Canopy
5. Fuzzy kmeans実行
6.  クラスタリング結果確認
                              Mahout version
                              mahout-distribution-0.5
                         27 May 2011 - Apache Mahout 0.5 released
                         maven, Hadoop, Mahoutがインストール済み
                         であることを前提とする
Mahout上でのFuzzy kmeans実行

クラスタリング対象データ(tsv)をHDFS上にアップ

1. Rのデータセット「iris」からiris.tsvを作成
2. 数値データのみになるようにSpeciesカラム削除
    ○ Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
3. HDFS上にアップ
    ○ $HADOOP_HOME/bin/hadoop dfs -put iris.tsv testdata
Mahout上でのFuzzy kmeans実行
1. Data converter(tsvからsequenceFileを生成)をMahoutに追加
     ○ @hamadakoichiさんに感謝
     ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1
2. クラスタリング対象データ(tsv)をHDFS上にアップ
3. sequenceFile生成
4. 初期中心生成
     ○ Random
     ○ Canopy
5. Fuzzy kmeans実行
6.  クラスタリング結果確認               Mahout version
                         mahout-distribution-0.5
                         27 May 2011 - Apache Mahout 0.5 released
                         maven, Hadoop, Mahoutがインストール済み
                         であることを前提とする
Mahout上でのFuzzy kmeans実行
sequenceFile生成&初期中心生成

1. sequenceFile生成
     ○ $MAHOUT_HOME/bin/mahout org.apache.mahout.text.
       TextToVectorConverter -i testdata -o testdata_seq
2. 初期中心生成
     ○ Canopy使用
     ○ Randomに選択したい場合はFuzzy kmeans実行時に-kでク
       ラスタ数を指定
     ○ $MAHOUT_HOME/bin/mahout canopy -i testdata_seq -o
       clusters_fcm -dm org.apache.mahout.common.distance.
       EuclideanDistanceMeasure -xm mapreduce -t1 20 -t2 1
     ○ 必要な数の中心を得るためにt1,t2を調整
Mahout上でのFuzzy kmeans実行
1. Data converter(tsvからsequenceFileを生成)をMahoutに追加
      ○ @hamadakoichiさんに感謝
      ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1
2. クラスタリング対象データ(tsv)をHDFS上にアップ
3.  sequenceFile生成
4.  初期中心生成
      ○ Random
      ○ Canopy
5. Fuzzy kmeans実行
6. クラスタリング結果確認
                               Mahout version
                               mahout-distribution-0.5
                         27 May 2011 - Apache Mahout 0.5 released
                         maven, Hadoop, Mahoutがインストール済み
                         であることを前提とする
Mahout上でのFuzzy kmeans実行
Fuzzy kmeans実行&クラスタリング結果確認

1. Fuzzy kmeans実行
    ○ $MAHOUT_HOME/bin/mahout fkmeans -i testdata_seq -
      c clusters_fcm/clusters-0 -x 10 -o output_fcm -m 2 -cl -
      dm org.apache.mahout.common.distance.
      EuclideanDistanceMeasure
2. クラスタリング結果確認
    ○ output_fcmにあるsequenceFileはバイナリであるため、テキ
      ストに変換
    ○ $MAHOUT_HOME/bin/mahout clusterdump --seqFileDir
      output_fcm/clusters-1 --pointsDir
      output_fcm/clusteredPoints/ --output
      $HOME/clusteranalyze-0.txt
Mahout上でのFuzzy kmeans実行
 クラスタリング結果
 SC-0{n=46 c=[3.025, 3.668, 1.146] r=[0.426, 1.585, 0.673]}
     Weight: Point:
     0.9971797368342612: 5.1 = [3.500, 1.400, 0.200]
     0.9879369220797811: 4.9 = [3.000, 1.400, 0.200]
     0.993180497187098: 4.7 = [3.200, 1.300, 0.200]
 ...
 SC-1{n=34 c=[3.083, 4.097, 1.365] r=[0.415, 1.884, 0.826]}
     Weight: Point:
     0.9773007230993884: 7.0 = [3.200, 4.700, 1.400]
     0.9661792609907912: 6.4 = [3.200, 4.500, 1.500]
     0.9930659179177667: 6.9 = [3.100, 4.900, 1.500]
 ...
Fuzzy kmeans実行パラメータ
  $MAHOUT_HOME/bin/mahout fkmeans
  -i 入力データディレクトリ
      ● 文字列で指定
      ● データ型:sequenceFile
  -c 初期中心データディレクトリ
      ● 文字列で指定
      ● データ型:sequenceFile
  -o 出力データディレクトリ
      ● 文字列で指定
      ● すでに存在すると動作しない。-owを指定すると上書きする。
  - dm 距離定義- m fuzziness
      ● 数値で指定。m > 1
  -x 繰り返し最大回数
      ● 数値で指定
  -k 初期中心のランダムサンプリング数
      ● 数値で指定
      ● これを指定すると-cで指定したディレクトリは上書きされる
      ● ただし、Mahout 0.5でこれを指定するとエラーになる。バグ?http://search-lucene.
        com/m/CMBEC2UENp&subj=Bug+in+fkmeans+
  -cd 収束閾値
      ● 数値で指定
      ● デフォルト値は0.5
  -xm 処理方法を指定
      ● 文字列で指定
      ● sequential (running on memory) or mapreduce
  -cl クラスタが確定した後にデータのクラスタリングを行う
      ● 引数なし
Reference

 ● Mahout IN ACTION




  ● sequenceFile生成
@hamadakoichi
http://d.hatena.ne.jp/hamadakoichi/20110112/p1

  ● fkmeans仕様
https://cwiki.apache.org/MAHOUT/fuzzy-k-means.html
ご清聴ありがとうございました。

Contenu connexe

Tendances

Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)Satoshi Yamada
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編まべ☆てっく運営
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)Satoshi Yamada
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwToshi Harada
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」Nagi Teramo
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門AdvancedTechNight
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etckasaharatt
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
データベースのお話
データベースのお話データベースのお話
データベースのお話Hidekazu Tanaka
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 

Tendances (20)

Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
Native Memory Tracking
Native Memory TrackingNative Memory Tracking
Native Memory Tracking
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
20180123 power shell
20180123 power shell20180123 power shell
20180123 power shell
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
データベースのお話
データベースのお話データベースのお話
データベースのお話
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 

En vedette

Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IRtakaya imai
 
視野変換1(基礎編)
視野変換1(基礎編)視野変換1(基礎編)
視野変換1(基礎編)康弘 等々力
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量についてla_flance
 
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...takaya imai
 
ComplementaryNaiveBayesClassifier
ComplementaryNaiveBayesClassifierComplementaryNaiveBayesClassifier
ComplementaryNaiveBayesClassifierNaoki Yanai
 
Mahoutにパッチを送ってみた
Mahoutにパッチを送ってみたMahoutにパッチを送ってみた
Mahoutにパッチを送ってみたissaymk2
 
Image Recognition
Image RecognitionImage Recognition
Image Recognitiontakaya imai
 
Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよHadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよNaoki Yanai
 
Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Koichi Hamada
 
Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Koichi Hamada
 
協調フィルタリング with Mahout
協調フィルタリング with Mahout協調フィルタリング with Mahout
協調フィルタリング with MahoutKatsuhiro Takata
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Koichi Hamada
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14thKoichi Hamada
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習Preferred Networks
 
20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for ShareYasushi Gunya
 
計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)Shota Yasui
 

En vedette (20)

Learning to rank for IR
Learning to rank for IRLearning to rank for IR
Learning to rank for IR
 
視野変換2
視野変換2視野変換2
視野変換2
 
視野変換1(基礎編)
視野変換1(基礎編)視野変換1(基礎編)
視野変換1(基礎編)
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量について
 
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
New Approach to Data Analysis System “Tableau + TreasureData” at Tableau User...
 
視野変換2
視野変換2視野変換2
視野変換2
 
Productgraph
ProductgraphProductgraph
Productgraph
 
ComplementaryNaiveBayesClassifier
ComplementaryNaiveBayesClassifierComplementaryNaiveBayesClassifier
ComplementaryNaiveBayesClassifier
 
Mahoutにパッチを送ってみた
Mahoutにパッチを送ってみたMahoutにパッチを送ってみた
Mahoutにパッチを送ってみた
 
Image Recognition
Image RecognitionImage Recognition
Image Recognition
 
Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよHadoop/Mahout/HBaseで テキスト分類器を作ったよ
Hadoop/Mahout/HBaseで テキスト分類器を作ったよ
 
Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6Introduction to Mahout Clustering - #TokyoWebmining #6
Introduction to Mahout Clustering - #TokyoWebmining #6
 
Frequency Pattern Mining
Frequency Pattern MiningFrequency Pattern Mining
Frequency Pattern Mining
 
Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8 Apache Mahout - Random Forests - #TokyoWebmining #8
Apache Mahout - Random Forests - #TokyoWebmining #8
 
協調フィルタリング with Mahout
協調フィルタリング with Mahout協調フィルタリング with Mahout
協調フィルタリング with Mahout
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14th
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習
 
20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share20161029 TVI Tokyowebmining Seminar for Share
20161029 TVI Tokyowebmining Seminar for Share
 
計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)計量経済学と 機械学習の交差点入り口 (公開用)
計量経済学と 機械学習の交差点入り口 (公開用)
 

Similaire à Introduction to fuzzy kmeans on mahout

MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 
バックアップに一番いいファイルシステムを頼む
バックアップに一番いいファイルシステムを頼むバックアップに一番いいファイルシステムを頼む
バックアップに一番いいファイルシステムを頼むKenichiro MATOHARA
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 
Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429Etsuji Nakai
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築Hiroshi Yamato
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなしMasahiro NAKAYAMA
 
FIWARE Big Data Ecosystem : Cygnus and STH Comet
FIWARE Big Data Ecosystem : Cygnus and STH CometFIWARE Big Data Ecosystem : Cygnus and STH Comet
FIWARE Big Data Ecosystem : Cygnus and STH Cometfisuda
 
Apache Mesosってなに
Apache MesosってなにApache Mesosってなに
Apache MesosってなにShingo Kitayama
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksEiichi Matsumoto
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1Iwana Chan
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Yasutomo Kawanishi
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開Seiya Tokui
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Sotaro Kimura
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説LeapMind Inc
 

Similaire à Introduction to fuzzy kmeans on mahout (20)

MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
バックアップに一番いいファイルシステムを頼む
バックアップに一番いいファイルシステムを頼むバックアップに一番いいファイルシステムを頼む
バックアップに一番いいファイルシステムを頼む
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 
Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429Gluster fs and_swiftapi_20120429
Gluster fs and_swiftapi_20120429
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
 
FIWARE Big Data Ecosystem : Cygnus and STH Comet
FIWARE Big Data Ecosystem : Cygnus and STH CometFIWARE Big Data Ecosystem : Cygnus and STH Comet
FIWARE Big Data Ecosystem : Cygnus and STH Comet
 
Apache Mesosってなに
Apache MesosってなにApache Mesosってなに
Apache Mesosってなに
 
NIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder NetworksNIPS2015読み会: Ladder Networks
NIPS2015読み会: Ladder Networks
 
Flume
FlumeFlume
Flume
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1
 
MMDs 7.3 - 7.4
MMDs 7.3 - 7.4MMDs 7.3 - 7.4
MMDs 7.3 - 7.4
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Dernier (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

Introduction to fuzzy kmeans on mahout

  • 1. Introduction to Fuzzy kmeans on Mahout (Fuzzy c-means) lawmn 12th Jun. 2011 #TokyoWebmining
  • 3. Agenda 1. 自己紹介 2. Clustering overview 3. kmeans on Mahout 4. Fuzzy kmeans on Mahout 5. Mahout上でのFuzzy kmeans実行 6. Reference
  • 4. 自己紹介 ● 名前 ○ lawmn ● 出身 ○ 新潟県 ● 使用言語 ○ Python, C# ● 大学のときの専攻 ○ 素粒子物理学専攻、博士号取得(仕事とはなんの関係もあり ません) ● 趣味 ○ 旅行 ■ 今のところ行ったことがあるところは20カ国 ■ 南米に行ってみたい
  • 6. Clustering overview データの分類方法 ● Clustering ○ 教師データなしでデータを分類 ● Classification ○ 教師データありでデータを分類
  • 7. Clustering overview データの分類方法 ● Clustering ○ 教師データなしでデータを分類 ● Classification ○ 教師データありでデータを分類
  • 8. Clustering overview @hamadakoichi Mahout Canopy Clustering - #TokyoWebmining 9 http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
  • 9. Clustering overview @hamadakoichi Mahout Canopy Clustering - #TokyoWebmining 9 http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
  • 10. Clustering overview @hamadakoichi Mahout Canopy Clustering - #TokyoWebmining 9 http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
  • 12. kmeans on Mahout アルゴリズム 1. 全データから初期中心を選ぶ 2. クラスタ中心と各データとの距離を求め、距離が最も近い中心のクラスタにデータ を割り当てる 3. クラスタ中心の変化が閾値以下だった場合は処理を終了する 4. 各クラスタの中心を計算する 5. 2の処理へ @hamadakoichi Mahout Canopy Clustering - #TokyoWebmining 9 http://www.slideshare.net/hamadakoichi/mahout-canopy-clustering-tokyowebmining-9
  • 13. kmeans vs Fuzzy kmeans kmeans ● 一つのデータを一つのクラスタに割り当て ● 利点 ○ アルゴリズムが単純 ● 欠点 ○ データを無理にでも一つのクラスタに割り当てないといけない ○ はずれ値に影響を受けやすい(クラスタ中心が引っ張られる) ● 適用例 ○ 画像減色処理 ○ http://opencv.jp/opencv2-x-samples/k-means_clustering fuzzy kmeans ● 一つのデータを複数のクラスタに割り当て ● 割り当て方は各クラスタへの帰属度で指定 ● 利点 ○ 完全に分割できないデータで有効 ○ はずれ値に影響を受けにくい ● 欠点 ○ kmeansに比べてアルゴリズムが複雑 ● 適用例 ○ 遺伝子発現データのクラスタ解析(バイオインフォマティクス) ○ http://www.sbj.or.jp/wp-content/uploads/file/sbj/8407_tokusyu_03. pdf
  • 14. Fuzzy kmeans on Mahout 以下の評価関数を最小化するクラスタリング (n個のデータ点をk個のクラスタに分割する) :データ点 :クラスタ中心 :クラスタへの帰属度 :ユークリッド距離 :fuzziness(m > 1)
  • 15. Fuzzy kmeans on Mahout アルゴリズム 1. 全データから初期中心を選ぶ 2. 初期中心を固定して、クラスタへの帰属度を計算する 3. 2で計算した帰属度を用いて, 各クラスタの中心を計算する 4. 3で計算した中心を用いて,帰属度を計算する 5. 3~4を繰り返し、クラスタ中心の変化が閾値以下であれば終了 Fuzzy kmeans kmeans 最終的に上図のようになる
  • 16. Fuzzy kmeans on Mahout パッと見、評価関数を以下で定義してもfuzzy kmeansが実行できる ように見える。 しかし、この場合に帰属度の条件を満たし最小化しようとすると kmeansの評価関数と同じになってしまう。 参考:http://www.cs.osakafu-u.ac.jp/hi/honda/mathematics.htm このため、fuzziness: mを導入して、例えばm=2として実行する。
  • 17. Mahout上でのFuzzy kmeans実行 1. Data converter(tsvからsequenceFileを生成)をMahoutに追加 ○ @hamadakoichiさんに感謝 ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1 2. クラスタリング対象データ(tsv)をHDFS上にアップ 3.  sequenceFile生成 4.  初期中心生成 ○ Random ○ Canopy 5. Fuzzy kmeans実行 6.  クラスタリング結果確認 Mahout version mahout-distribution-0.5 27 May 2011 - Apache Mahout 0.5 released maven, Hadoop, Mahoutがインストール済み であることを前提とする
  • 18. Mahout上でのFuzzy kmeans実行 1. Data converter(tsvからsequenceFileを生成)をMahoutに追加 ○ @hamadakoichiさんに感謝 ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1 2. クラスタリング対象データ(tsv)をHDFS上にアップ 3.  sequenceFile生成 4.  初期中心生成 ○ Random ○ Canopy 5. Fuzzy kmeans実行 6.  クラスタリング結果確認 Mahout version mahout-distribution-0.5 27 May 2011 - Apache Mahout 0.5 released maven, Hadoop, Mahoutがインストール済み であることを前提とする
  • 19. Mahout上でのFuzzy kmeans実行 Data converter(tsvからsequenceFileを生成)をMahoutに追加 http://d.hatena.ne.jp/hamadakoichi/20110112/p1 1. javaファイル配置 ● $MAHOUT_HOME/examples/src/main/java/org/apache/mah out/text ● 元々org.apache.mahout.clustering.toolsだったが、都合上org. apache.mahout.textに変更 2. javaファイルのpackage記述を"org.apache.mahout.text"に変更 3.  インストール ● $ cd $MAHOUT_HOME/examples/ ● $ mvn install
  • 20. Mahout上でのFuzzy kmeans実行 1. Data converter(tsvからsequenceFileを生成)をMahoutに追加 ○ @hamadakoichiさんに感謝 ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1 2. クラスタリング対象データ(tsv)をHDFS上にアップ 3. sequenceFile生成 4.  初期中心生成 ○ Random ○ Canopy 5. Fuzzy kmeans実行 6.  クラスタリング結果確認 Mahout version mahout-distribution-0.5 27 May 2011 - Apache Mahout 0.5 released maven, Hadoop, Mahoutがインストール済み であることを前提とする
  • 21. Mahout上でのFuzzy kmeans実行 クラスタリング対象データ(tsv)をHDFS上にアップ 1. Rのデータセット「iris」からiris.tsvを作成 2. 数値データのみになるようにSpeciesカラム削除 ○ Sepal.Length, Sepal.Width, Petal.Length, Petal.Width 3. HDFS上にアップ ○ $HADOOP_HOME/bin/hadoop dfs -put iris.tsv testdata
  • 22. Mahout上でのFuzzy kmeans実行 1. Data converter(tsvからsequenceFileを生成)をMahoutに追加 ○ @hamadakoichiさんに感謝 ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1 2. クラスタリング対象データ(tsv)をHDFS上にアップ 3. sequenceFile生成 4. 初期中心生成 ○ Random ○ Canopy 5. Fuzzy kmeans実行 6.  クラスタリング結果確認 Mahout version mahout-distribution-0.5 27 May 2011 - Apache Mahout 0.5 released maven, Hadoop, Mahoutがインストール済み であることを前提とする
  • 23. Mahout上でのFuzzy kmeans実行 sequenceFile生成&初期中心生成 1. sequenceFile生成 ○ $MAHOUT_HOME/bin/mahout org.apache.mahout.text. TextToVectorConverter -i testdata -o testdata_seq 2. 初期中心生成 ○ Canopy使用 ○ Randomに選択したい場合はFuzzy kmeans実行時に-kでク ラスタ数を指定 ○ $MAHOUT_HOME/bin/mahout canopy -i testdata_seq -o clusters_fcm -dm org.apache.mahout.common.distance. EuclideanDistanceMeasure -xm mapreduce -t1 20 -t2 1 ○ 必要な数の中心を得るためにt1,t2を調整
  • 24. Mahout上でのFuzzy kmeans実行 1. Data converter(tsvからsequenceFileを生成)をMahoutに追加 ○ @hamadakoichiさんに感謝 ○ http://d.hatena.ne.jp/hamadakoichi/20110112/p1 2. クラスタリング対象データ(tsv)をHDFS上にアップ 3.  sequenceFile生成 4.  初期中心生成 ○ Random ○ Canopy 5. Fuzzy kmeans実行 6. クラスタリング結果確認 Mahout version mahout-distribution-0.5 27 May 2011 - Apache Mahout 0.5 released maven, Hadoop, Mahoutがインストール済み であることを前提とする
  • 25. Mahout上でのFuzzy kmeans実行 Fuzzy kmeans実行&クラスタリング結果確認 1. Fuzzy kmeans実行 ○ $MAHOUT_HOME/bin/mahout fkmeans -i testdata_seq - c clusters_fcm/clusters-0 -x 10 -o output_fcm -m 2 -cl - dm org.apache.mahout.common.distance. EuclideanDistanceMeasure 2. クラスタリング結果確認 ○ output_fcmにあるsequenceFileはバイナリであるため、テキ ストに変換 ○ $MAHOUT_HOME/bin/mahout clusterdump --seqFileDir output_fcm/clusters-1 --pointsDir output_fcm/clusteredPoints/ --output $HOME/clusteranalyze-0.txt
  • 26. Mahout上でのFuzzy kmeans実行 クラスタリング結果 SC-0{n=46 c=[3.025, 3.668, 1.146] r=[0.426, 1.585, 0.673]} Weight: Point: 0.9971797368342612: 5.1 = [3.500, 1.400, 0.200] 0.9879369220797811: 4.9 = [3.000, 1.400, 0.200] 0.993180497187098: 4.7 = [3.200, 1.300, 0.200] ... SC-1{n=34 c=[3.083, 4.097, 1.365] r=[0.415, 1.884, 0.826]} Weight: Point: 0.9773007230993884: 7.0 = [3.200, 4.700, 1.400] 0.9661792609907912: 6.4 = [3.200, 4.500, 1.500] 0.9930659179177667: 6.9 = [3.100, 4.900, 1.500] ...
  • 27. Fuzzy kmeans実行パラメータ $MAHOUT_HOME/bin/mahout fkmeans -i 入力データディレクトリ ● 文字列で指定 ● データ型:sequenceFile -c 初期中心データディレクトリ ● 文字列で指定 ● データ型:sequenceFile -o 出力データディレクトリ ● 文字列で指定 ● すでに存在すると動作しない。-owを指定すると上書きする。 - dm 距離定義- m fuzziness ● 数値で指定。m > 1 -x 繰り返し最大回数 ● 数値で指定 -k 初期中心のランダムサンプリング数 ● 数値で指定 ● これを指定すると-cで指定したディレクトリは上書きされる ● ただし、Mahout 0.5でこれを指定するとエラーになる。バグ?http://search-lucene. com/m/CMBEC2UENp&subj=Bug+in+fkmeans+ -cd 収束閾値 ● 数値で指定 ● デフォルト値は0.5 -xm 処理方法を指定 ● 文字列で指定 ● sequential (running on memory) or mapreduce -cl クラスタが確定した後にデータのクラスタリングを行う ● 引数なし
  • 28. Reference ● Mahout IN ACTION ● sequenceFile生成 @hamadakoichi http://d.hatena.ne.jp/hamadakoichi/20110112/p1 ● fkmeans仕様 https://cwiki.apache.org/MAHOUT/fuzzy-k-means.html