SlideShare a Scribd company logo
各言語の 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
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
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
◦ クラスタの番号を戻さない
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])
比較結果
基本的な引数
戻り値
オプション
◦ 終了条件・実行回数
◦ セントロイドの初期配置
◦ 反復アルゴリズム
◦ 距離関数
◦ 空クラスタ発生時の挙動
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 10
基本的な引数
MATLAB R sklearn SciPy-1 SciPy-2
データ ● ● ● ● ●
クラスタ数 ● ● ○ (8) ● ●
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 11
◦ 記号の意味 (この後のスライドで使う記号を含む)
◦ ● 必須
◦ ◎ 既定の項目
◦ ○ 任意 (かっこ内の値は既定値)
◦ - 該当する設定項目なし
戻り値 [1/2]
MATLAB R sklearn SciPy-1 SciPy-2
クラスタラベル ○ ○ ○ - ○
セントロイド ○ ○ ○ ○ ○
距離行列 ○ - - - -
クラスタ内の合計距離 ○ ○ - - -
の全クラスタ総和 - ○ ○ △ (注) -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 12
◦ 距離行列について
◦ SciPy-1 各点からセントロイドへのユークリッド距離の平均を返す
◦ その他 二乗ユークリッド距離を用いる (平方根をとらない)
戻り値 [2/2] (R のみ)
R others
各データから全データの重心への距離の総和 (totss) ○ -
セントロイドから全データの重心への距離の
重み付け総和 (betweenss)
○ -
各クラスタのデータ数 (size) ○ -
実行された反復回数 (iter) ○ -
エラーコード (ifault) ○ -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 13
終了条件・実行回数
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 セントロイドからの距離の平均減少幅が閾値未満になれば終了
セントロイドの初期配置
MATLAB R sklearn SciPy-1 SciPy-2
k-means++ ◎ - ◎ - -
データ点からランダム ○ ◎ ○ ◎ ○
データ範囲から生成 ○ - - - ◎
予備クラスタリング ○ - - - -
ユーザ指定 ○ ○ ○ ○ ○
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 15
◦ データ範囲から生成
◦ MATLAB データが存在する範囲の一様分布から
◦ SciPy-2 データの平均と共分散をパラメータとする正規分布から
◦ 予備クラスタリング
◦ データの 10% 標本で k-means を実行して決定 (その初期配置はデータ点からランダム)
k-means++
セントロイドの初期配置の方法
◦ データ点から k 個を選択する
◦ ただし「ランダムに k 個」選ぶのではない
選び方
◦ 最初の一つ
◦ データ点の中から等確率で選ぶ
◦ 二番目以降
◦ 「最も近いセントロイドとの距離の二乗」に応じた確率で選ぶ
このように選ぶと
◦ クラスタ内距離の総和 𝜙 = 𝑥∈𝑋 min 𝑐∈𝐶 𝑥 − 𝑐 2 について
◦ 期待値が E 𝜙 ≤ 8 log 𝑘 + 2 𝜙opt で押さえられる …らしい
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 16
反復アルゴリズム
MATLAB R sklearn SciPy-1 SciPy-2
Lloyd (Forgy) ◎ ○ ◎ ◎ ◎
MacQueen - ○ - - -
Hartigan-Wong - ◎ - - -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 17
各アルゴリズムの特徴 (一部の論文 + R の実装より)
◦ Lloyd (Forgy)
◦ 各データをクラスタに割り当て。全データの割り当て後にセントロイドを更新
◦ MacQueen
◦ 一つのデータをクラスタに割り当てるたびにセントロイドを更新
◦ Hartigan-Wong
◦ 次のスライドで説明
Hartigan-Wong の方法
以下の反復をクラスタ割り当てが変化しなくなるまで繰り返す
For each 𝑥𝑖 ∈ 𝑋
◦ 点 𝑥𝑖 を現在のクラスタから外す
◦ クラスタが 𝑥𝑖 ただ一点を含む場合は 𝑥𝑖 の処理をスキップする
◦ 次式を最小にするクラスタ 𝐶 𝑘 に 𝑥𝑖 を割り当てる
Δ 𝑥𝑖, 𝐶 𝑘 =
𝑥 ∈ 𝐶 𝑘
𝑥 ∈ 𝐶 𝑘 + 1
∙ 𝑥𝑖 − 𝑐 𝑘
2
このように計算すると
◦ Hartigan-Wong の局所解は Lloyd の局所解の真部分集合 …らしい
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 18
距離関数 (MATLAB のみ)
MATLAB others
二乗ユークリッド距離 ◎ -
マンハッタン距離 ○ -
1 - コサイン類似度 ○ -
1 - 標本相関 ○ -
ハミング距離 ÷ 次元数 ○ -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 19
空クラスタ発生時の挙動
MATLAB R sklearn SciPy-1 SciPy-2
エラーとして停止 ○ ◎ - ◎ ○
初期値を変えて再実行 - - - - ◎
クラスタ数を減らす ○ ◎ - - -
他のクラスタから奪う ◎ - ◎ - -
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 20
◦ R の実装
◦ Hartigan-Wong エラーとして停止
◦ その他 クラスタ数を減らす
◦ 他のクラスタから奪う
◦ 全データの中でセントロイドからの距離が最大のものを見つける
◦ その点のみを含むクラスタを新たに生成する
その他
細かなオプションはいろいろ・・・
◦ オンライン更新 (MATLAB)
◦ 並列計算に関するオプション (MATLAB, scikit-learn)
◦ 計算中の詳細情報の表示 (各言語)
細かいので省略
終わり
2015/06/30 第10回「続・わかりやすいパターン認識」読書会 21
参考 [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
参考 [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
参考 [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
参考 [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
参考 [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
参考 [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 (全体)

More Related Content

What's hot

勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
Masahiro Suzuki
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
sleepy_yoshi
 
帰納バイアスが成立する条件
帰納バイアスが成立する条件帰納バイアスが成立する条件
帰納バイアスが成立する条件
Shinobu KINJO
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
Deep Learning JP
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
 
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
TalkingData AdTracking  Fraud Detection Challenge (1st place solution)TalkingData AdTracking  Fraud Detection Challenge (1st place solution)
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
Takanori Hayashi
 
社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
Masashi Komori
 
ELBO型VAEのダメなところ
ELBO型VAEのダメなところELBO型VAEのダメなところ
ELBO型VAEのダメなところ
KCS Keio Computer Society
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
Deep Learning JP
 
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
Shotaro Sano
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
Deep Learning JP
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
Keisuke Sugawara
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
Deep Learning JP
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
Masa Kato
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
nishio
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
tmtm otm
 

What's hot (20)

勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
 
帰納バイアスが成立する条件
帰納バイアスが成立する条件帰納バイアスが成立する条件
帰納バイアスが成立する条件
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
TalkingData AdTracking  Fraud Detection Challenge (1st place solution)TalkingData AdTracking  Fraud Detection Challenge (1st place solution)
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
 
社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
 
ELBO型VAEのダメなところ
ELBO型VAEのダメなところELBO型VAEのダメなところ
ELBO型VAEのダメなところ
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
 
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
 
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 

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
 
日本語形態素解析
日本語形態素解析日本語形態素解析
日本語形態素解析
Yoshihiro Shimoji
 
距離と分類の話
距離と分類の話距離と分類の話
距離と分類の話
考司 小杉
 
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でクラウドセットアップ時間を分析してみたら #TokyoR
Shuyo Nakatani
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
Tetsuya Hasegawa
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
Toshi Harada
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
R -> Python
R -> PythonR -> Python
R -> Python
Kazufumi Ohkawa
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
Taiichilow 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#8
Kohei KaiGai
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
Toshi 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 - LT
Kohei KaiGai
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
Satoshi 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 Object
y-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" Deprecation
y-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 で拡張モジュールをビルドしてみた
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 

Recently uploaded (14)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 

各言語の 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 (全体)