Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

kmedoids

k-medoid クラスタリング

説明

idx = kmedoids(X,k)k-medoid クラスタリング を実行して n 行 p 列の行列 X の観測を k クラスターに分割し、各観測のクラスター インデックスを含む n 行 1 列のベクトル (idx) を返します。X の行は観測に対応し、列は変数に対応します。既定の設定では、kmedoids は初期クラスター medoid 位置の選択に二乗ユークリッド距離計量および k-means++ アルゴリズムを使用します。

idx = kmedoids(X,k,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

[idx,C] = kmedoids(___) は、k 個のクラスター medoid の位置を k 行 p 列の行列 C に返します。

[idx,C,sumd] = kmedoids(___) は、点と medoid 間距離のクラスター内合計を k 行 1 列のベクトル sumd で返します。

[idx,C,sumd,D] = kmedoids(___) は、各点からすべての medoid までの距離を n 行 k 列の行列 D で返します。

[idx,C,sumd,D,midx] = kmedoids(___) は、C = X(midx,:) になるようなインデックス midx を返します。midx は k 行 1 列のベクトルです。

[idx,C,sumd,D,midx,info] = kmedoids(___) は、実行時にアルゴリズムが使用するオプションの情報が指定された構造体 info を返します。

すべて折りたたむ

データを無作為に生成します。

rng('default'); % For reproducibility
X = [randn(100,2)*0.75+ones(100,2);
    randn(100,2)*0.55-ones(100,2)];
figure;
plot(X(:,1),X(:,2),'.');
title('Randomly Generated Data');

Figure contains an axes object. The axes object with title Randomly Generated Data contains a line object which displays its values using only markers.

kmedoids を使用してデータを 2 つのクラスターにグループ化します。cityblock 距離計量を使用します。

opts = statset('Display','iter');
[idx,C,sumd,d,midx,info] = kmedoids(X,2,'Distance','cityblock','Options',opts);
   rep	    iter	         sum
     1	       1	     209.856
     1	       2	     209.856
Best total sum of distances = 209.856

info は、アルゴリズムの実行方法に関する情報を含む struct です。たとえば、bestReplicate フィールドは最終的な解を出すために使用される複製を示します。この例では、既定アルゴリズムの場合に既定の複製数が 1 なので、複製番号 1 を使用します。ここでは、pam です。

info
info = struct with fields:
        algorithm: 'pam'
            start: 'plus'
         distance: 'cityblock'
       iterations: 2
    bestReplicate: 1

クラスターとクラスター medoid をプロットします。

figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',7)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',7)
plot(C(:,1),C(:,2),'co',...
     'MarkerSize',7,'LineWidth',1.5)
legend('Cluster 1','Cluster 2','Medoids',...
       'Location','NW');
title('Cluster Assignments and Medoids');
hold off

Figure contains an axes object. The axes object with title Cluster Assignments and Medoids contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Cluster 1, Cluster 2, Medoids.

次の例では、UCI 機械学習アーカイブ[7]の "キノコ" のデータ セット [3][4][5] [6][7] (詳細についてはhttps://archive.ics.uci.edu/dataset/73/mushroomを参照) を使用します。このデータセットには、8,124 個のさまざまなキノコの観測値に対する 22 の予測子が含まれています。予測子はカテゴリカル データ型です。たとえば、かさの形状が釣り鐘形の場合は 'b'、円錐形のかさの場合は 'c' の特徴量で分類されます。またキノコの色は、茶色の場合に 'n'、ピンクの場合に 'p' の特徴量で分類されます。データセットには、各キノコが食用か有毒かの分類も含まれます。

キノコのデータセットでは特徴量が categorical なので、複数のデータ点の平均を定義できません。また、広く利用されている k-means クラスタリング アルゴリズムをこのデータセットに有意義に適用することはできません。k-medoid は関連するアルゴリズムで、データ内の点と最も近い medoid の間の非類似度の合計が最小になる medoid を探索することにより、データを k 個の異なるクラスターに分割します。

セットの medoid は、セットの他のメンバーとの平均非類似度が最小のセットのメンバーです。類似度は、平均を計算できない多くの種類のデータに対して定義することができ、k medoid は k-means よりも広い範囲の問題に対して使用できます。

次の例では、k medoid を使用して、指定された予測子に基づき、キノコを 2 つのグループにクラスタリングします。次に、これらのクラスター間の関係と、キノコが食用または有毒かの分類を検索します。

次の例では、UCI データベース (https://archive.ics.uci.edu/dataset/73/mushroom) の "キノコ" のデータ セット[3][4][5] [6][7]をダウンロードし、現在のディレクトリにテキスト ファイル agaricus-lepiota.data および agaricus-lepiota.names を保存したと想定しています。データには列ヘッダーの行がありません。したがって readtable は既定の変数名を使用します。

clear all
data = readtable('agaricus-lepiota.data','ReadVariableNames',false);

いくつかの最初の特徴によって 5 個のキノコを最初に表示します。

data(1:5,1:10)
ans = 

    Var1    Var2    Var3    Var4    Var5    Var6    Var7    Var8    Var9    Var10
    ____    ____    ____    ____    ____    ____    ____    ____    ____    _____

    'p'     'x'     's'     'n'     't'     'p'     'f'     'c'     'n'     'k'  
    'e'     'x'     's'     'y'     't'     'a'     'f'     'c'     'b'     'k'  
    'e'     'b'     's'     'w'     't'     'l'     'f'     'c'     'b'     'n'  
    'p'     'x'     'y'     'w'     't'     'p'     'f'     'c'     'n'     'n'  
    'e'     'x'     's'     'g'     'f'     'n'     'f'     'w'     'b'     'k'

最初の列を抽出し、食用および有毒グループのデータをラベル付けします。次に、列を削除します。

labels = data(:,1);
labels = categorical(labels{:,:});
data(:,1) = [];

予測子 (特徴量) の名前を格納します。agaricus-lepiota.names に記述されています。

VarNames = {'cap_shape' 'cap_surface' 'cap_color' 'bruises' 'odor' ...
    'gill_attachment' 'gill_spacing' 'gill_size' 'gill_color' ...
    'stalk_shape' 'stalk_root' 'stalk_surface_above_ring' ...
    'stalk_surface_below_ring' 'stalk_color_above_ring' ...
    'stalk_color_below_ring' 'veil_type' 'veil_color' 'ring_number' ....
    'ring_type' 'spore_print_color' 'population' 'habitat'};

変数名を設定します。

data.Properties.VariableNames = VarNames;

'?' として表示される欠損値は合計で 2480 あります。

sum(char(data{:,:}) == '?')
ans =

        2480

データセットの検査とその説明によると、欠損値は 11 番目の変数 (stalk_root) にのみ属します。テーブルから列を削除します。

data(:,11) = [];

kmedoids は数値データを受け入れるのみです。現在のデータのカテゴリを数値型にキャストします。データの非類似度を定義するために使用する距離関数は、カテゴリカル データの double 表現に基づきます。

cats = categorical(data{:,:});
data = double(cats);

kmedoids は、クラスタリングのために pdist2 によってサポートされる任意の距離計量を使用します。次の例では、ハミング距離を使用してデータをクラスタリングします。以下に示すとおり、カテゴリカル データの場合は適切な距離計量であるためです。2 つのベクトル間のハミング距離は、異なるベクトル成分の比率です。たとえば、次の 2 つのベクトルについて考えます。

v1 = [1 0 2 1];

v2 = [1 1 2 1];

第 1、第 3、第 4 座標で等しくなっています。4 座標のうち 1 座標が異なるので、この 2 つのベクトル間のハミング距離は 0.25 です。

関数 pdist2 を使用して、データの 1 行目と 2 行目の間のハミング距離 (キノコのカテゴリカル データの数値表現) を測定できます。値 .2857 は、キノコの 21 の特徴のうち 6 つが異なることを意味します。

pdist2(data(1,:),data(2,:),'hamming')
ans =

    0.2857

次の例では、特徴に基づきキノコのデータを 2 つのクラスターにクラスタリングし、クラスタリングが食用に対応しているか確認します。関数 kmedoids は、クラスタリング基準の局所的最小値に収束することが保証されています。しかし、これは問題に対して大域的最小値ではない可能性があります。'replicates' パラメーターを使用して問題を数回クラスタリングすることをお勧めします。'replicates' が 1 より大きい値 n に設定されている場合、k-medoid アルゴリズムは n 回実行され、最適な結果が返されます。

ハミング距離に基づきデータを 2 つのクラスターにクラスタリングする kmedoids を実行し、3 つの複製に最適な結果を返すには、以下を実行します。

rng('default'); % For reproducibility
[IDX, C, SUMD, D, MIDX, INFO] = kmedoids(data,2,'distance','hamming','replicates',3);

予測されたグループ 1 のキノコは有毒で、グループ 2 のキノコはすべて食用であると仮定します。クラスタリングした結果のパフォーマンスを決定するには、グループ 1 の実際に有毒なキノコの数とグループ 2 の食用のキノコの数を既知のラベルに基づき計算します。すなわち、真陽性および真陰性と同様に偽陽性、偽陰性の数を計算します。

混同行列 (またはマッチング行列) を構築します。ここで、対角要素はそれぞれ真陽性および真陰性の数を表します。非対角要素は、それぞれ偽陰性および偽陽性を表します。便宜上、confusionmat 関数を使用することで、既知のラベルおよび予測ラベルが与えられた混同行列を計算します。IDX 変数から予測ラベルの情報を取得します。IDX には各データ点の 1 と 2 の値が含まれ、それぞれ有毒グループおよび食用のグループを表します。

predLabels = labels; % Initialize a vector for predicted labels.
predLabels(IDX==1) = categorical({'p'}); % Assign group 1 to be poisonous.
predLabels(IDX==2) = categorical({'e'}); % Assign group 2 to be edible.
confMatrix = confusionmat(labels,predLabels)
confMatrix =

        4176          32
         816        3100

4208 個の食用のキノコのうち 4176 個はグループ 2 (食用のグループ) であると正しく予測されましたが、32 個はグループ 1 (有毒のグループ) であると間違って予測されました。同様に、3916 個の有毒なキノコのうち 3100 個はグループ 1 (有毒のグループ) であると正しく予測され、816 個はグループ 2 (食用のグループ) であると間違って予測されました。

次の混同行列の場合、全体のデータに対する真の結果 (真陽性と真陰性の両方) の比率である正確性と、すべての正の結果 (真陽性と偽陽性) に対する真陽性の比率である精度を計算します。

accuracy = (confMatrix(1,1)+confMatrix(2,2))/(sum(sum(confMatrix)))
accuracy =

    0.8956
precision = confMatrix(1,1) / (confMatrix(1,1)+confMatrix(2,1))
precision =

    0.8365

この結果は、キノコのカテゴリカル特徴量に k-medoid アルゴリズムを適用すると、クラスターは食用に関連付けられること示しています。

入力引数

すべて折りたたむ

データ。数値行列として指定します。X の行は観測値に対応し、列は変数に対応します。

データ内の medoid の数。正の整数として指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'Distance','euclidean','Replicates',3,'Options',statset('UseParallel',1) はユークリッド距離、開始値の異なる 3 つの複製 medoid、並列計算の使用を指定します。

medoid を検出するアルゴリズム。'Algorithm''pam''small''clara' または 'large' から構成されるコンマ区切りのペアとして指定します。既定のアルゴリズムは X の行数により異なります。

  • X の行数が 3000 行より小さい場合、'pam' が既定のアルゴリズムです。

  • 行数が 3000 行から 10000 行の範囲の場合、'small' が既定のアルゴリズムです。

  • これ以外の場合は 'large' が既定のアルゴリズムです。

アルゴリズムを明示的に示すことで、既定の設定の選択をオーバーライドできます。次の表は、使用可能なアルゴリズムをまとめたものです。

アルゴリズム説明
'pam'

PAM (Partitioning Around Medoids) は、[1] に説明されている k-medoid の問題を解決するための従来型アルゴリズムです。初期 medoid 位置を選択する初期化関数が適用されてから、PAM アルゴリズムのスワップ ステップが実行されます。つまり、medoid と非 medoid 間のすべての可能なスワップが検索され、クラスター メンバーの距離に対する medoid の合計が減少したかどうかを確認します。名前と値のペアの引数 'Start' により使用する初期関数を指定できます。

アルゴリズムは、以下のように実行されます。

  1. ビルド ステップ: k 個のクラスターそれぞれを潜在的な medoid に関連付ける。この割り当ては、名前と値のペアの引数 'Start' により指定された手法を使い実行されます。

  2. スワップ ステップ: 各クラスター内で、点を medoid として使用するとクラスター内距離の合計が小さくなるかどうかをチェックすることにより、各点が潜在的な medoid であるかテストする。この場合、点は新規 medoid と定義されます。次に、すべての点は最も近い medoid をもつクラスターに割り当てられます。

medoid が変化しなくなるか、その他の終了基準が満たされるまで、アルゴリズムはビルド ステップとスワップ ステップを繰り返します。

状況によって、このアルゴリズムはその他のアルゴリズムよりも優れた解を出すこともありますが、実行時間が非常に長くなる可能性があります。

'small'

k-means アルゴリズムに類似するアルゴリズムを使用して k medoid を検出します。このオプションは、[2] に基づくロイドの反復のバリアントを利用しています。

アルゴリズムは、以下のように実行されます。

  1. 各クラスターの各点について、点からクラスター内の他のすべての点までの距離の合計を計算します。新規 medoid として合計を最小化する点を選択します。

  2. 各データ点のクラスター メンバーシップを更新し、新規 medoid を反映します。

これ以上の更新が行われないか、終了基準が満たされるまで、アルゴリズムはこれらのステップを繰り返します。アルゴリズムには、PAM に類似したオプションのオンライン更新フェーズ (名前と値のペアの引数 'OnlinePhase' により指定される) が含まれており、クラスターの品質を改善します。これは、clara または large アルゴリズムより高品質な解を返す傾向があります。しかし、大規模なデータ対しては最適な選択ではない可能性があります。

'clara'

CLARA (Clustering LARge Applications) [1] は無作為なデータのサブセットであり、PAM アルゴリズムを繰り返し実行します。これはサンプリングにより PAM アルゴリズムが提起したスケーリングの問題を克服することが目的です。

アルゴリズムは、以下のように実行されます。

  1. データのサブセットを選択し、PAM アルゴリズムをサブセットに適用します。

  2. 最も近い medoid を選択することで、すべてのデータセットの点をクラスターに割り当てます。

medoid が変化しなくなるか、その他の終了基準が満たされるまで、アルゴリズムはこれらのステップを繰り返します。

最高のパフォーマンスを実現するには、複数の複製を行うことをお勧めします。既定では、プログラムは 5 つの複製を行います。クラスタリングを実行する各複製標本 s の X からの行 (名前と値のペアの引数 'NumSamples' により指定します)。既定では、40+2*k 標本が選択されています。

'large'

これは small スケール アルゴリズムに類似し、更新のように k-means を使用し、繰り返し検索を行います。しかし、アルゴリズムは反復中にクラスター メンバーの無作為標本のみを調べます。ユーザーが調整できるパラメーター 'PercentNeighbors' は、調査する近傍の数を制御します。近傍を調べた後に改善がみられない場合、アルゴリズムは局所的検索を終了します。アルゴリズムは r 複製 (名前と値のペアの引数 'Replicates' により指定される) の合計を実行し、最適なクラスタリングの結果を返します。アルゴリズムには、PAM に類似したオプションのオンライン フェーズ (名前と値のペアの引数 'OnlinePhase' により指定される) が含まれており、クラスターの品質を改善します。

例: 'Algorithm','pam'

PAM に似たオンライン更新フェーズを実行するフラグ。'OnlinePhase''on' または 'off' のいずれかで構成されるコンマ区切りのペアとして指定します。

フラグが on の場合、kmedoidssmall および large アルゴリズムでロイドの反復後、PAM に似た更新を medoid に実行します。このオンライン更新フェーズ中に、アルゴリズムは各クラスター内でデータ点の小さなサブセットを選択します。データ点は medoid から最も遠いものと最も近いものです。選択された点ごとに、すべてのデータセットのクラスタリングが再割り当てされ、既知の最適な距離より小さくなっている距離の合計が作成されているか確認します。

つまり、スワップの考慮事項は medoid に近い点および medoid から離れた点に制限されます。近い点はクラスタリングを絞り込むために考慮されます。離れた点は局地的最小値を回避するために考慮されます。この機能をオンにすると、両アルゴリズムにより生成される解の品質が改善する傾向があります。合計実行時間も同様に増加する傾向がありますが、通常、PAM の 1 回の反復より増加は小さいです。

例: OnlinePhase,'off'

距離計量。次の表に記載されている距離計量の名前または関数ハンドルとして指定します。kmedoids は、medoid からクラスター メンバーまでの距離の合計を最小化します。

説明
'sqEuclidean'2 乗ユークリッド距離 (既定の設定)
'euclidean'

ユークリッド距離

'seuclidean'

標準化されたユークリッド距離。観測値間の各座標差は、標準偏差 S = std(X,'omitnan') の対応する要素で除算することによりスケーリングされます。

'cityblock'

市街地距離

'minkowski'

ミンコフスキー距離。指数は 2 です。

'chebychev'

チェビシェフ距離 (最大座標差)

'mahalanobis'

X の標本共分散 C = cov(X,'omitrows') を使用したマハラノビス距離

'cosine'

1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値

'correlation'

1 から、値の系列として扱われる点の間の標本相関を引いた値

'spearman'

1 から観測値間の標本スピアマン順位相関係数を減算 (値の系列として処理)

'hamming'

ハミング距離 (異なる座標の比率)

'jaccard'

1 からジャカード係数 (異なる非ゼロ座標の比率) を減算

@distfun

カスタム距離関数のハンドル。距離関数の形式は次のようになります。

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
ここで、

  • ZI は、単一の観測値が含まれている 1n 列のベクトルです。

  • ZJ は、複数の観測値が含まれている m2n 列の行列です。distfun は、任意の個数の観測値が含まれている行列 ZJ を受け入れなければなりません。

  • D2m21 列の距離のベクトルであり、D2(k) は観測値 ZIZJ(k,:) の間の距離です。

データがスパースでない場合、通常は関数ハンドルではなく組み込みの距離を使用する方が高速に距離を計算できます。

各距離計量の定義については、距離計量を参照してください。

例: 'Distance','hamming'

近似条件を最小化する反復アルゴリズムを制御するオプション。statset により返される 'Options' と構造体配列で構成されるコンマ区切りのペアとして指定します。構造体配列のサポートされているフィールドで、反復アルゴリズムを制御するオプションを指定します。次の表は、サポートされているフィールドをまとめています。

フィールド説明
Display表示出力レベル。選択肢は、'off' (既定の設定) および 'iter' です。
MaxIter反復の最大許容回数。既定の設定は 100 です。
UseParalleltrue の場合、並列計算を実行します。Parallel Computing Toolbox™ を使用できない場合、計算は逐次モードで行われます。既定の設定は false (逐次計算) です。
UseSubstreams再生成可能な方法で並列計算する場合に true に設定します。既定の設定は false です。再現性の計算を行うには、Streams の設定を、サブストリームを許可する型、つまり 'mlfg6331_64' または 'mrg32k3a' にしなければなりません。
StreamsRandStream オブジェクトまたはそのようなオブジェクトの cell 配列。これらのオプションと Statistics and Machine Learning Toolbox™ での並列計算の詳細は、統計計算の速度の向上を参照するか、コマンド ラインで help parallelstats を入力してください。

例: 'Options',statset('Display','off')

新規初期クラスター medoid 位置を使用するクラスタリングの反復回数。正の整数として指定します。既定の設定値は選択するアルゴリズムによって異なります。pam および small の場合、既定値は 1 です。clara の場合、既定値は 5 です。large の場合、既定値は 3 です。

例: 'Replicates',4

clara アルゴリズム実行時にデータから取得される標本の数。正の整数として指定します。既定の標本数は、40+2*k として計算されます。

例: 'NumSamples',160

large アルゴリズムを使用して調べるデータセットの比率。正の数値として指定します。

プログラムは、medoid の近傍数 percentneighbors*size(X,1) を調べます。距離のクラスター内合計に改善がない場合、アルゴリズムが終了します。

このパラメーターの値は 0 から 1 の間であり、値が 1 に近いと品質の高い解が与えられる傾向があります。しかし、アルゴリズムの実行時間が長くなります。値が 0 に近い場合、解の品質はより低くなりますが、より早く終了します。

例: 'PercentNeighbors',0.01

初期クラスター medoid 位置を選択する方法。'Start''plus''sample''cluster' または行列から構成されるコンマ区切りのペアとして指定します。次の表は、使用可能な方法の一覧です。

メソッド説明
'plus' (既定の設定)k-means++ アルゴリズムに従い、クラスター中心の初期化に X から観測 k を選択します。
'sample'k 観測を X から無作為に選択します。
'cluster'X の無作為な副標本 (10%) について予備クラスタリング フェーズを実行します。この予備フェーズは、sample を使用して初期化されます。つまり、観測は無作為に選択されます。
行列開始位置の k 行 p 列のカスタム行列この場合、k 入力引数に対して [] を渡すと、kmedoids は行列の最初の次元から k を推測します。また、配列の 3 番目の次元の 'Replicates' の値を示す 3 次元配列を指定することもできます。

例: 'Start','sample'

データ型: char | string | single | double

出力引数

すべて折りたたむ

medoid インデックス。数値列ベクトルとして返されます。idxX と同数の行をもち、各行は対応する観測の medoid 割り当てを示します。

クラスターの medoid 位置。数値行列として返されます。C は k 行 p 列の行列です。ここで、行 j はクラスターの medoid j です。

クラスター内での点から medoid まで距離の合計。数値行ベクトルとして返されます。sumdk 行 1 列のベクトルです。ここで、要素 j はクラスター j 内の点から medoid までの距離の合計です。

各点からそれぞれの medoid までの距離。数値行列として返されます。D は n 行 k 列の行列です。ここで、要素 (j、m) は観測値 j から medoid m までの距離です。

X へのインデックス。インデックスの行ベクトルとして返します。midxk 行 1 列のベクトルです。インデックスは、C = X(midx,:) を満たします。

アルゴリズム情報。struct として返されます。info には、k-medoid クラスタリング アルゴリズムなどの実行時に関数が使用するオプション (algorithm)、クラスター medoid の初期位置の選択に使用する方法 (start)、距離計量 (distance)、最良の複製で実行された反復回数 (iterations)、および返された結果の複製回数 (bestReplicate) が含まれます。

詳細

すべて折りたたむ

k-medoid クラスタリング

k-medoid クラスタリングは、外れ値データ、任意の距離計量や明白な定義のない平均や中央値の場合でもロバスト性を必要とするドメインにおいて、一般的に使用される分割法です。

これは k-means に類似しています。この 2 つの方法の目的は、測定または観測のアンサンブルを k のサブセットまたはクラスターに分割することです。その結果、測定値と測定のクラスターの中心との間を合計した距離を、サブセットによって最小化できます。k-means アルゴリズムでは、サブセットの中心はサブセット内の測定の平均であり、重心と呼ばれることがあります。k-medoid アルゴリズムではサブセットの中心はサブセットのメンバーであり、medoid と呼ばれます。

k-medoid アルゴリズムは、データセット内の実際のデータ点である medoid を返します。これにより、データの平均がデータセット内に存在しない状況でアルゴリズムを使用できます。これは、k-means により返される重心がデータセット内に存在しない可能性のある k-medoid と k-means 間の主要な違いです。そのため、k-medoid は平均を定義または解釈できないカテゴリカル データのクラスタリングに役立ちます。

関数 kmedoids は、すべてのクラスターについて、各オブジェクトからそのクラスターの medoid までの距離を合計して最小化する複数の反復アルゴリズムを提供します。アルゴリズムの 1 つは PAM (partitioning around medoids) [1] と呼ばれます。これは 2 つのステップで進行します。

  1. ビルド ステップ: k 個のクラスターそれぞれを潜在的な medoid に関連付ける。この割り当ては、名前と値のペアの引数 'Start' により指定された手法を使い実行されます。

  2. スワップ ステップ: 各クラスター内で、点を medoid として使用するとクラスター内距離の合計が小さくなるかどうかをチェックすることにより、各点が潜在的な medoid であるかテストする。この場合、点は新規 medoid と定義されます。次に、すべての点は最も近い medoid をもつクラスターに割り当てられます。

medoid が変化しなくなるか、その他の終了基準が満たされるまで、アルゴリズムはビルド ステップとスワップ ステップを繰り返します。

kmedoids に対するいくつかのオプションの入力パラメーター (クラスターの medoid の初期値に対するパラメーターや繰り返しの最大数に対するパラメーターがあります) を使用し、最小化の詳細を制御できます。既定では、kmedoids はクラスター medoid の初期化には k-means++ アルゴリズムを、距離の決定には二乗ユークリッド計量を使用します。

参照

[1] Kaufman, L., and Rousseeuw, P. J. (2009). Finding Groups in Data: An Introduction to Cluster Analysis. Hoboken, New Jersey: John Wiley & Sons, Inc.

[2] Park, H-S, and Jun, C-H. (2009). A simple and fast algorithm for K-medoids clustering. Expert Systems with Applications. 36, 3336-3341.

[3] Schlimmer,J.S. (1987). Concept Acquisition Through Representational Adjustment (Technical Report 87-19). Doctoral dissertation, Department of Information and Computer Science, University of California, Irvine.

[4] Iba,W., Wogulis,J., and Langley,P. (1988). Trading off Simplicity and Coverage in Incremental Concept Learning. In Proceedings of the 5th International Conference on Machine Learning, 73-79. Ann Arbor, Michigan: Morgan Kaufmann.

[5] Duch W, A.R., and Grabczewski, K. (1996) Extraction of logical rules from training data using backpropagation networks. Proc. of the 1st Online Workshop on Soft Computing, 19-30, pp. 25-30.

[6] Duch, W., Adamczak, R., Grabczewski, K., Ishikawa, M., and Ueda, H. (1997). Extraction of crisp logical rules using constrained backpropagation networks - comparison of two new approaches. Proc. of the European Symposium on Artificial Neural Networks (ESANN'97), Bruge, Belgium 16-18.

[7] Bache, K. and Lichman, M. (2013). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.

拡張機能

バージョン履歴

R2014b で導入