スペクトラルクラスタリングのパラメータ解説


 

以前の記事はスペクトラルクラスタリングについて説明しました。スペクトラルクラスタリングとは、クラスタリングの機械学習の方法のうち、教師なし学習に分類されます。スペクトラルクラスタリングの詳細はこちらです。

 

今回の記事はスペクトラルクラスタリングのパラメータ設定を説明します。

Scikit-learnのライブラリのパラメータを説明していきます。

 

class sklearn.cluster.SpectralClustering(n_clusters=8, eigen_solver=None, random_state=None, n_init=10, gamma=1.0, affinity=’rbf’, n_neighbors=10, eigen_tol=0.0, assign_labels=’kmeans’, degree=3, coef0=1, kernel_params=None, n_jobs=None)

 

先ず、スペクトラルクラスタリングの例を作成します。

 

from sklearn import datasets

 

# データ作成

X,z = datasets.make_blobs(n_samples=5000,

                          n_features=2,

                          centers=15,

                          cluster_std=1.2,

                          center_box=(-10.0, 10.0),

                          shuffle=True,

                          random_state=111

                          )

 

# データの整形

sc=preprocessing.StandardScaler()

sc.fit(X)

X_norm=sc.transform(X)

 

start = time.time()

 

# SpectralClustering

# sp_cls=cluster.SpectralClustering(n_clusters=2, affinity=”nearest_neighbors”)

 

 

sp_cls = cluster.SpectralClustering(n_clusters=2,

                                    eigen_solver=None,

                                    random_state=None,

                                    n_init=10,

                                    gamma=1.0,

                                    affinity=’nearest_neighbors’,

                                    n_neighbors=10,

                                    eigen_tol=0.0,

                                    assign_labels=’kmeans’,

                                    degree=3,

                                    coef0=1,

                                    kernel_params=None,

                                    n_jobs=-1

                                    )

 

cls=sp_cls.fit(X_norm)

 

end = time.time()

# 図作成

x=X_norm[:,0]

y=X_norm[:,1]

plt.figure(figsize=(7,7))

plt.scatter(x,y, c=z)

plt.scatter(x,y, c=cls.labels_)

plt.text(.99, .01, (‘%.2fs’ % (end – start)).lstrip(‘0’),

         transform=plt.gca().transAxes, size=15,

         horizontalalignment=’right’)

plt.show

sp_cls_01

 

n_clusters : integer, optional

クラスタの数のパラメータ

sp_cls_02

eigen_solver : {None, ‘arpack’, ‘lobpcg’, or ‘amg’}

固有値分解の方法を指定しています。AMGを利用する場合はpyamgのライブラリが必要です。AMGを利用すれば、処理時間は早くなります。

sp_cls_03

 

random_state : int, RandomState instance or None (default)

random_stateは乱数種の設定になります。 同じ結果を再現する場合に指定します。

 

n_init : int, optional, default: 10

k-meansアルゴリズムを利用した重心の初期設定になります。 最終結果は、n_init回数連続実行したうちの最良の回数での結果になります。回数が多いほど時間がかかります。

sp_cls_04

 

gamma : float, default=1.0

rbf, poly, sigmoid, laplacian chi2 のgammaのKernel coefficient設定ことができます。. affinity=’nearest_neighbors’には利用できません。

sp_cls_05

 

affinity : string, array-like or callable, default ‘rbf’

‘nearest_neighbors’、 ‘precomputed’、 ‘rbf’、またはsklearn.metrics.pairwise_kernelsでサポートされているカーネル関数を設定します。類似性スコアを計算するのに用います。

sp_cls_06

 

n_neighbors : integer

最近傍法を使用して類似性行列を構築するときに使用する隣接の数。 affinity = ‘rbf’では無効です。

sp_cls_07

 

n_neighbors : integer

最近傍法を使用して類似性行列を構築するときに使用する隣接の数。 affinity = ‘rbf’では無効です。

sp_cls_08

 

assign_labels : {‘kmeans’, ‘discretize’}, default: ‘kmeans’

埋め込みスペースにラベルを割り当てるために使用する戦略です。 ラプラシアン埋め込み後にラベルを割り当てるには2つの方法があります。 k-meansが適用可能であり、一般的な選択です。 しかし、それは初期化にも敏感です。 離散化は、ランダム初期化による影響を受けにくいもう1つの方法です。

sp_cls_09

 

assign_labels : {‘kmeans’, ‘discretize’}, default: ‘kmeans’

埋め込みスペースにラベルを割り当てるために使用する戦略です。 ラプラシアン埋め込み後にラベルを割り当てるには2つの方法があります。 k-meansが適用可能であり、一般的な選択です。 しかし、それは初期化にも敏感です。 離散化は、ランダム初期化による影響を受けにくいもう1つの方法です。

sp_cls_10

 

coef0 : float, default=1

polynomial およびsigmoidのZero coefficient のカーネル係数です。 他のカーネルでは無効です。

sp_cls_11

 

coef0 : float, default=1

polynomial およびsigmoidのZero coefficient のカーネル係数です。 他のカーネルでは無効です。