KはRでのクラスタリングを意味します:例を使用したステップバイステップのチュートリアル

公開: 2020-02-17

データサイエンティストとして、あなたは多くのクラスタリングを行うでしょう。 利用可能なクラスタリングアルゴリズムには多くの種類があり、それらすべての使用に精通している必要があります。 この記事では、一般的なクラスタリングアルゴリズムであるK-meansについて説明し、Rでどのように使用されるかを確認します。

RでのK-meansクラスタリングの背後にある基本的な理論と、その使用方法について説明します。 また、この記事の後半で実際の例についても説明しました。 今後の参考のために、この記事をブックマークしてください。 データマイニングのクラスタリング分析の詳細をご覧ください。

KはRでのクラスタリングを意味することを説明する前に、このアルゴリズムがそれらをどのように処理するかをよりよく理解できるように、存在するクラスタリングアルゴリズムのタイプを確認する必要があります。

読む:データサイエンスのトップRライブラリ

目次

クラスタリングの種類

互いに最も類似しているオブジェクトが密集したクラスター内にあるように複数のオブジェクトをグループ化する場合、それはクラスタリングと呼ばれます。 オブジェクト間の距離は、それらの類似性に関連している可能性があります。 類似性は、データサイエンスにおける2つの異なるオブジェクト間の関係の強さを示しています。 クラスタリングは、一般的なデータマイニング手法です。 クラスタリングは、画像分析、機械学習、データ圧縮、パターン認識など、さまざまな業界や分野でその用途があります。

クラスタリングには、ハードとソフトの2つのタイプがあります。 それぞれについて簡単に説明しましょう。

  • ハードクラスターでは、データポイントはクラスターに完全に属するか、まったく属しません。 間にはありません。
  • ソフトクラスターでは、データオブジェクトは、ある程度の可能性または確率のために、一度に複数のクラスターに関連付けられる可能性があります。

世界のトップ大学からオンラインでデータサイエンスコース学びましょうエグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

クラスタリングアルゴリズムの種類

さまざまなタイプのクラスターがあるように、さまざまなタイプのクラスタリングアルゴリズムもあります。 クラスターモデルに基づいてアルゴリズムを区別できます。 これは、クラスターの形成方法に基づいてそれらを区別できることを意味します。 あらゆる種類のクラスタリングアルゴリズムについて話し始めると、このガイドは長すぎて要点から遠くなります。 したがって、ここでは、いくつかの著名なタイプのクラスタリングアルゴリズムについてのみ説明します。 接続性ベース、重心ベース、密度ベース、および分布ベースのクラスタリングアルゴリズムがあります。

K-Meansの基本概念

K-meansの基本的な概念は非常に単純です。 K-meansは、クラスター内の変動の合計が可能な限り最小になるようにクラスターを定義することに関連しています。 さまざまなk-meansアルゴリズムがあります。 最も一般的なk-meansアルゴリズムは、Hartigan-Wongアルゴリズムです。これは、クラスター内の変動の合計が、重心とそのアイテム間のユークリッド距離の2乗の合計に等しいことを示しています。

W( C k )= x i C k x i k 2

ここでx iはクラスターCkに属するデータポイントを指し kはクラスターCkに存在するデータポイントの平均値を指します。

x iの値はxikの間の距離の2乗の合計が最小になるようにする必要があります。

K-meansアルゴリズムとは何ですか?

アルゴリズムを使用するには、最初に、結果に存在するクラスターの数Kを指定する必要があります。 アルゴリズムは、最初にK個のオブジェクトをランダムに選択して、初期クラスターセンターとして機能します。 これらのオブジェクトをクラスター重心または手段と呼びます。 次に、残りのオブジェクトを最も近い重心に割り当てます。 クラスターの重心とオブジェクトの間のユークリッド距離によって、それらがどれだけ近いかが決まります。

オブジェクトをそれぞれの重心に割り当てた後、アルゴリズムはクラスターの平均値を計算します。 この再計算の後、観測値を再チェックして、それらが別のクラスターに近い可能性があるかどうかを確認します。 次に、それに応じてオブジェクトを図心に再割り当てします。 クラスターの割り当てが停止するまで、これらの手順を繰り返します。 これは、反復で形成されたクラスターが前の反復のクラスターと同じになったときに、反復の繰り返しを停止することを意味します。

K-Meansクラスタリングの使用(例)

RのK-meansアルゴリズムとは何か、およびそれがどのように機能するかがわかったので、より明確にするための例について説明しましょう。 この例では、ホールセール顧客のデータベースを使用して、組織の顧客をクラスター化します。 この問題のデータは、BerkleyUCIの機械学習リポジトリで入手できます。 こちらでチェックできます

まず、データを読み取ります。 そして、その要約を取得します。 データを読んでその要約を見ると、さまざまなカテゴリの上位の消費者の間にいくつかの大きな違いがあることがわかります。 正規化(またはスケーリング)では簡単に削除できない外れ値がいくつか見つかります。 このデータを使用して、企業はミッドレンジの顧客がほとんどの場合何を購入しているかを確認したいと思うでしょう。 それは、企業がトップ顧客が何を購入するかについてまともな考えを持っているからです。

中間レベルの顧客のクラスターを作成するには、最初に各カテゴリーの顧客の最上位層を取り除く必要があります。 そこで、上位5つを削除して、新しいセットを作成します。 これを行う方法は次のとおりです。

top.n.custs <-function(data、cols、n = 5){#データフレームとトップNを削除する必要があります

idx.to.remove <-integer(0)#ベクターを初期化して、削除される顧客を保持します

for(c in cols){#この関数に渡したデータのすべての列

col.order <-order(data [、c]、decreasing = T)#列「c」を降順で並べ替えます(上に大きい方)

#Orderは、並べ替えられた実際の値ではなく、並べ替えられたインデックス(たとえば、行15、3、7、1、…)を返します。

idx <-head(col.order、n)#ソートされた列Cの最初のnを

idx.to.remove <-union(idx.to.remove、idx)#削除する必要のある行IDを結合して重複排除します

}

return(idx.to.remove)#削除する顧客のインデックスを返します

}

top.custs <-top.n.custs(data、cols = 3:8、n = 5)

length(top.custs)#削除する必要のある顧客の数は?

data [top.custs、]#利用可能な顧客を調べる

data.rm.top <-data [-c(top.custs)、]#必要な顧客を削除します

この新しいファイルを使用して、クラスター分析の作業を開始できます。 クラスター分析を実行するには、次のコードを使用します。

set.seed(76964057)#再現性のためにシードを設定します

k <-kmeans(data.rm.top [、-c(1,2)]、centers = 5)#5つのクラスターを作成し、列1と2を削除します

k $ centers#Display&nbsp; cluster center

table(k $ cluster)#各クラスターのデータポイントの数を指定します

特定のデータベースでこのコードを実行すると、次の結果が得られます。

  • 最初のクラスターには高品質の洗剤が含まれますが、生鮮食品の量は少なくなります
  • 3番目のクラスターには、より新鮮な製品が含まれます

結果の詳細な解釈には、insidesとbetweensを使用する必要があります。 k $ withinssは、クラスターの中心からの各データオブジェクト間の距離の2乗の合計に等しくなります。 範囲が小さいほど、結果は良くなります。 データの範囲内の測定値が高い場合は、外れ値が多数存在することを意味し、データのクリーニングを実行する必要があります。 k $ betweenssは、クラスターの異なる中心間の距離の2乗の合計です。 クラスターの中心間の距離は、可能な限り高くする必要があります。

読む:6Rでより一般的に使用されるデータ構造

最も正確な結果を得るには、試行錯誤の助けを借りる必要があります。 そのためには、Kのさまざまな値を試す必要があります。結果のグラフにクラスター内の増分が表示されない場合は、そのポイントがKに最適な値になります。値を見つけることができます。次のコードによるKの:

rng <-2:20#K2から20

試行<-100#KMeansアルゴリズムを100回実行する

avg.totw.ss <-integer(length(rng))#すべてのポイントを保持する空のベクトルを設定します

for(v in rng){#範囲変数の値ごと

v.totw.ss <-integer(tries)#100回の試行を保持するために空のベクトルを設定します

for(i in 1:tries){

k.temp <-kmeans(data.rm.top、centers = v)#kmeansを実行します

v.totw.ss [i] <-k.temp $ tot.withinss#合計内の値を保存

}

avg.totw.ss [v-1] <-mean(v.totw.ss)#100の合計内の平均

}

plot(rng、avg.totw.ss、type =” b”、main =”さまざまなKによるSS内の合計”、

ylab =”二乗和内の平均合計”、

xlab =” Kの値”)

それでおしまい。 これで、このコードから取得したグラフを使用してKの最適な値を取得し、それを使用して必要な結果を取得できます。 この例を使用して、RでのK-meansクラスタリングの知識を試してください。この例で使用したすべてのコードは次のとおりです。

data <-read.csv(“ Wholesale Customers data.csv”、header = T)

要約(データ)

top.n.custs <-function(data、cols、n = 5){#データフレームとトップNを削除する必要があります

idx.to.remove <-integer(0)#ベクターを初期化して、削除される顧客を保持します

for(c in cols){#この関数に渡したデータのすべての列

col.order <-order(data [、c]、decreasing = T)#列「c」を降順で並べ替えます(上に大きい方)

#Orderは、並べ替えられた実際の値ではなく、並べ替えられたインデックス(たとえば、行15、3、7、1、…)を返します。

idx <-head(col.order、n)#ソートされた列Cの最初のnを

idx.to.remove <-union(idx.to.remove、idx)#削除する必要のある行IDを結合して重複排除します

}

return(idx.to.remove)#削除する顧客のインデックスを返します

}

top.custs <-top.n.custs(data、cols = 3:8、n = 5)

length(top.custs)#削除する顧客の数は?

data [top.custs、]#顧客を調べる

data.rm.top <-data [-c(top.custs)、]#顧客を削除する

set.seed(76964057)#再現性のためにシードを設定します

k <-kmeans(data.rm.top [、-c(1,2)]、centers = 5)#5つのクラスターを作成し、列1と2を削除します

k $ centers#クラスターセンターを表示

table(k $ cluster)#各クラスターのデータポイントの数を指定します

rng <-2:20#K2から20

trys <-100#KMeansアルゴリズムを100回実行する

avg.totw.ss <-integer(length(rng))#すべてのポイントを保持する空のベクトルを設定します

for(v in rng){#範囲変数の値ごと

v.totw.ss <-integer(tries)#100回の試行を保持するために空のベクトルを設定します

for(i in 1:tries){

k.temp <-kmeans(data.rm.top、centers = v)#kmeansを実行します

v.totw.ss [i] <-k.temp $ tot.withinss#合計内の値を保存

}

avg.totw.ss [v-1] <-mean(v.totw.ss)#100の合計内の平均

}

plot(rng、avg.totw.ss、type =” b”、main =”さまざまなKによるSS内の合計”、

ylab =”二乗和内の平均合計”、

xlab =” Kの値”)

結論

このガイドを気に入っていただけたでしょうか。 私たちはそれを簡潔かつ包括的に保つように努めました。 K-meansアルゴリズムについてご不明な点がございましたら、お気軽にお問い合わせください。 私たちはあなたの質問に答えたいです。

データサイエンスについて知りたい場合は、IIIT-B&upGradのデータサイエンスのエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップを提供します。1業界のメンターとの1対1、400時間以上の学習、トップ企業との仕事の支援。

K-meansを使用することの欠点は何ですか?

外れ値は重心を引っ張ることができます。または、外れ値は無視されるのではなく、独自のクラスターが与えられる場合があります。 K-meansは確率論的であるため、グローバルに最適なクラスタリングソリューションが見つかることを保証できません。 実際には、外れ値とノイズの多いデータにより、アルゴリズムの感度が高くなる可能性があります。 グループ化する前に、外れ値を削除または削減することを検討してください。 可変のサイズと密度でデータをグループ化する場合、K-meansには問題があります。 このようなデータをクラスター化するには、K-meansを一般化する必要があります。 それらが明らかに同じクラスターに属している場合でも、k-meansアルゴリズムでは、遠く離れたデータポイントが同じクラスターを共有することはできません。

K-meansのエルボー法とは何ですか?

k-means法は、適切な数のクラスターを見つけることに大きく依存しています。 エルボーアプローチは、最適なK値を決定するために広く使用されている方法です。 エルボー手法は、グラフ上のK値の範囲に対してデータセットでK-meansクラスタリングを実行し、Kの値ごとにすべてのクラスターの平均スコアを計算します。歪みスコアは、各ポイントからの二乗距離の合計です。割り当てられた中心に、デフォルトで計算されます。 データセットを特徴付ける主要コンポーネントの数など、他のデータ駆動型モデルでは、同じ手法を使用してパラメーターの数を決定できます。

K-meansで外れ値を見つけるにはどうすればよいですか?

K-Meansクラスタリングの外れ値は、距離ベースの手法とクラスターベースの手法の両方を使用して発見できます。 外れ値は、階層的クラスタリングの場合に樹状図を使用して発見されます。 プロジェクトの目的は、クラスタリングをより正確にするために、外れ値を発見して排除することです。 データは、K-meansベースの外れ値識別アプローチで最も近いクラスターセンターに割り当てることにより、Kグループに分割されます。 次に、各アイテムとそのクラスターの中心との間の距離または非類似度を計算し、距離が最大の外れ値を選択します。 極端な値は平均にすぐに影響を与える可能性があるため、K-meansクラスタリング手法は外れ値に敏感です。