データマイニング学習 - クラスター分析 (K-means クラスタリング、DBSCAN、AGNES)、Python コード

目次

1. はじめに

2. クラスタリング問題

(1) クラスタリング問題の定義

(2) クラスタリングの根拠(距離の定義)

3. プロトタイプベースのクラスタリング手法 (k-means クラスタリング)

(1) K-means クラスタリングの基本的な考え方と基本手順

 (2) K-means クラスタリングの特徴

4. 密度ベースのクラスタリング手法 DBSCAN

5. 階層型クラスタリング手法(AGNESクラスタリング手法)

6.Pythonコード

(1) K-means クラスタリング

(2)DBSスキャン

(3)アグネス


1. はじめに

以前のタイプのデータ マイニングの目的は、サンプル データとラベルの間の関係をマイニングすることであるため、この学習モデルは教師あり学習と呼ばれます。

クラスター分析も学習モードの 1 つで、処理されるデータにはラベルがないため、教師なし学習法とも呼ばれます

クラスター分析とは、データ内の相互関係に従ってデータ サンプルを異なるセットに分割することを指します。

2. クラスタリング問題

(1) クラスタリング問題の定義

クラスター分析の結果、類似したサンプルは同じクラスターに分割され大きな差異のあるサンプルは異なるクラスターに分割されます

(2) クラスタリングの根拠(距離の定義)

サンプルのクラスタリングの基礎はサンプル間の類似性であり、サンプル間の類似性は通常、サンプル距離によって測定されます

異なる距離定義を使用すると、クラスタリングの結果に大きな影響を与える可能性があります。一般的な距離の定義は次のとおりです。

1. ミンコフスキー距離

2. マンハッタンの距離

3. ユークリッド距離

4. 加重ミンコフスキー距離

5. コサイン距離

3. プロトタイプベースのクラスタリング手法 (k-means クラスタリング)

一般的なクラスタリング方法には、プロトタイプ ベースのクラスタリング方法、密度ベースのクラスタリング方法、および階層的クラスタリング方法の 3 つがあります。

プロトタイプベースのクラスタリング方法:いわゆるプロトタイプは一般にクラスターの中心点を指し、クラスター内のすべてのサンプルはこの中心点と同様の特性を持ちます。

K 平均法クラスタリング: K 平均法クラスタリングは、典型的なプロトタイプベースのクラスタリング手法であり、すべてのサンプルが k 個のクラスターに分割でき、各サンプルがクラスターの 1 つに属することを前提としています。

(1) K-means クラスタリングの基本的な考え方と基本手順

K 平均法クラスタリングの基本的な考え方は次のとおりです。サンプル セット D={x1,x2,...,xn} が与えられた場合、クラスター パーティション C={C1,C2,. ...,Cn} を見つけて、次のようにします。すべてのサンプル ポイントからサンプル ポイントが存在するクラスターの重心までの距離の二乗誤差の合計 (SSE) が最小になります。

基本的な手順:

1.重心を初期化する

2. サンプルのクラスタリング

3. クラスターの重心を計算します。

4. 終了条件の判定

(下図に示すように、k-meansクラスタリング処理です)

 (2) K-means クラスタリングの特徴

K-means クラスタリングを実行するときは、次の点に注意してください。

1. k の選択(クラスタリングに異なる k 値を使用すると、最終結果は異なります)

2. ランダムに生成された初期化重心(初期化重心によって引き起こされる悪い結果によるクラスタリング結果を避けるために、さらにいくつかの初期化重心のセットを生成して、いくつかのクラスタリング結果のセットを生成できます)

3. 計算プロセスにおける空のクラスター(一部のサンプル ポイントは、クラスタリング プロセス中にどのクラスターにも属さない場合があります。これは空のクラスターと呼ばれます。空のクラスターがクラスタリングの結果に与える影響を回避するには、空のクラスターは空にならないように質点を指定します)

4. 外れ値

5. 異性のデータ

4. 密度ベースのクラスタリング手法 DBSCAN

(ノイズ指向の密度ベースの空間クラスタリング)

クラスタリング方法は、サンプル分布の密さを説明する一連の近傍パラメータ (近傍半径、近傍密度閾値)に基づいており、これをクラスタリングの基礎として使用します。

プロセス:

1. 近傍半径と近傍密度のしきい値を設定します。

2. サンプル ポイントのタイプを計算します(データ セット内のすべてのサンプルをコア ポイント、境界ポイント、またはノイズ ポイントとしてマークします)。

3. クラスタリング(最初にコア ポイントをクラスタリングし、次に近傍半径よりも距離が小さいコア ポイントをクラスタにマージし、境界点をそれに関連付けられたコア ポイントのクラスタにマージします。ノイズ ポイントはクラスタ化されません。任意のクラスター)

特徴:事前にクラスタ数を定式化する必要がなく、K-means クラスタリング法と比較して、DBSCAN クラスタリング法で得られるクラスタの形状は球形に限定されなくなり、任意に分布させることができます。

5. 階層型クラスタリング手法(AGNESクラスタリング手法)

階層ベースのクラスタリング手法は、データセットをさまざまな階層に基づいてクラスターに分割することです。階層的クラスタリング手法には、ボトムアップ凝集手法とトップダウン分割手法の 2 種類があります。

AGNES は、ボトムアップ凝集戦略を使用した階層的クラスタリング手法ですまず、データ セット内の各サンプル ポイントを個別のクラスターと見なし、次に、クラスターの事前設定数に達するまで、最も近い 2 つのクラスターをマージします。

特徴:あらゆる形状のクラスタリングに適しており、K-means クラスタリングと比較して外れ値の影響が少ない。

6.Pythonコード

(1) K-means クラスタリング

from sklearn.cluster import KMeans
kmeans=KMeans(n_clusters=4)
# 对数据集X进行聚类
kmeans.fit(X)
# kmeans.labels_输出数据集X的每个样本的分簇结果
y=kmeans.labels_
# kmeans.cluster_centers_输出聚类后簇的中心点(质点)的位置
centers=kmeans.cluster_centers_

# labels是聚类模型对新数据X1中每个样本的预测分簇结果
labels=kmeans.predict(X1)

パラメータの説明:

n_clusters は準クラスタリングです

(2)DBSスキャン

from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.3,min_samples=5)
dbscan.fit(X)
y=dbscan.labels_

 パラメータの説明:

esp は近傍半径、min_samples は近傍密度しきい値です。

(3)アグネス

from sklearn.cluster import AgglomerativeClustering
agg=AgglomerativeClustering(n_clusters=4,linkage='single')
agg.fit()
y=agg.labels_

パラメータの説明:

n_clusters はクラスター化されるクラスターの数であり、リンケージはクラスターまでのクラスター間距離に基づきます。(「単一」は単一のリンクを意味し、「完全」は完全なリンクを意味し、「平均」は両方のリンクを意味します)

おすすめ

転載: blog.csdn.net/weixin_52135595/article/details/127037847