3. クラスタリングと分類分析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
4. クラスタリングと分類分析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
10. 特異値分解による特徴量抽出(復習)
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
32. 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にあります)
33. ここで演習
• 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にあります)を実行してみま
しょう。
43. ガウシアン混合モデルからの標本生成
ガウシアン混合モデルからの標本生成
混合係数
正規分布のパラメタ
{ }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);
44. 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);
45. 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α α+ + + +
= =→Θ μ Σ Θ μ Σ
46. 混合モデルと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); % ② クラスを推定
① 混合ガウスモデルでフィット ② クラスを推定