R でエルボー法を使用して最適なクラスターを見つける方法


機械学習で最も一般的に使用されるクラスタリング アルゴリズムの 1 つは、 k-means クラスタリングとして知られています。

K 平均法クラスタリングは、データセットの各観測値をK個のクラスターの 1 つに配置する手法です。

最終的な目標は、各クラスター内の観測値が互いによく似ている一方で、異なるクラスター内の観測値が互いにまったく異なるK個のクラスターを作成することです。

K 平均法クラスタリングを行う場合、最初のステップはKの値 (観測値を配置するクラスターの数) を選択することです。

Kの値を選択する最も一般的な方法の 1 つは、エルボ法として知られています。これには、x 軸にクラスターの数、y 軸に平方和の合計を使用してプロットを作成し、その後、プロット内で「膝」またはターンが現れる場所。

「ニー」が発生する x 軸上の点は、k-means クラスタリング アルゴリズムで使用する最適なクラスター数を示します。

次の例は、R でエルボ メソッドを使用する方法を示しています。

例: R でのエルボ メソッドの使用

この例では、R に組み込まれているUSArrestsデータセットを使用します。このデータセットには、1973 年の米国各州における殺人、暴行、強姦による人口 100,000 人あたりの逮捕数と、都市部に住む各州の人口の割合が含まれています。地域。 、アーバンポップ。

次のコードは、データセットをロードし、欠損値のある行を削除し、平均が 0、標準偏差が 1 になるようにデータセット内の各変数をスケーリングする方法を示しています。

 #load data
df <-USArrests

#remove rows with missing values
df <- na. omitted (df)

#scale each variable to have a mean of 0 and sd of 1
df <- scale(df)

#view first six rows of dataset
head(df)

               Murder Assault UrbanPop Rape
Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
Arizona 0.07163341 1.4788032 0.9989801 1.042878388
Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602
California 0.27826823 1.2628144 1.7589234 2.067820292
Colorado 0.02571456 0.3988593 0.8608085 1.864967207

K 平均法アルゴリズムで使用する最適なクラスター数を見つけるには、 factoextraパッケージのfviz_nbclust()関数を使用して、クラスター数と二乗和の合計のプロットを作成します。

 library (cluster)
library (factoextra)

#create plot of number of clusters vs total within sum of squares
fviz_nbclust(df, kmeans, method = “ wss ”) 

Rベンド法

このグラフでは、k = 4 クラスターに「ニー」またはキンクがあるように見えます。これは、二乗和の合計が安定し始めるポイントです。

これは、k-means アルゴリズムで使用する最適なクラスター数が 4 であることを示しています。

: より多くのクラスターを使用すると二乗和の合計が小さくなる可能性がありますが、トレーニング データを過剰適合する可能性が高いため、K 平均法アルゴリズムはテスト データではうまく機能しません。

クラスターパッケージのkmeans()関数を使用して、 kの最適値 4 を使用してデータセットに対して k 平均法クラスタリングを実行できます。

 #make this example reproducible
set. seeds (1)

#perform k-means clustering with k = 4 clusters
km <- kmeans(df, centers = 4, nstart = 25)

#view results
km

K-means clustering with 4 clusters of sizes 16, 13, 13, 8

Cluster means:
      Murder Assault UrbanPop Rape
1 -0.4894375 -0.3826001 0.5758298 -0.26165379
2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
3 0.6950701 1.0394414 0.7226370 1.27693964
4 1.4118898 0.8743346 -0.8145211 0.01927104

Vector clustering:
       Alabama Alaska Arizona Arkansas California Colorado 
             4 3 3 4 3 3 
   Connecticut Delaware Florida Georgia Hawaii Idaho 
             1 1 3 4 1 2 
      Illinois Indiana Iowa Kansas Kentucky Louisiana 
             3 1 2 1 2 4 
         Maine Maryland Massachusetts Michigan Minnesota Mississippi 
             2 3 1 3 2 4 
      Missouri Montana Nebraska Nevada New Hampshire New Jersey 
             3 2 2 3 2 1 
    New Mexico New York North Carolina North Dakota Ohio Oklahoma 
             3 3 4 2 1 1 
        Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee 
             1 1 1 4 2 4 
         Texas Utah Vermont Virginia Washington West Virginia 
             3 1 2 1 1 2 
     Wisconsin Wyoming 
             2 1 

Within cluster sum of squares by cluster:
[1] 16.212213 11.952463 19.922437 8.316061
 (between_SS / total_SS = 71.2%)

Available components:

[1] "cluster" "centers" "totss" "withinss" "tot.withinss" "betweenss"   
[7] "size" "iter" "ifault"         

結果から次のことがわかります。

  • 16 の状態が最初のクラスターに割り当てられました
  • 13 の状態が 2 番目のクラスターに割り当てられています
  • 13 の州が 3 番目のクラスターに割り当てられています
  • 8 つの状態が 4 番目のクラスターに割り当てられています

各州のクラスター割り当てを元のデータセットに追加することもできます。

 #add cluster assignment to original data
final_data <- cbind(USArrests, cluster = km$cluster)

#view final data
head(final_data)

	Murder Assault UrbanPop Rape cluster
				
Alabama 13.2 236 58 21.2 4
Alaska 10.0 263 48 44.5 2
Arizona 8.1 294 80 31.0 2
Arkansas 8.8 190 50 19.5 4
California 9.0 276 91 40.6 2
Colorado 7.9 204 78 38.7 2

元のデータベースからの各観測値は、4 つのグループのいずれかに分類されました。

追加リソース

次のチュートリアルでは、R でさまざまなクラスタリング アルゴリズムを実行する方法について段階的な例を示します。

R での K-Means クラスタリング: ステップバイステップの例
R での K-Medoids クラスタリング: ステップバイステップの例
R の階層的クラスタリング: 段階的な例

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です