主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

kmeans

k - meansクラスタリング

説明

idx= kmeans (Xkk - meansクラスタリングを実行してn行p列のデータ行列Xの観測をkクラスターに分割し,観測ごとにクラスターインデックスを含むn行1列のベクトル(idx)を返します。Xの行は観測に対応し,列は変数に対応します。

既定の設定では,kmeansはクラスター中心の初期化に二乗ユークリッド距離計量とk - means + +アルゴリズムを使用します。

idx= kmeans (Xk名称,值は1つ以上の名称,值のペア引数により指定された追加オプションを使用しクラスターインデックスを返します。

たとえば,コサイン距離,新たな初期値を使用するクラスタリングの反復回数または並列計算の使用回数を指定します。

idxC) = kmeans (___は,k個のクラスター重心位置をk行p列の行列Cに返します。

idxCsumd) = kmeans (___は,点と重心間距離のクラスター内合計をk行1列のベクトルsumdで返します。

idxCsumdD) = kmeans (___は,各点からすべての重心までの距離をn行k列の行列Dで返します。

すべて折りたたむ

k——クラスタリングを使用してデータをクラスター化し,クラスター領域をプロットします。

フィッシャーのアヤメのデータセットを読み込みます。花弁の長さと幅を予測子として使用します。

负载fisheririsX =量(:,3:4);图;情节(X (: 1) X (:, 2),“k *’“MarkerSize”5);标题“费舍尔的虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(cm)”

图中包含一个坐标轴。标题为Fisher's Iris Data的轴包含一个类型为line的对象。

大きいクラスターは,分散がより低い領域とより高い領域に分割されているように見えます。つまり,大きなクラスターは,2つのクラスターがオーバーラップしている可能性があります。

データをクラスタリングします。k= 3クラスターを指定します。

rng (1);%的再现性[idx C] = kmeans (X, 3);

idxは,Xに含まれている観測値に対応する,予測したクラスターのインデックスのベクトルです。Cは,最終的な重心位置が格納される3行2列の行列です。

kmeansを使用して各重心からグリッド上の点までの距離を計算します。これを行うには,重心(C)およびグリッド上の点をkmeansへ渡し,そのアルゴリズムの1反復を実装します。

x1 = min (X(: 1)): 0.01:马克斯(X (: 1));x2 = min (X(:, 2)): 0.01:马克斯(X (:, 2));[x1G, x2G] = meshgrid (x1, x2);XGrid = [x1G (:), x2G (:));在plot上定义一个精细的网格idx2Region = kmeans (XGrid 3“麦克斯特”,1,“开始”C);
警告:在1次迭代中收敛失败。
%将网格中的每个节点分配到最近的质心

kmeansは,アルゴリズムが収束しないことを示す警告を表示します。これは,反復が1回のみ実行されることから予想できます。

クラスターの領域をプロットします。

图;gscatter (XGrid (: 1) XGrid (:, 2), idx2Region,...[0, 0.75, 0.75, 0.75, 0, 0.75, 0.75, 0.75, 0],“. .”);持有;情节(X (: 1) X (:, 2),“k *’“MarkerSize”5);标题“费舍尔的虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(cm)”;传奇(“地区1”《区域2》区域3的“数据”“位置”“东南”);持有

图中包含一个坐标轴。标题为Fisher's Iris Data的轴包含4个类型为line的对象。这些对象代表区域1,区域2,区域3,数据。

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

rng默认的%的再现性X = [randn(100 2) * 0.75 +(100 2)的;randn(100 2) * 0.5的(100 2)];图;情节(X (: 1) X (:, 2),“。”);标题随机生成的数据的

图中包含一个坐标轴。标题为随机生成数据的轴包含一个类型为line的对象。

データ内に2つのクラスターが存在するように見えます。

データを2つのクラスターに分割し,5つの初期値から最適な割り当てを選択します。最終出力を表示します。

选择= statset (“显示”“最后一次”);[idx C] = kmeans (X, 2,“距离”“cityblock”...“复制”5,“选项”、选择);
重复1,3次迭代,总距离之和= 201.533。重复2,5次迭代,总距离之和= 201.533。重复3,3次迭代,总距离之和= 201.533。重复4,3次迭代,总距离之和= 201.533。重复5次,2次迭代,总距离之和= 201.533。距离的最佳总和= 201.533

既定では,k——+ +を使用して複製が個別に初期化されます。

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

图;情节(X (idx = = 1,1) X (idx = = 1、2),“r”。“MarkerSize”, 12)情节(X (idx = = 2, 1), X (idx = = 2, 2),“b”。“MarkerSize”12)情节(C (: 1), C (:, 2),“kx”...“MarkerSize”15岁的“线宽”3)传说(“集群1”《集群2》“重心”...“位置”“西北”)标题“集群分配和质心”持有

图中包含一个坐标轴。标题为Cluster Assignments and Centroids的轴包含3个类型为line的对象。这些对象代表Cluster 1, Cluster 2, Centroids。

idx轮廓へ渡すことで,クラスターがどの程度適切に分離されたかを判断できます。

大きなデータセットのクラスタリングでは,特にオンライン更新(既定で設定されている)を使用すると時間がかかる場合があります。并行计算工具箱™のライセンスがある場合に並列計算のオプションを設定すると,kmeansは各クラスタリングタスク(または複製)を並列的に実行します。さらに,复制> 1である場合,並列計算により収束までの時間が短くなります。

混合ガウスモデルから大きなデータセットを無作為に生成します。

μ= bsxfun (@times(20、30),(1:20)');%高斯混合均值rn30 = randn(30、30);σ= rn30 ' * rn30;%对称正定协方差Mdl = gmdistribution(μ、σ);定义高斯混合分布rng (1);%的再现性X =随机(Mdl, 10000);

Mdlは20個の成分をもつ30次元のgmdistributionモデルです。Xは,Mdlから生成されたデータが含まれている10000行30列の行列です。

並列計算のオプションを指定します。

流= RandStream (“mlfg6331_64”);%随机数流选择= statset (“UseParallel”,1,“UseSubstreams”,1,...“流”、流);

RandStreamの入力引数“mlfg6331_64”は,乗法ラグフィボナッチ発生器アルゴリズムを使用するよう指定します。选项は,推定を制御するためのオプションを指定するフィールドをもつ構造体配列です。

k——クラスタリングを使用してデータをクラスター化します。データにk= 20個のクラスターがあることを指定し,反復回数を増やします。通常,目的関数には局所的最小値が含まれます。10個の複製を指定して、より低い局所的最小値の検出に役立てます。

抽搐;启动秒表计时器(sumd idx, C, D) = kmeans (X, 20,“选项”选项,“麦克斯特”, 10000,...“显示”“最后一次”“复制”10);
使用“local”配置文件启动并行池(parpool)…连接到6个工人。复制5,72次迭代,总距离之和= 7.73161e+06。重复1,64次迭代,总距离之和= 7.72988e+06。重复3,68次,总距离之和= 7.72576e+06。重复4,84次,总距离之和= 7.72696e+06。重复6,82次迭代,总距离之和= 7.73006e+06。重复7,40次迭代,总距离之和= 7.73451e+06。重复2,194次迭代,总距离之和= 7.72953e+06。重复9,105次迭代,总距离之和= 7.72064e+06。 Replicate 10, 125 iterations, total sum of distances = 7.72816e+06. Replicate 8, 70 iterations, total sum of distances = 7.73188e+06. Best total sum of distances = 7.72064e+06
toc终止秒表计时器
运行时间为61.915955秒。

6つのワーカーが利用可能であることがコマンドウィンドウに示されます。ワーカーの数はシステムにより異なる場合があります。コマンドウィンドウは,各複製の反復回数および最終的な目的関数値を表示します。複製9は距離の総和が最小なので,その結果が出力引数に含まれます。

kmeansは,k——クラスタリングを実行して,データをk個のクラスターに分割します。新しいデータセットをクラスター化するときに,kmeansを使用して,既存のデータと新しいデータが含まれる新しいクラスターを作成できます。関数kmeansはC / c++コード生成をサポートするので,学習データを受け入れてクラスター化の結果を返すコードを生成してから,コードをデバイスに展開できます。このワークフローでは学習データを渡さなければなりませんが,サイズが非常に大きい可能性があります。デバイスのメモリを節約するため,kmeanspdist2をそれぞれ使用して,学習と予測を分離することができます。

kmeansを使用してMATLAB®でクラスターを作成し,生成されたコードでpdist2を使用して新しいデータを既存のクラスターに割り当てます。コード生成用に,クラスターの重心位置と新しいデータセットを受け入れて最も近いクラスターのインデックスを返すエントリポイント関数を定義します。次に,エントリポイント関数のコードを生成します。

C / c++コードの生成にはMATLAB®编码器™が必要です。

k——クラスタリングの実行

3つの分布を使用して,学習データセットを生成します。

rng (“默认”%的再现性X = [randn(100 2) * 0.75 +(100 2)的;randn(100 2) * 0.5的(100 2);randn (100 2) * 0.75);

kmeansを使用して,学習データを3つのクラスターに分割します。

[idx C] = kmeans (X, 3);

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

图gscatter (X (: 1), (:, 2), idx,“bgm”)举行情节(C (: 1), C (:, 2),“kx”)传说(“集群1”《集群2》“集群3”聚类质心的

图中包含一个坐标轴。轴包含4个线型对象。这些对象代表群集1,群集2,群集3,群集中心。

既存クラスターへの新しいデータの割り当て

検定データセットを生成します。

Xtest = [randn(10, 2) * 0.75 +的(10,2);randn(10, 2) * 0.5的(10,2);randn (10, 2) * 0.75);

既存のクラスターを使用して,検定データセットを分類します。pdist2を使用して,各検定データ点から最も近い重心を求めます。

[~, idx_test] = pdist2 (C Xtest“欧几里得”“最小”1);

gscatterを使用して検定データをプロットします。idx_testを使用して検定データにラベルを付けます。

gscatter (Xtest (: 1) Xtest (:, 2), idx_test,“bgm”“哦”)传说(“集群1”《集群2》“集群3”聚类质心的...“数据分类为第一组”“数据分类为第二组”...“数据分类为第3组”

图中包含一个坐标轴。轴线包含7个线型对象。这些对象代表群集1,群集2,群集3,群集中心,数据分类到群集1,数据分类到群集2,数据分类到群集3。

コードの生成

新しいデータを既存のクラスターに割り当てるCコードを生成します。C/C++ コードの生成には MATLAB® Coder™ が必要であることに注意してください。

重心位置と新しいデータを受け入れてから,pdist2を使用して最も近いクラスターを求める,findNearestCentroidという名前のエントリポイント関数を定義します。

MATLABのアルゴリズムについてのコードを生成しようとしていることを指示するため,コンパイラ命令% # codegen(またはプラグマ)をエントリポイント関数のシグネチャの後に追加します。この命令を追加すると,コード生成時にエラーになる違反の診断と修正をMATLAB代码分析器が支援します。

类型findNearestCentroid%显示findNearestCentroid.m的内容
函数idx = findNearestCentroid(C,X) %#codegen [~,idx] = pdist2(C,X,'欧几里得','最小',1);找到最近的质心

メモ:このページの右上にあるボタンをクリックしてこの例をMATLAB®で開くと,MATLAB®で例のフォルダーが開きます。このフォルダーには,エントリポイント関数のファイルが含まれています。

codegen(MATLAB编码器)を使用してコードを生成します。CおよびC++ は静的な型の言語なので、エントリポイント関数内のすべての変数のプロパティをコンパイル時に決定しなければなりません。findNearestCentroidの入力のデータ型と配列サイズを指定するため,arg游戏オプションを使用して,特定のデータ型および配列サイズをもつ一連の値を表すMATLAB式を渡します。詳細については,コード生成用の可変サイズ引数の指定を参照してください。

codegenfindNearestCentroidarg游戏{C, Xtest}
代码生成成功。

codegenは,プラットフォームに依存する拡張子をもつ墨西哥人関数findNearestCentroid_mexを生成します。

生成されたコードを検証します。

myIndx = findNearestCentroid (C, Xtest);myIndex_mex = findNearestCentroid_mex (C, Xtest);verifyMEX = isequal (idx_test myIndx myIndex_mex)
verifyMEX =逻辑1

isequalは,すべての入力が等しいことを意味する逻辑1 (真正的)を返します。この比較により,同じインデックスを関数pdist2、関数findNearestCentroid,および墨西哥人関数が返すことを確認します。

GPU编码器™を使用して,最適化されたCUDA®コードを生成することもできます。

cfg = coder.gpuConfig (墨西哥人的);codegen配置cfgfindNearestCentroidarg游戏{C, Xtest}

コード生成の詳細については,一般的なコード生成のワークフローを参照してください。GPU编码器の詳細については,GPU编码器入門(GPU编码器)サポートされる関数(GPU编码器)を参照してください。

入力引数

すべて折りたたむ

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

Xが数値ベクトルの場合,kmeansはこれを向きに関係なくn行1列のデータ行列として扱います。

Xは欠損データとして扱われ,最低1つのを含むXの任意の行を削除します。Xの行を削除することで標本サイズが減少します。関数kmeansは,出力引数idxの対応する値に対してを返します。

データ型:|

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

データ型:|

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“距离”、“余弦”,“复制”,10日,“选项”,statset (UseParallel, 1)は,コサイン距離,開始値の異なる10の複製クラスターおよび並列計算の使用を指定します。

コマンドウィンドウで表示する出力レベル。“显示”と次のいずれかのオプションから構成されるコンマ区切りのペアとして指定します。

  • “最后一次”——最後の反復の結果の表示

  • “通路”——反復の結果の表示

  • “关闭”——表示しない

例:“显示”、“最后”

最小化に使用するp次元空間内の距離計量。“距离”“sqeuclidean”“cityblock”的余弦“相关”または“汉明”から構成されるコンマ区切りのペアとして指定します。

kmeansは,サポートされている距離計量ごとに異なる方法で重心クラスターを計算します。次の表は,使用可能な距離計量をまとめたものです。式ではxは観測(つまりXの行),cは重心(行ベクトル)です。

距離計量 説明
“sqeuclidean”

2乗ユークリッド距離(既定の設定)。各重心は,そのクラスターの点の平均です。

d x c x c x c

“cityblock”

L1距離など,差の絶対値の総和。各重心は,そのクラスターの点の成分単位の中央値です。

d x c j 1 p | x j c j |

的余弦

1から,ベクトルとして扱われる点の間の夾角の余弦を引いた値。各重心は,そのクラスターの点を単位ユークリッド長に正規化した後の平均です。

d x c 1 x c x x c c

“相关”

1から,値の系列として扱われる点の間の標本相関を引いた値。各重心は,そのクラスターの点を中心にシフトしてゼロ平均と単位標準偏差に正規化した後の,それらの点の成分単位の平均です。

d x c 1 x x ¯ c c ¯ x x ¯ x x ¯ c c ¯ c c ¯

ここで

  • x ¯ 1 p j 1 p x j 1 p

  • c ¯ 1 p j 1 p c j 1 p

  • 1 p はp個の1から構成される行ベクトルです。

“汉明”

この尺度はバイナリデータのみに適しています。

これは異なるビットの比率です。各重心は,そのクラスターの点の成分単位の中央値です。

d x y 1 p j 1 p x j y j

我はインジケーター関数です。

例:“距离”、“cityblock”

クラスターがそのメンバーである観測値をすべて失う場合に実行するアクション。“EmptyAction”と次のいずれかのオプションから構成されるコンマ区切りのペアとして指定します。

説明
“错误”

空のクラスターを誤差として処理します。

“下降”

空になったすべてのクラスターを削除します。kmeansは,CおよびD内の対応する戻り値をに設定します。

“单”

その重心から最も遠くに位置する1つの点で構成される新しいクラスターを作成します(既定値)。

例:“EmptyAction”、“错误”

最大反復回数。“麦克斯特”と正の整数で構成されるコンマ区切りのペアとして指定します。

例:麦克斯特,1000年

データ型:|

オンライン更新フラグ。“OnlinePhase”および“关闭”または“上”のいずれかで構成されるコンマ区切りのペアとして指定します。

OnlinePhaseの場合,kmeansはバッチ更新フェーズだけでなくオンライン更新フェーズも実行します。オンラインフェーズは,大規模なデータセットでは時間がかかる場合がありますが,距離基準の局所的最小値になる解が保証されます。つまり,任意の1点を他のクラスターに移動すると距離の総和が増大するデータ分割を検出します。

例:“OnlinePhase”,“上”

近似基準を最小化する反復アルゴリズムの制御オプション。statsetにより返される“选项”と構造体配列で構成されるコンマ区切りのペアとして指定します。構造体配列のサポートされているフィールドで,反復アルゴリズムを制御するオプションを指定します。

次の表は,サポートされているフィールドをまとめています。サポートされているフィールドでは Parallel Computing Toolbox™ が必要であることに注意してください。

フィールド 説明
“流”

RandStreamオブジェクトまたはそのようなオブジェクトの细胞配列。を指定しないと,kmeansには既定のストリームが使用されます。を指定する場合,以下の条件がすべて満たされている場合を除き,単一オブジェクトを使用します。

  • 開いている並列プールがある。

  • UseParallel真正的

  • UseSubstreams

この場合は,並列プールと同じサイズの细胞配列を使用します。並列プールが開いていない場合,は単一の乱数ストリームを提供しなければなりません。

“UseParallel”
  • 真正的かつ复制> 1である場合,kmeansは各複製に対して並列的にk - meansアルゴリズムを実装します。

  • 并行计算工具箱がインストールされていない場合,計算は逐次モードで行われます。既定の設定は(逐次計算)です。

“UseSubstreams” 再生成可能な方法で並列計算する場合に真正的に設定します。既定の設定はです。再現性のある計算を行うには,をサブストリームを許可する型,“mlfg6331_64”または“mrg32k3a”に設定します。

予測結果をより確実にするために,parpool(并行计算工具箱)を使用し,並列プールを明示的に作成してからkmeansを呼び出し“选项”,statset (UseParallel, 1)を設定します。

例:“选项”,statset (UseParallel, 1)

データ型:结构体

新規の初期クラスター重心位置を使用するクラスタリングの反復回数。“复制”と整数で構成されるコンマ区切りのペアとして指定します。kmeansは最低のsumdをもつ解を返します。

三维配列を名前と値のペアの引数“开始”の値として指定することで,“复制”を暗黙的に設定できます。

例:“复制”,5

データ型:|

初期クラスター重心位置(または“シード”)を選択する方法。“开始”“集群”“+”“样本”“统一”,数値行列または数値配列から構成されるコンマ区切りのペアとして指定します。次の表は,シードの選択に使用可能なオプションをまとめています。

説明
“集群”

Xから10%の副標本を無作為に抽出し,副標本内の観測値の個数がkより大きい場合は副標本に対して予備クラスタリングフェーズを実行します。この予備フェーズは“样本”を使用して初期化されます。

無作為な10%の副標本内の観測値の個数がkより小さい場合,k個の観測値がXから無作為に選択されます。

“+”(既定の設定) クラスター中心の初期化にk - means + +アルゴリズムを実装してkシードを選択します。
“样本” k観測値をXから無作為に選択します。
“统一” k点を一様に無作為にXの範囲から選択します。ハミング距離には無効です。
数値行列 k行p列の行列の重心開始位置。开始の行はシードに対応します。开始の最初の次元からkが推測されるので,kに対して[]を渡すことができます。
数値配列 kx p rの重心開始位置の配列。各ページの行はシードに対応します。3番目の次元がクラスタリングルーチンの複製を呼び出します。ページjには複製jのシードのセットが含まれています。3番目次元の大きさから複製(名前と値のペアの引数“复制”により指定される)の数が推測されます。

例:“开始”、“样本”

データ型:字符|字符串||

出力引数

すべて折りたたむ

クラスターインデックス。数値列ベクトルとして返されます。idxにはXと同数の行があり,各行は対応する観測のクラスター割り当てを示します。

クラスター重心位置。数値行列として返します。Ck行p列の行列です。ここで、行 j はクラスター j の重心です。

クラスター内での点から重心までの距離の合計。数値行ベクトルとして返されます。sumdk行1列のベクトルです。ここで要素 j はクラスター j 内の点と重心までの距離の合計です。既定の設定では、kmeansは二乗ユークリッド距離を使用します(“距离”メトリクスを参照)。

各点からそれぞれの重心までの距離。数値行列として返されます。Dはn行k列の行列です。ここで、要素 (j、m) は観測 j から重心 m までの距離です。既定の設定では、kmeansは二乗ユークリッド距離を使用します(“距离”メトリクスを参照)。

詳細

すべて折りたたむ

k - meansクラスタリング

“k - meansクラスタリング”つまり,ロイドのアルゴリズム[2]は,データを分割する反復アルゴリズムであり,重心によって定義されたkクラスターのうち1つにn個の観測値をそれぞれ割り当てます。ここで,アルゴリズムを開始する前にkを選択します。

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

  1. k初期クラスター中心("重心")を選択します。たとえば,観測 k を (“开始”、“样本”を使用して)無作為に選択するか,クラスター中心の初期化(既定の設定)にk - means + +アルゴリズムを使用します。

  2. すべての観測について各重心までの,点とクラスター重心間の距離を計算します。

  3. 以下の2つの進め方があります(OnlinePhaseにより指定)。

    • バッチの更新——各観測を最も重心の近いクラスターに割り当てる。

    • オンライン更新——再割り当てによりクラスター内合計,点とクラスター重心間の距離が減少する場合,観測を異なる重心に個別に割り当てる。

    詳細は,アルゴリズムを参照してください。

  4. 各クラスター内の観測の平均を計算し,新規の重心位置kを取得します。

  5. クラスター割り当ての変化がなくなるか,反復回数が最大になるまで,手順2から4を繰り返します。

k - means + +アルゴリズム

“k——+ +アルゴリズム”は,経験則を使用してk - meansクラスタリングの重心シードを検出します。亚瑟およびVassilvitskii[1]によると,k - means + +はロイドのアルゴリズムの実行時間および最終的な解の質を改善します。

k - means + +アルゴリズムはクラスターの数をkと仮定して以下のようにシードを選択します。

  1. 観測を一様に無作為にデータセットXから選択します。選択された観測値は最初の重心であり,c1で示されます。

  2. 各観測からc1までの距離を計算します。cjと観測値mの間の距離を d x c j と表します。

  3. 次の重心c2を次の確率でXから無作為に選択します。

    d 2 x c 1 j 1 n d 2 x j c 1

  4. 中心jを選択するには,以下を行います。

    1. 各観測から各重心までの距離を計算します。各観測を最も近い重心に割り当てます。

    2. M = 1,…、nおよびp=1、...j - 1について,重心jを次の確率でXから無作為に選択します。

      d 2 x c p h x h C p d 2 x h c p

      ここでCpは重心cpに最も近いすべての観測値の集合です。xはCpに属します。

      つまり,それ自体から,既に選択されたなかで最も近い中心までの距離に比例する確率で,次の中心を選択します。

  5. k個の重心が選択されるまでステップ4を繰り返します。

亚瑟とVassilvitskii[1]は,複数のクラスター傾向のシミュレーション分析を使用して,k - means + +はロイドのアルゴリズムよりも,より低いクラスター内の点とクラスター重心間の距離の二乗和への収束を迅速に達成することを実証しました。

アルゴリズム

  • kmeansは2つのフェーズの反復アルゴリズムを使用して,すべてのkクラスターにわたって合計される点と重心間距離の総計を最小化します。

    1. 1番目のフェーズでは,“バッチ更新”を使用します。つまり,各反復で,最も近いクラスターの重心に点を再割り当てするという操作をすべて同時に行ってから,クラスターの重心を再計算します。このフェーズでは,局所的最小値となる解に収束されないこともあります。つまり1つの点を他のクラスターに移動するデータ分割がと距離の総和を増大させます。これは,規模の小さなデータセットでよく発生します。バッチフェーズは高速ですが,2番目のフェーズの開始点となる解だけが概算される可能性があります。

    2. 2番目のフェーズでは,“オンライン更新”を使用します。この更新では,点を個別に再割り当てし,再割り当てすることで距離の合計が減少する場合は,各再割り当ての後にクラスター重心を再計算します。このフェーズでの各反復は,すべての点を経過する1つの引き渡しで構成されます。このフェーズは局所的最小値に収束されます。ただし,距離の総和がより低い局所的最小値が他にある可能性もあります。一般に大域的最小値の検出は,開始点を網羅的に選択することで解決します。しかし,通常は無作為な開始点をもつ複製を複数使用すると,結果的に解は大域的最小値になります。

  • 复制= r > 1および开始+(既定値)の場合,k - means + +アルゴリズムに従って,さまざまなシードの集合rが選択される可能性もあります。

  • 选项UseParallelオプションを有効にし,复制> 1とした場合,各ワーカーはシードの選択とクラスター化を並列で行います。

参照

亚瑟,大卫和塞吉·瓦西里维茨基。" K-means++:小心播种的好处"第18届ACM-SIAM离散算法年会论文集,2007,第1027-1035页。

[2] Lloyd, Stuart P. < PCM中的最小二乘量化>IEEE信息理论汇刊。1982年第28卷,129-137页。

多变量观测。John Wiley & Sons, Inc., 1984。

聚类分解与分析:理论,FORTRAN程序,实例。J.戈德施密特(J. Goldschmidt)翻译。纽约:霍尔斯特德出版社,1985年。

拡張機能

R2006aより前に導入