SlideShare a Scribd company logo

各言語の k-means 比較

Y
y-uti

MATLAB, R, Python の k-means について、それぞれの入出力やオプションの違いを比較してみました。 第 10 回「続・わかりやすいパターン認識」読書会の LT で発表した資料です。

1 of 27
Download to read offline
各言語の k-means 比較
2015/06/30
第10回「続・わかりやすいパターン認識」読書会
自己紹介
名前
◦ 内山 雄司
職業
◦ エンジニア (プログラマ)
私的なアカウント
◦ Twitter @y__uti
◦ はてなブログ http://y-uti.hatenablog.jp
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 2
今日の発表内容
各言語の k-means を比較調査してみました
◦ MATLAB
◦ R
◦ Python
いろいろと違いがありました
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 3
調査対象
MATLAB
◦ Statistics Toolbox の kmeans 関数
R
◦ stats パッケージの kmeans 関数
Python
◦ scikit-learn の KMeans クラス
◦ SciPy の kmeans 関数
◦ SciPy の kmeans2 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 4
MATLAB の k-means
Statistics Toolbox (要購入) の kmeans 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 5
>> load fisheriris;
>> [idx, C, sumd] = kmeans(meas, 3);
>> idx'
ans =
1 列から 18 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
19 列から 36 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
37 列から 54 列
3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2
(省略)
127 列から 144 列
2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1
145 列から 150 列
1 1 2 1 1 2
>> sum(sumd)
ans =
78.8514
R の k-means
stats パッケージ (標準) の kmeans 関数
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 6
> km <- kmeans(iris[,1:4], 3)
> km$cluster
[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[37] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[73] 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1
[109] 1 1 1 1 1 2 2 1 1 1 1 2 1 2 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1
[145] 1 1 2 1 1 2
> km$tot.withinss
[1] 78.85144
Ad

Recommended

形状解析のための楕円フーリエ変換
形状解析のための楕円フーリエ変換形状解析のための楕円フーリエ変換
形状解析のための楕円フーリエ変換Tsukasa Fukunaga
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介Deep Learning JP
 
Stochastic Variational Inference
Stochastic Variational InferenceStochastic Variational Inference
Stochastic Variational InferenceKaede Hayashi
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3までYahoo!デベロッパーネットワーク
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured PredictionDeep Learning JP
 
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering[DL輪読会](Sequential) Variational Autoencoders for Collaborative Filtering
[DL輪読会](Sequential) Variational Autoencoders for Collaborative FilteringDeep Learning JP
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 

More Related Content

What's hot

03 「重回帰分析」の入門
03 「重回帰分析」の入門03 「重回帰分析」の入門
03 「重回帰分析」の入門Shuhei Ichikawa
 
統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)Kota Mori
 
PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)Yasunori Ozaki
 
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -Akisato Kimura
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
ノンパラメトリックベイズ4章クラスタリング
ノンパラメトリックベイズ4章クラスタリングノンパラメトリックベイズ4章クラスタリング
ノンパラメトリックベイズ4章クラスタリング智文 中野
 
PsychoPy Builder:Code Componentの使い方
PsychoPy Builder:Code Componentの使い方PsychoPy Builder:Code Componentの使い方
PsychoPy Builder:Code Componentの使い方HiroyukiSogo
 
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法Ken'ichi Matsui
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)MasanoriSuganuma
 
FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)Haruka Ozaki
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)Masanori Yamada
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Shohei Taniguchi
 
中断時系列分析の書き方
中断時系列分析の書き方中断時系列分析の書き方
中断時系列分析の書き方Shuhei Ichikawa
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2hirokazutanaka
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説tancoro
 
PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装Shohei Taniguchi
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装takehikoihayashi
 

What's hot (20)

03 「重回帰分析」の入門
03 「重回帰分析」の入門03 「重回帰分析」の入門
03 「重回帰分析」の入門
 
統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)統計的学習の基礎 5章前半(~5.6)
統計的学習の基礎 5章前半(~5.6)
 
PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)PRMLの線形回帰モデル(線形基底関数モデル)
PRMLの線形回帰モデル(線形基底関数モデル)
 
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
ノンパラメトリックベイズ4章クラスタリング
ノンパラメトリックベイズ4章クラスタリングノンパラメトリックベイズ4章クラスタリング
ノンパラメトリックベイズ4章クラスタリング
 
PsychoPy Builder:Code Componentの使い方
PsychoPy Builder:Code Componentの使い方PsychoPy Builder:Code Componentの使い方
PsychoPy Builder:Code Componentの使い方
 
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)FDRの使い方 (Kashiwa.R #3)
FDRの使い方 (Kashiwa.R #3)
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)Reinforcement Learning(方策改善定理)
Reinforcement Learning(方策改善定理)
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)
 
中断時系列分析の書き方
中断時系列分析の書き方中断時系列分析の書き方
中断時系列分析の書き方
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
 
Triplet Loss 徹底解説
Triplet Loss 徹底解説Triplet Loss 徹底解説
Triplet Loss 徹底解説
 
PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 

Viewers also liked

K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介Takeshi Mikami
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてHiroshi Shimizu
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編Koichi Hamada
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話考司 小杉
 
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析hnisiji
 
エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方Hiroshi Shimizu
 
マハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いマハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いwada, kazumi
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装Hirokatsu Kataoka
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-Koichi Hamada
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Yasutomo Kawanishi
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門toilet_lunch
 
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』The Japan DataScientist Society
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0sleipnir002
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 

Viewers also liked (17)

K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
 
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
 
日本語形態素解析
日本語形態素解析日本語形態素解析
日本語形態素解析
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話
 
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
Tokyo r#10 Rによるデータサイエンス 第五章:クラスター分析
 
エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方エクセルで統計分析4 因子分析のやり方
エクセルで統計分析4 因子分析のやり方
 
マハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違いマハラノビス距離とユークリッド距離の違い
マハラノビス距離とユークリッド距離の違い
 
PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装PythonによるCVアルゴリズム実装
PythonによるCVアルゴリズム実装
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門
 
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例  〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
データサイエンティスト協会 木曜勉強会 #04 『クラスター分析の基礎と総合通販会社での活用例 〜 ビッグデータ時代にクラスター分析はどう変わるか 〜』
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 

Similar to 各言語の k-means 比較

ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介Takahiro Katagiri
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)Wataru Shito
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRShuyo Nakatani
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EETaiichilow Nagase
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...Toru Tamaki
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能MITSUNARI Shigeo
 
20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみようMidori Oge
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)智啓 出川
 
第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)Wataru Shito
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12thSatoshi Kume
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめgion_XY
 

Similar to 各言語の k-means 比較 (20)

ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介ソフトウェア自動チューニング研究紹介
ソフトウェア自動チューニング研究紹介
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
R -> Python
R -> PythonR -> Python
R -> Python
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう20131230_CloudStack Advent Calendar VPCを作ってみよう
20131230_CloudStack Advent Calendar VPCを作ってみよう
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
 
第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)第8回 大規模データを用いたデータフレーム操作実習(2)
第8回 大規模データを用いたデータフレーム操作実習(2)
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめ
 

More from y-uti

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法y-uti
 
Active Object
Active ObjectActive Object
Active Objecty-uti
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化y-uti
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門y-uti
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...y-uti
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードy-uti
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識y-uti
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今y-uti
 
スパース推定
スパース推定スパース推定
スパース推定y-uti
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告y-uti
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用y-uti
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試したy-uti
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件y-uti
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告y-uti
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecationy-uti
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたy-uti
 

More from y-uti (20)

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
Active Object
Active ObjectActive Object
Active Object
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
スパース推定
スパース推定スパース推定
スパース推定
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみた
 

各言語の k-means 比較

  • 2. 自己紹介 名前 ◦ 内山 雄司 職業 ◦ エンジニア (プログラマ) 私的なアカウント ◦ Twitter @y__uti ◦ はてなブログ http://y-uti.hatenablog.jp 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 2
  • 3. 今日の発表内容 各言語の k-means を比較調査してみました ◦ MATLAB ◦ R ◦ Python いろいろと違いがありました 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 3
  • 4. 調査対象 MATLAB ◦ Statistics Toolbox の kmeans 関数 R ◦ stats パッケージの kmeans 関数 Python ◦ scikit-learn の KMeans クラス ◦ SciPy の kmeans 関数 ◦ SciPy の kmeans2 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 4
  • 5. MATLAB の k-means Statistics Toolbox (要購入) の kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 5 >> load fisheriris; >> [idx, C, sumd] = kmeans(meas, 3); >> idx' ans = 1 列から 18 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 19 列から 36 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 37 列から 54 列 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 (省略) 127 列から 144 列 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 145 列から 150 列 1 1 2 1 1 2 >> sum(sumd) ans = 78.8514
  • 6. R の k-means stats パッケージ (標準) の kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 6 > km <- kmeans(iris[,1:4], 3) > km$cluster [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 [37] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [73] 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1 [109] 1 1 1 1 1 2 2 1 1 1 1 2 1 2 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 [145] 1 1 2 1 1 2 > km$tot.withinss [1] 78.85144
  • 7. Python の k-means [1/3] scikit-learn の sklearn.cluster.KMeans クラス 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 7 >>> from sklearn import * >>> iris = datasets.load_iris() >>> kmeans = cluster.KMeans(n_clusters=3) >>> kmeans.fit(iris.data) >>> kmeans.labels_ array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2], dtype=int32) >>> km.inertia_ 78.940841426146164
  • 8. Python の k-means [2/3] SciPy の scipy.cluster.vq.kmeans 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 8 >>> from scipy.cluster.vq import * >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> [codebook, distortion] = kmeans(iris.data, 3) >>> codebook array([[ 5.006 , 3.418 , 1.464 , 0.244 ], [ 5.9016129 , 2.7483871 , 4.39354839, 1.43387097], [ 6.85 , 3.07368421, 5.74210526, 2.07105263]]) >>> distortion 0.64883949489533388 ◦ クラスタの番号を戻さない
  • 9. Python の k-means [3/3] SciPy の scipy.cluster.vq.kmeans2 関数 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 9 >>> from scipy.cluster.vq import * >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> [centroid, label] = kmeans2(iris.data, 3) >>> centroid array([[ 5.885 , 2.74 , 4.37666667, 1.41833333], [ 5.006 , 3.418 , 1.464 , 0.244 ], [ 6.8275 , 3.07 , 5.7 , 2.0625 ]]) >>> label array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0])
  • 10. 比較結果 基本的な引数 戻り値 オプション ◦ 終了条件・実行回数 ◦ セントロイドの初期配置 ◦ 反復アルゴリズム ◦ 距離関数 ◦ 空クラスタ発生時の挙動 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 10
  • 11. 基本的な引数 MATLAB R sklearn SciPy-1 SciPy-2 データ ● ● ● ● ● クラスタ数 ● ● ○ (8) ● ● 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 11 ◦ 記号の意味 (この後のスライドで使う記号を含む) ◦ ● 必須 ◦ ◎ 既定の項目 ◦ ○ 任意 (かっこ内の値は既定値) ◦ - 該当する設定項目なし
  • 12. 戻り値 [1/2] MATLAB R sklearn SciPy-1 SciPy-2 クラスタラベル ○ ○ ○ - ○ セントロイド ○ ○ ○ ○ ○ 距離行列 ○ - - - - クラスタ内の合計距離 ○ ○ - - - の全クラスタ総和 - ○ ○ △ (注) - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 12 ◦ 距離行列について ◦ SciPy-1 各点からセントロイドへのユークリッド距離の平均を返す ◦ その他 二乗ユークリッド距離を用いる (平方根をとらない)
  • 13. 戻り値 [2/2] (R のみ) R others 各データから全データの重心への距離の総和 (totss) ○ - セントロイドから全データの重心への距離の 重み付け総和 (betweenss) ○ - 各クラスタのデータ数 (size) ○ - 実行された反復回数 (iter) ○ - エラーコード (ifault) ○ - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 13
  • 14. 終了条件・実行回数 MATLAB R sklearn SciPy-1 SciPy-2 最大反復回数 ○ (100) ○ (10) ○ (300) - ○ (10) 閾値 - - ○ (1e-4) ○ (1e-5) - k-means 実行回数 ○ (1) ○ (1) ○ (10) ○ (20) - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 14 ◦ 閾値 ◦ sklearn セントロイドの移動距離の二乗和が閾値未満になれば終了 ◦ SciPy-1 セントロイドからの距離の平均減少幅が閾値未満になれば終了
  • 15. セントロイドの初期配置 MATLAB R sklearn SciPy-1 SciPy-2 k-means++ ◎ - ◎ - - データ点からランダム ○ ◎ ○ ◎ ○ データ範囲から生成 ○ - - - ◎ 予備クラスタリング ○ - - - - ユーザ指定 ○ ○ ○ ○ ○ 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 15 ◦ データ範囲から生成 ◦ MATLAB データが存在する範囲の一様分布から ◦ SciPy-2 データの平均と共分散をパラメータとする正規分布から ◦ 予備クラスタリング ◦ データの 10% 標本で k-means を実行して決定 (その初期配置はデータ点からランダム)
  • 16. k-means++ セントロイドの初期配置の方法 ◦ データ点から k 個を選択する ◦ ただし「ランダムに k 個」選ぶのではない 選び方 ◦ 最初の一つ ◦ データ点の中から等確率で選ぶ ◦ 二番目以降 ◦ 「最も近いセントロイドとの距離の二乗」に応じた確率で選ぶ このように選ぶと ◦ クラスタ内距離の総和 𝜙 = 𝑥∈𝑋 min 𝑐∈𝐶 𝑥 − 𝑐 2 について ◦ 期待値が E 𝜙 ≤ 8 log 𝑘 + 2 𝜙opt で押さえられる …らしい 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 16
  • 17. 反復アルゴリズム MATLAB R sklearn SciPy-1 SciPy-2 Lloyd (Forgy) ◎ ○ ◎ ◎ ◎ MacQueen - ○ - - - Hartigan-Wong - ◎ - - - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 17 各アルゴリズムの特徴 (一部の論文 + R の実装より) ◦ Lloyd (Forgy) ◦ 各データをクラスタに割り当て。全データの割り当て後にセントロイドを更新 ◦ MacQueen ◦ 一つのデータをクラスタに割り当てるたびにセントロイドを更新 ◦ Hartigan-Wong ◦ 次のスライドで説明
  • 18. Hartigan-Wong の方法 以下の反復をクラスタ割り当てが変化しなくなるまで繰り返す For each 𝑥𝑖 ∈ 𝑋 ◦ 点 𝑥𝑖 を現在のクラスタから外す ◦ クラスタが 𝑥𝑖 ただ一点を含む場合は 𝑥𝑖 の処理をスキップする ◦ 次式を最小にするクラスタ 𝐶 𝑘 に 𝑥𝑖 を割り当てる Δ 𝑥𝑖, 𝐶 𝑘 = 𝑥 ∈ 𝐶 𝑘 𝑥 ∈ 𝐶 𝑘 + 1 ∙ 𝑥𝑖 − 𝑐 𝑘 2 このように計算すると ◦ Hartigan-Wong の局所解は Lloyd の局所解の真部分集合 …らしい 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 18
  • 19. 距離関数 (MATLAB のみ) MATLAB others 二乗ユークリッド距離 ◎ - マンハッタン距離 ○ - 1 - コサイン類似度 ○ - 1 - 標本相関 ○ - ハミング距離 ÷ 次元数 ○ - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 19
  • 20. 空クラスタ発生時の挙動 MATLAB R sklearn SciPy-1 SciPy-2 エラーとして停止 ○ ◎ - ◎ ○ 初期値を変えて再実行 - - - - ◎ クラスタ数を減らす ○ ◎ - - - 他のクラスタから奪う ◎ - ◎ - - 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 20 ◦ R の実装 ◦ Hartigan-Wong エラーとして停止 ◦ その他 クラスタ数を減らす ◦ 他のクラスタから奪う ◦ 全データの中でセントロイドからの距離が最大のものを見つける ◦ その点のみを含むクラスタを新たに生成する
  • 21. その他 細かなオプションはいろいろ・・・ ◦ オンライン更新 (MATLAB) ◦ 並列計算に関するオプション (MATLAB, scikit-learn) ◦ 計算中の詳細情報の表示 (各言語) 細かいので省略 終わり 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 21
  • 22. 参考 [1/6] MATLAB ドキュメンテーション - Statistics Toolbox ◦ k 平均クラスタリング ◦ http://jp.mathworks.com/help/stats/kmeans.html ◦ 標本データセット ◦ http://jp.mathworks.com/help/stats/_bq9uxn4.html The R Reference Index (PDF) ◦ http://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf ◦ 0624 ページ "Edgar Anderson's Iris Data" ◦ 1362 ページ "K-Means Clustering" ◦ いずれも Version 3.2.1 (2015-06-18) での情報 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 22
  • 23. 参考 [2/6] scikit-learn ◦ KMeans ◦ http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html ◦ The Iris Dataset ◦ http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html SciPy ◦ kmeans ◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans.html ◦ kmeans2 ◦ http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans2.html 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 23
  • 24. 参考 [3/6] Lloyd ◦ Lloyd, S. Least squares quantization in PCM. IEEE Transactions on Information Theory 28(2), 129–137, Mar 1982. [https://dx.doi.org/10.1109/TIT.1982.1056489] (有料) Forgy ◦ E.W. Forgy. Cluster analysis of multivariate data: efficiency versus interpretability of classifications. Biometrics 21: 768–769. 1965. (URL 不明) MacQueen ◦ MacQueen, J. Some methods for classification and analysis of multivariate observations. Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability, Volume 1: Statistics, 281–297, University of California Press, Berkeley, Calif., 1967. [http://projecteuclid.org/download/pdf_1/euclid.bsmsp/1200512992] Hartigan-Wong ◦ J. A. Hartigan and M. A. Wong. Algorithm AS 136: A K-Means Clustering Algorithm. Journal of the Royal Statistical Society. Series C (Applied Statistics), Vol. 28, No. 1 (1979), pp. 100-108. [http://www.jstor.org/stable/2346830] (有料) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 24
  • 25. 参考 [4/6] Hartigan-Wong の方法を説明している論文 ◦ Noam Slonim, Ehud Aharoni, Koby Crammer. Hartigan’s K-Means Versus Lloyd’s K-Means - Is It Time for a Change? IJCAI 2013. [http://ijcai.org/papers13/Papers/IJCAI13-249.pdf] ◦ Matus Telgarsky, Andrea Vattani. Hartigan’s Method: k-means Clustering without Voronoi. AISTATS 2010. [http://jmlr.csail.mit.edu/proceedings/papers/v9/telgarsky10a/telgarsky10a.pdf] k-means++ ◦ David Arthur and Sergei Vassilvitskii. 2007. k-means++: the advantages of careful seeding. In Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms (SODA ‘07). Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, 1027-1035. [http://dl.acm.org/citation.cfm?id=1283494] (有料) [http://ilpubs.stanford.edu:8090/778/] (同じタイトルのテクニカルレポート) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 25
  • 26. 参考 [5/6] 特に参考になったウェブ上の情報 ◦ k-means return value in R ◦ http://stackoverflow.com/questions/8637460/k-means-return-value-in-r ◦ kmeans 関数の 'singleton' オプション ◦ http://d.hatena.ne.jp/nthrn/20081025/1224901102 ◦ what’s the implementation of SciKit-Learn K-Means for empty clusters? ◦ http://stats.stackexchange.com/questions/152333/whats-the-implementation-of-scikit- learn-k-means-for-empty-clusters 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 26
  • 27. 参考 [6/6] R のソースコード ◦ http://cran.rstudio.com/src/base/R-3/R-3.2.1.tar.gz k-means の実装 ◦ R の関数 ◦ R-3.2.1/src/library/stats/R/kmeans.R ◦ アルゴリズムごとに C または FORTRAN の関数が呼ばれる (26-63 行目の switch 文) 2015/06/30 第10回「続・わかりやすいパターン認識」読書会 27 アルゴリズム ファイル 行番号・関数名 Lloyd-Forgy R-3.2.1/src/library/stats/src/kmeans.c 25~ 73 行目 kmeans_Lloyd MacQueen R-3.2.1/src/library/stats/src/kmeans.c 75~146 行目 kmeans_MacQueen Hartigan-Wong R-3.2.1/src/library/stats/src/kmns.f (全体)