大規模データ解析応用事例
8. クラスタリングと分類分析1
情報工学部 知能情報工学科 田中宏和
講義スケジュール
1. 講義概要 & MATLAB入門
2. 行列分解1:特異値分解、行列近似、最小二乗法、擬逆行列
3. 行列分解2:主成分分析、固有顔、次元打ち切り、ランダム化SVD
4. スパース性と圧縮センシング1:フーリエ変換、圧縮センシング
5. スパース性と圧縮センシング2:スパース回帰、スパース分類、RPCA
6. 回帰分析とモデル選択1:線形回帰、非線形回帰、数値最適化
7. 回帰分析とモデル選択2:モデル選択、交差検証法、情報量基準
8. クラスタリングと分類分析1:特徴抽出、クラスタリング法
9. クラスタリングと分類分析2:教師あり学習、分類分析
10. ニューラルネットワーク1:パーセプトロン、誤差逆伝播法
11. ニューラルネットワーク2:確率勾配法、深層ネットワーク
12. 発展学習:神経データ解析
クラスタリングと分類分析1
5.1 Feature Selection and Data Mining
5.2 Supervised versus Unsupervised Learning
5.3 Unsupervised Learning: k-means
5.4 Unsupervised Hierarchical Clustering
5.5 Mixture Models and the EM algorithm
5.6 Supervised Learning and Linear
Discrimination
5.7 Support Vector Machines (SVM)
5.8 Classification Trees and Random Forest
5.9 Top 10 Algorithms in Data Mining 2008
クラスタリングと分類分析1
% 5.1 Feature Selection and Data Mining
CH05_SEC01_1_FischerExtraction.m
CH05_SEC01_1_FischerExtraction_production.m
% 5.2 Supervised versus Unsupervised Learning
CH05_SEC02_1_Fig5p7_Fig5p8.m
% 5.3 Unsupervised Learning: k-means
CH05_SEC03_1_Kmeans.m
CH05_SEC03_1_Kmeans_production.m
% 5.4 Unsupervised Hierarchical Clustering
CH05_SEC04_1_Dendrogram.m
CH05_SEC04_1_Dendrogram_production.m
% 5.5 Mixture Models and EM algorithm
CH05_SEC05_1_GaussianMixtureModels.m
% 5.6 Supervised Learning and LDA
CH05_SEC06_1_LDA_Classify.m
% 5.7 Support Vector Machine
CH05_SEC07_1_SVM.m
% 5.8 Classification Trees and Random Forest
CH05_SEC08_1_Trees.m
CH05_SEC08_1_Trees_production.m
【本日の内容】クラスタリングと分類分析1
1. 特徴量選択とデータマイニング
- 低次元の場合:アヤメデータセット
- 高次元の場合:主成分分析による特徴抽出
2. 教師あり学習と教師なし学習
- 学習のパラダイムとその代表例
3. 教師なし学習:k-平均クラスタリング
4. 教師なし学習:階層的クラスタリング
5. 混合モデルとEMアルゴリズム
特徴選択とデータマイニング
データマイニングと機械学習の目的
与えられたデータセットから、低次元(=低ランク)かつ解釈可能な
特徴空間を構築すること
→ 特徴抽出(feature extraction)
例:固有顔(Eigenface)
(フロベニウスノルムの意味で)誤差を最小化するr-個からなる特徴空
間(ランクr-行列)
特徴選択とデータマイニング
https://archive.ics.uci.edu/ml/datasets/iris
アヤメ データセット
• ヒオウギアヤメ(setosa)、ブルーブラック(versicolor)、virginica、
それぞれ50サンプルのデータ
• 三品種に関して以下の4つの特徴量
萼の長さ(sepal length)、萼の幅(sepal width)、花弁の長さ(petal
length)、花弁の幅(petal width)
>> load fisheriris;
>> meas(1:5,:) % 150*4 データ行列
ans =
5.1000 3.5000 1.4000 0.2000
4.9000 3.0000 1.4000 0.2000
4.7000 3.2000 1.3000 0.2000
4.6000 3.1000 1.5000 0.2000
5.0000 3.6000 1.4000 0.2000
>> species(1:5) % 150*1 セル(ラベル )
ans =
5×1 cell array
{'setosa'}
{'setosa'}
{'setosa'}
{'setosa'}
{'setosa'}
特徴選択とデータマイニング
萼の長さ(cm)
花弁の長さ(cm)
萼の幅(cm)
• setosaと他の二種は萼の長さで弁別
できる。
• versicolorとvirginicaは花弁の長さで
弁別できる。
• データが比較的低次元(この場合4次元)
• クラスを特徴づける量を見出すのはそれほど難しくない。
主成分分析による特徴抽出:原画像
CH05_SEC01_1_FischerExtraction.m
イヌ画像80枚 ネコ画像80枚
%%
load dogData.mat; % イヌ画像80枚
load catData.mat; % ネコ画像80枚
CD=double([dog cat]); % 4096*160行列
% 特異値分解で特徴抽出
[u,s,v]=svd(CD-mean(CD(:)),'econ');
問題点
各画像データは64×64=4096次元
→ 低次元の特徴量を見つける必要
特異値分解による特徴量抽出(復習)
1x 2x mx 1u 1v
1σ= 2u 2v
2σ mu mv
mσ+ + +
2 21 1 1 2 m m mσ σ σ+= = + +X ΣU u v u v u vV    
, , ,n m n m m m m m× × × ×
∈ ∈ ∈ ∈X ΣU V   

特異値分解による特徴量抽出(復習)
1x 2x mx 1u 1v
1σ= 2u 2v
2σ mu mv
mσ+ + +
1x 1u1σ 11v 2u2σ 12v 1u1σ 1mv+ + +=
x1 だけ取り出す
• x1は左特異ベクトル の重み付
け和として書ける
• その重み付け係数は行列Vの成分
• すなわち、重み付け係数を指定
することで、データx1を表現する
ことができる。
{ }1u
{ }11 12 1, , , mv v v

特異値分解による特徴量抽出(復習)
1x 1u1σ 11v 2u2σ 12v 1u1σ 1mv+ + += ≈ 1u1σ 11v rurσ 1rv+ +
( )11 1, , r
rvv ∈ 

( )11 1, , m
mvv ∈ 

1
n
∈x 
データ 特異値分解の係数 低次元近似
特異値分解による特徴量抽出(復習)
1x 2x mx = n m×U m m×Σ ( )m m×
V
n r×U
r r×Σ ( )r m×
V 
≈
>> [U, S, V] = svd(X, 'econ');
>> Utilde = U(:,1:r);
Vtilde = V(:,1:r);
Stilde = S(1:r,1:r);
主成分分析による特徴抽出:原画像
CH05_SEC01_1_FischerExtraction.m
イヌ画像80枚 ネコ画像80枚
%%
load dogData.mat; % イヌ画像80枚
load catData.mat; % ネコ画像80枚
CD=double([dog cat]); % 4096*160行列
% 特異値分解で特徴抽出
[u,s,v]=svd(CD-mean(CD(:)),'econ');
問題点
各画像データは64×64=4096次元
→ 低次元の特徴量を見つける必要
主成分分析による特徴抽出:原画像
PC1
PC2
PC3
PC4
イヌ画像80枚 ネコ画像80枚
主成分分析による特徴抽出:ウェーブレット変換画像
load dogData_wave.mat
load catData_wave.mat
CD2=double([dog_wave cat_wave]);
CH05_SEC01_1_FischerExtraction.m
イヌ画像80枚 ネコ画像80枚
主成分分析による特徴抽出:ウェーブレット変換画像
PC1
PC2
PC3
PC4
イヌ画像80枚 ネコ画像80枚
主成分分析による特徴抽出:原画像とウェーブレット変換画像の比較
原画像の主成分 ウェーブレット変換画像の主成分
ここで演習
• 特徴量抽出のコードCH05_SEC01_1_FischerExtraction_production.mを走らせてみま
しょう。
- アヤメのデータに関して、1, 2, 4方向以外での3次元プロットを描いてみましょう。
plot3(x1(:,1),x1(:,2),x1(:,4),'ro','Linewidth',[1],'MarkerEdgeColor','k','MarkerFaceColor',[0 1 0.2],'MarkerSize',8), hold on
plot3(x2(:,1),x2(:,2),x2(:,4),'bo','Linewidth',[1],'MarkerEdgeColor','k','MarkerFaceColor',[0.9 0 1],'MarkerSize',8)
plot3(x3(:,1),x3(:,2),x3(:,4),'bo','Linewidth',[1],'MarkerEdgeColor','k','MarkerFaceColor',[1 0.64 0.098],'MarkerSize',8)
- ネコのデータに関して、1, 2, 3方向以外での3次元プロットを描いてみましょう。
plot3(v(1:80,1),v(1:80,2),v(1:80,3),'ro','Linewidth',[1],
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0 0 1],...
'MarkerSize',8), hold on % [0.49 1 .63]
plot3(v(81:end,1),v(81:end,2),v(81:end,3),'bo','Linewidth
',[1],'MarkerEdgeColor','k',...
'MarkerFaceColor',[1 0 0],...
'MarkerSize',8)
入力 出力
教師なし学習
入力のみが与えられた
際の学習
入力 出力
報酬強化学習
出力に対する報酬が与
えられた際の学習
入力 出力
正解出力
誤差
+
―
教師あり学習
入力に対する正解出力
(教師信号)が与えら
れた際の学習 ( )⋅f
( )⋅f
( )⋅f
教師あり学習・教師なし学習・強化学習
教師あり学習:教師信号(正解)から学ぶ学習
入力 出力
正解出力
誤差
+
―
教師あり学習
入力に対する正解出力(教師信号)
が与えられた際の学習
訓練データ:入力xと正解出力 の組
( ) ( ) ( )21 21
,ˆ ˆ ˆ, , , , ,P P
x y x y x y
目的:任意の入力xに対する出力yの関数f
( ),=y f x W
( ),f x W
x y
ˆy
ˆy
教師あり学習:教師信号(正解)から学ぶ学習
入力
データ
ラベル
{ }{ }1, ,2, ,n
j Z mj∈ ∈ =x  
{ }{ },1j Zj Z′∈ ± ∈ ⊂y
{ }{ }1 ,j Zj∈ ± ∈y
出力
ラベル
クラス+1
クラスー1
ラベル無し
クラス+1
クラスー1
教師なし学習:入力データの統計性から学ぶ学習
入力 出力
教師なし学習
入力のみが与えられた際の学習
訓練データ:入力xの組
21
, , , P
x x x
目的:(高次元)入力xに対する(低次元)出力yの関数f
( ),=y f x W
( ),f x W
x y
教師なし学習:入力データの統計性から学ぶ学習
入力
データ { }{ }1, ,2, ,n
j Z mj∈ ∈ =x  
{ }{ }1 ,j Zj∈ ± ∈y
出力
ラベル
クラス+1
クラスー1
教師あり学習・教師なし学習の例
教師あり学習
• 分類問題
• 回帰問題
教師なし学習
• クラスタリング(k-平均法、階層クラスタリング、混合モデル)
• 次元縮約(特異値分解、主成分分析)
• 特徴抽出(独立成分分析、非負行列因子分解)
• 多様体学習(多次元尺度更生法、ISOmap, Locally Linear Embedding)
• 外れ値検出
クラスタリングの手法
• k-平均クラスタリング法(k-means clustering)
直観的で使いやすい、広く使われている方法
クラスタ毎に分布が異なる場合に問題
MATLABコマンド: kmeans
• 階層的クラスタリング法(hierarchical clustering)
局所的な距離に基づくクラスタリング法
MATLABコマンド: linkage, dendrogram, cluster
• ガウシアン混合モデル(Gaussian mixture model)
混合分布に基づくクラスタリング法
EMアルゴリズムによる推定
情報量基準によるクラスタ数の系統的な決定
MATLABコマンド: fitgmdist
教師なし学習の例:クラスタリング問題
k-平均クラスタリング法(Lloyd アルゴリズム (1957))
以下の評価関数を最小にするように、データ をk-個のクラスターに分割する
1
2
ji
i j
D
k
j ∈=
−∑∑ μx
1. 【クラスター分けの更新】各データ点のラベルを、一番近い平均値のものに決める。
2. 【クラスタ平均値の更新】j番目のクラスターに属するデータ点の集合をDjとしたとき、
各クラスの平均値を更新する。
arg mini i j
j
j = −x μ
1
j
j i
DijD ∈
= ∑xμ
{ }ix
教師なし学習の例:クラスタリング問題
k-平均クラスタリング法(Lloyd アルゴリズム (1957))
初期化: k個のクラスタリング平均値をランダムにとる
1. 各データ点のラベルを、一番近い平均値のものに決める。
2. ステップ1でつけたラベルに従い、各クラスの平均値を更新する。
3. ラベルと平均値が収束するまで、ステップ1とステップ2を繰り返す。
+
+
+
+
+
+
+
+
+ +
教師なし学習:k-平均クラスタリング(k-means clustering)
k-平均法の成功例:2クラスの分散が等しいとき
CH05_SEC03_1_Kmeans_production.m
教師なし学習:k-平均クラスタリングの問題点
k-平均法の失敗例:2クラスの分散が異なるとき
k-平均法では、2クラスの分散(ばらつき)が等しいと暗に仮定
→ 分散が異なるデータに適用すると、うまく働かない場合もある
CH05_SEC03_1_Kmeans_production.m
教師なし学習:k-平均クラスタリング(k-means clustering)
k-平均法:MATLABコード CH05_SEC03_1_Kmeans_production.m
% kmeans code
>> [ind,c]=kmeans(Y,2); % データ行列Yをk=2クラスにクラスタリング
>> Y(1:10,:)
ans =
2.3370 -0.6895
2.9929 0.0962
2.9980 -0.0764
2.0982 -0.6789
1.7131 -1.0508
1.0304 -1.3045
2.0875 -0.2267
3.6068 1.0786
2.7084 0.1866
2.4458 -0.7135
>> c
c =
2.1698 -0.5501
-0.1829 -0.0536
>> ind(1:10)
ans =
1
1
1
1
1
1
1
1
1
1
データ1
データ2
データ3
150のデータ点
クラス1の重心位置
クラス2の重心位置
150のデータ点に対応するクラスラベル
k-平均クラスタリング:画像処理の例
clear all; clc; close all;
x = imread(‘../data/dog.jpg'); % load the image
[nx,ny,~] = size(x); % image size
figure(1); imshow(x);
X = squeeze(reshape(x,nx*ny,1,3)); % vectorize the image
X = double(X); % convert into double type
% k-means clustering
K = 10;
[idx, means] = kmeans(X, K);
% replace the color with the mean value of the cluster
X1 = zeros(size(X));
for k=1:K
X1(idx==k,:) = repmat(means(k,:),sum(idx==k),1);
end
X1 = reshape(X1,nx,ny,3); % matricize the vector
X1 = uint8(X1); % convert into integer type
figure(2); imshow(X1);
demo_Kmeans_Image.m (WebClassにあります)
ここで演習
• k-平均法のコードCH05_SEC03_1_Kmeans_production.mを走らせてみましょう。コー
ドを書き換えて、共分散行列が等しい場合にk-平均法がどのように動くか、見てみ
ましょう。
% random ellipse 1 centered at (0,0)
x=randn(n1+n2,1); y=0.5*randn(n1+n2,1);
% random ellipse 2 centered at (1,-2) and rotated by theta
x2=randn(n1+n2,1)+1; y2=0.2*randn(n1+n2,1)-2; theta=pi/4;
A=[cos(theta) -sin(theta); sin(theta) cos(theta)];
x3=A(1,1)*x2+A(1,2)*y2; y3=A(2,1)*x2+A(2,2)*y2;
% random ellipse 1 centered at (0,0)
x=randn(n1+n2,1)-2.2; y=0.5*randn(n1+n2,1);
x3=randn(n1+n2,1)+2.2; y3=0.5*randn(n1+n2,1);
共分散行列が異なる場合(もともとのコード) 共分散行列が等しい場合
• 画像処理のコードdemo_Kmeans_Image.m(WebClassにあります)を実行してみま
しょう。
教師なし階層クラスタリング:デンドログラム
階層クラスタリング:凝縮型(agglomerative)のアプローチ
- 最近接のデータ対を逐次的にまとめて(凝縮)いく方法
- まとめた結果をデンドログラム(樹形図)として表示
デンドログラム
(dendrogram)
(1) すべてのデータ対の距離を計算
する
(2) 最も近い対を見つけ、それを一
つにまとめる
教師なし階層クラスタリング
Y3=[X1(1:50,:); X2(1:50,:)];
Y2 = pdist(Y3,'euclidean'); % pairwise distance
Z = linkage(Y2,'average'); % hierarchical clustering
figure(1);
thresh = 0.85*max(Z(:,3));
[H, T, O] = dendrogram(Z, 100,
'ColorThreshold',thresh);
axis off square;
figure(2);
thresh = 0.25*max(Z(:,3));
[H, T, O] = dendrogram(Z,100,'ColorThreshold',thresh);
axis off square;
CH05_SEC04_1_Dendrogram_production.m
>> Y2(1:10)
ans =
Columns 1 through 7
0.9408 0.3609 0.7604 0.3216 1.5054
1.3019 0.6734
Columns 8 through 10
0.7518 1.3065 0.3372
>> Z(1:10,:)
ans =
26.0000 27.0000 0.0248
3.0000 42.0000 0.0266
19.0000 43.0000 0.0375
7.0000 10.0000 0.0421
62.0000 94.0000 0.0425
1.0000 46.0000 0.0475
38.0000 48.0000 0.0476
11.0000 36.0000 0.0665
16.0000 31.0000 0.0681
8.0000 22.0000 0.0708
すべてのデータ対間の距離
階層クラスタリングの情報
教師なし階層クラスタリング:デンドログラム
Y3=[X1(1:50,:); X2(1:50,:)];
Y2 = pdist(Y3,'euclidean'); % pairwise distance
Z = linkage(Y2,'average'); % hierarchical clustering
figure(1);
thresh = 0.85*max(Z(:,3));
[H, T, O] = dendrogram(Z, 100,
'ColorThreshold',thresh);
axis off square;
figure(2);
thresh = 0.25*max(Z(:,3));
[H, T, O] = dendrogram(Z,100,'ColorThreshold',thresh);
axis off square;
CH05_SEC04_1_Dendrogram_production.m
閾値=0.85
閾値=0.25
教師なし階層クラスタリング
Y3=[X1(1:50,:); X2(1:50,:)];
Y2 = pdist(Y3,'euclidean'); % pairwise distance
Z = linkage(Y2,'average'); % hierarchical clustering
figure(4); clf; hold on;
t = cluster(Z,2);
plot(Y3(t==1,1),Y3(t==1,2),'ro','Linewidth',[1],'MarkerEdgeColor','k',...
'MarkerFaceColor',[0 1 0.2],...
'MarkerSize',8), hold on % [0.49 1 .63]
plot(Y3(t==2,1),Y3(t==2,2),'bo','Linewidth',[1],'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9 0 1],...
'MarkerSize',8)
CH05_SEC04_1_Dendrogram_production.mの追記
教師なし階層クラスタリングの問題点
成功例:二つのクラスタにギャップがある場合
失敗例:二つのクラスタにギャップがない場合
階層クラスタリングの問題点:局所的な特徴量(データ対の距離)によりクラスタリングするため、データ点の位
置の少しの変化でクラスタリングの結果が変わりやすい。
ここで演習
• 階層的クラスタリングのコードCH05_SEC04_1_Dendrogram_production.mを走らせて
みましょう。
以下のコードを追記して、階層クラスタリングを図示してみましょう。
figure(4); clf; hold on;
t = cluster(Z,2);
plot(Y3(t==1,1),Y3(t==1,2),'ro','Linewidth',[1],'MarkerEdgeColor','k',...
'MarkerFaceColor',[0 1 0.2],...
'MarkerSize',8), hold on % [0.49 1 .63]
plot(Y3(t==2,1),Y3(t==2,2),'bo','Linewidth',[1],'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9 0 1],...
'MarkerSize',8)
混合モデルとExpectation-Maximizationアルゴリズム
ガウシアン混合モデル(Gaussian Mixture Model)によるクラスタリング
• データの生成過程をガウシアン混合モデルとしてモデル化
• ガウシアン混合モデル
- 確率分布のモデルで、いくつかの正規分布(ガウシアン分布)の重みづけ和
• Expectation-Maximizationアルゴリズム
- 混合モデルのパラメタ推定法。
- データに欠損値がある場合の最尤法。
ガウシアン混合モデル:1次元の例
ガウシアン混合モデル:確率分布のモデルで、いくつかの正規分布(ガウシアン分
布)の重みづけ和
( ) ( )
1
; ,k
K
k
k kp α
=
= ∑ x μ Σx 
x = linspace(-4,4,201);
alpha1 = 0.2; n1 = normpdf(x, -2, 0.25);
alpha2 = 0.2; n2 = normpdf(x, -0.3, 1);
alpha3 = 0.6; n3 = normpdf(x, 1, 0.5);
p = alpha1*n1 + alpha2*n2 + alpha3*n3;
figure(1); clf; hold on;
plot(x, alpha1*n1, 'r--');
plot(x, alpha2*n2, 'g--');
plot(x, alpha3*n3, 'b--');
plot(x, p, 'k');
例:一次元正規分布、K=3の場合
( )2
1 1; ,x µ σ
( )2
1 1; ,x µ σ
( )2
1 1; ,x µ σ
ガウシアン混合モデル:2次元の例
ガウシアン混合モデル:確率分布のモデルで、いくつかの正規分布(ガウシアン分
布)の重みづけ和
( ) ( )
1
; ,k
K
k
k kp α
=
= ∑ x μ Σx 
例:2次元正規分布、K=3の場合
= α1 +α2 +α3
( )1 1; ,x μ Σ ( )2 2; ,x μ Σ ( )3 3; ,x μ Σ( )p x
ガウシアン混合モデルからの標本生成
ガウシアン混合モデルからの標本生成
混合係数
正規分布のパラメタ
{ }kα
{ },k kμ Σ
N個の標本(サンプル点){ } 1
N
i i=
x
( ) ( )
1
; ,k
K
k
k kp α
=
= ∑ x μ Σx  { } 1
N
i i=
x
alpha1 = 0.3;
alpha2 = 0.4;
alpha3 = 0.3;
mu1 = [-2 0];
mu2 = [ 1.5 -1];
mu3 = [ 0 +1];
Sigma1 = [1.2500 -0.4330; -0.4330 1.7500];
Sigma2 = [1.7500 0.4330; 0.4330 1.2500];
Sigma3 = [1 0; 0 1];
Sigma = zeros(2,2,3);
Sigma(:,:,1) = Sigma1;
Sigma(:,:,2) = Sigma2;
Sigma(:,:,3) = Sigma3;
mu = [mu1; mu2; mu3];
alpha = [alpha1 alpha2 alpha3];
gm = gmdistribution(mu, Sigma, alpha);
x = gm.random(3000);
Expectation-Maximizationアルゴリズム:混合モデルのパラメタ推定
( ) ( )1
ˆˆ ˆ;ˆ ,k k k
K
k
p α
=
= ∑ x μ Σx { } 1
N
i i=
x
Expectation-Maximization (EM) アルゴリズム
データから混合モデルのパラメタを推定
N個の標本(サンプル点){ } 1
N
i i=
x
混合係数
正規分布のパラメタ
{ }ˆkα
{ }ˆˆ ,k kμ Σ
options = statset('MaxIter',1000);
fm = fitgmdist(x,3, 'options', options);
Expectation-Maximizationアルゴリズム:混合モデルのパラメタ推定
Expectation-Maximization (EM) アルゴリズム
E-ステップ
現在(m回目)のパラメタ を用いて、サンプル点 xj がクラスkに
属する事後確率を計算
M-ステップ
上記の事後確率を用いて、パラメタを更新
( ) ( )
{ } ( )
{ } ( )
{ }( ), ,
m m m m
k k kα=Θ μ Σ
( )
( )
( ) ( ) ( )
( )
( )
( )
; ,
;
m m m
k k km
k m
j
j
j
α
τ =
x μ Σ
x Θ
x


( ) ( )
( )
( )
( )
( )
( )
( )
( )
( )
( ) ( )
( ) ( )
( )
( )
( )
1
1
1 1
1
1 1
11
1
1
j
j
n
m m
k k
j
n m
km j
k n m
kj
n m m m
j
k k kjm
k n
j
j
j j j
m
kj
n
α τ
τ
τ
τ
τ
+
=
+ =
=
+ +
=+
=
=
=
− −
=
∑
∑
∑
∑
∑
x
x
x
x
x
x
μ
x μ x μ
Σ

( ) ( )
{ } ( )
{ } ( )
{ }( ) ( ) ( )
{ } ( )
{ } ( )
{ }( )1 1 1 1
, , , ,m m m m m m m m
k k k k k kα α+ + + +
= =→Θ μ Σ Θ μ Σ
混合モデルとExpectation-Maximizationアルゴリズム
CH05_SEC05_1_GaussianMixtureModels.m
イヌ
ネコ
load catData_w.mat; % ネコ画像データ(ウェーブレット変換)
load dogData_w.mat; % イヌ画像データ(ウェーブレット変換)
CD = [dog_wave cat_wave];
[u,s,v] = svd(CD-mean(CD(:))); % 特異値分解
dogcat = v(:,2:2:4); % 特徴量として主成分2と4を採用
GMModel = fitgmdist(dogcat,2); % ① 混合ガウスモデルでフィット
AIC = GMModel.AIC; % モデルのAICを計算
estimatedLabels = cluster(GMModel, dogcat); % ② クラスを推定
① 混合ガウスモデルでフィット ② クラスを推定
混合モデルとExpectation-Maximizationアルゴリズム
CH05_SEC05_1_GaussianMixtureModels.m
#正規分布 1 #正規分布 2 #正規分布 4#正規分布 3
混合モデルとExpectation-Maximizationアルゴリズム
CH05_SEC05_1_GaussianMixtureModels.m
#正規分布 1 #正規分布 2
#正規分布 4#正規分布 3
どのモデル(=正規分布の個数)が適切か?
→ AICを用いてモデル比較
この場合、正規分布の個数=2とするのが適切
ここで演習
• 混合モデルのコードCH05_SEC05_1_GaussianMixtureModels.mを実行してみましょう。
イヌネコデータから推定されたガウス混合モデルの以下のパラメタを確認してみま
しょう。
GMModel.ComponentProportion % 二つの正規分布の比
GMModel.mu % 二つの正規分布の平均
GMModel.Sigma % 二つの正規分布の共分散行列
• 三個の正規分布からデータを生成するコードdemo_three_Gaussians.mがWebClassに
あります。このデータを混合モデルでフィットしてみましょう。混合分布の個数と
していくつが適当か、AIC/BICで検討してみましょう。
データ K=3での
フィット
【本日のまとめ】クラスタリングと分類分析1
1. 特徴量選択とデータマイニング
- 低次元の場合:アヤメデータセット
- 高次元の場合:主成分分析による特徴抽出
2. 教師あり学習と教師なし学習
- 学習のパラダイムとその代表例
3. 教師なし学習:k-平均クラスタリング
4. 教師なし学習:階層的クラスタリング
5. 混合モデルとEMアルゴリズム

東京都市大学 データ解析入門 8 クラスタリングと分類分析 1