機械学習アルゴリズムのクラスタリングアルゴリズム--- scikitは、学ぶDBSCAN

DBSCANクラスタリングアルゴリズム

  • 空間面積密度ベースのクラスタリングアルゴリズムは、アルゴリズムは、クラスタに分割十分な密度を有するであろう、任意の形状のクラスタとノイズを有するデータ空間に見出されるが、最大設定点は、接続されたクラスタの密度と定義します。

  • DBSCAN、2つのパラメータが指定する必要があります

    • イプシロン:隣接点領域の周りに半径

    • minPts:点の少なくとも数内側領域に隣接含みます

      三つのカテゴリー中点に分け試料の特性上記の二つのパラメータに従ってイプシロン近傍を結合

      • サンプル点と比較してミートNBHD(P、イプシロン)> = minPts、コア点(COR点)
      • 境界点(境界点)NBHD(P、ε)<minPtsが、この点は、得られたコア・ポイントの数であってもよいです
      • 異常値(異常値):どちらも核もポイントエッジ点
  • あなたは、以下のサンプル分布のサンプル空間の数を見ることができ理解できない場合は、仕様(イプシロン近傍半径)に応じて同様の密度、赤い円から、1つのグループにサンプル空間内の点の近くの点をクラスタ化され、最終的にAが格納されています5点近く、それは赤のクラスタ位置でマーク、赤でマークされ、他方が同じルールに従って、クラスタ内に収容されていません。十分な場合は画像、我々は、指定された半径内に、選択されたサンプル点描円の周り、円の半径と円内の点の規定が少なくとも含まれ、多くの時の選択されたサンプルを得るために、このシステムと考えることができアカウントへのサンプル点の数は、その後、他の内部のサンプル点に円の中心のシフトは、ローリングサークル見つけるまで、組立ラインをオフに開発し続ける、ピラミッド方式と同様に、近傍に円に他のサンプル点を続行しますサンプル点の数が少ない停止予め指定した値よりも囲まれている。我々は言う以下の図Aにおけるコア・ポイントのための開始点、境界点、以下のチャートBとしてその点に絞り、C.ないロールありません外れ値としてその点、図Nとして

K平均クラスタリングアルゴリズムとの間の差1.1DBSCAN

  • K平均クラスタリングアルゴリズムは、この時点では、金型への伝統的なクラスタリングアルゴリズムを固体としてラジカル重合である球状のクラスターを扱うが、多くの場合、実際に異なる形状データを持つことができるので、デンシトメトリーによってあなたができるようにします。クラスタリングアルゴリズムはDBSCANです

(前提minPts及びイプシロンの下で知られている)1.2DBSCANステップ

  • 任意NBHD(P、ε)を算出する(いずれも外れ値として特定のクラスに割り当てられていない)点を選択することコアポイントが、もしそうであれば、そうでない場合は、この点を中心セットをクラスを作成するか否かを判断します外れ値。
  • ポイントはミックスに外れ値の追加としてマークされている場合は、他の点は、クラスの確立まで、ミックスポイントへの密度に到達可能なアドオンを加え、続いて、直接到達可能なポイントのカテゴリを、トラバース状態境界点を変更します。
  • 繰り返し手順1とクラス(コア・ポイント又はエッジ点)で満たす全ての点又は境界点まで2

    重要なパラメータの1.3DBSCAN種類

    DBSCAN重要なパラメータのクラスはまた、2つのカテゴリに分類され、1がDBSCAN自体のパラメータであり、一つはのは、これらのパラメータの要約をやらせる、最近傍メトリックパラメータです。

    1)EPS:DBSCANアルゴリズムパラメータ、我々の近傍εε-すなわち距離閾値、およびεεサンプル点以上のサンプルの距離はεε-近隣ではありません。デフォルト値は0.5である。通常のセットのうちの複数の適切な閾値を選択する必要があります。EPSが大きすぎる、より多くのポイントは、私たちがクラスに分類されるサンプルのようなものではありませんカテゴリの数を、低下する可能性があります。この時点で、コアオブジェクトεε-近所に分類されます。それ以外の場合は、カテゴリの数を増やすことが、サンプルが開かれた部門のようなものだったかもしれません。

    2)min_samples:DBSCANアルゴリズムパラメータ、即ち、サンプル点は、必要なサンプルεε-近傍コアオブジェクトの閾値数れます。デフォルト値は、一般組における複数の適切な閾値を選択することにより、必要とされます。通常、一緒に調整パラメータEPS。特定の状況の下で、EPS、min_samples大きすぎる、中核オブジェクトが小さすぎ、クラスタは、クラスの数も多くなり、ノイズポイントとしてマークされてもよい本来試料内部のクラスです。小さすぎると逆にmin_samplesが、これはあまりにもいくつかのカテゴリにつながる可能性があり、コアオブジェクトの多くを生成します。

    3)メトリック:最近隣距離メトリック。距離測定は、当社のニーズを満たすためにDBSCANデフォルトユークリッド距離(すなわちp =ミンコフスキー距離2)より一般的に使用することができます。使用可能な距離メトリックは、次のとおりです。

  

    4)アルゴリズム:最近傍探索アルゴリズムパラメータ、アルゴリズム三の合計は、第1~第3ツリーボールが達成され、第二は、KDツリーを達成することで、ブルートフォースを達成することです。これらの三つの方法K最近傍(KNN)まとめ原理は審査に精通していないがダウンして行くことができれば、言われました。このパラメータの第三のボールツリーの実装に対応する、4つの選択可能入力の合計、「ブルート」第一の実現に対応したブルートフォース、「kd_tree」第KDツリーの実装に対応する、「ball_tree」、「自動」であります私たちは、最高のフィット感を選択するために、3つのアルゴリズム、最適化アルゴリズムの上でトレードオフを行います。入力サンプルの特性が疎であれば、我々は何を選ぶかの方法に関係なく、最後の「ブルート」を達成するためにブルートフォースを使用することをscikit-学びます、ということに注意してください。個人的な経験、一般的には、デフォルトを使用する「オート」で十分です。データや機能の大規模な量が時間の「オート」の貢献で、多くの場合は、非常に長い非効率的であることができ、それは、KDツリー・インプリメンテーション「kd_tree」を選択することをお勧めします、「kd_tree」遅くやサンプル配布を知っていた場合は、この時点ではありませんときに、非常に均一で、あなたは「ball_tree」を試すことができます。入力サンプルが疎であれば、あなたは最後の実際の動作を選択する方法に関係なくは、「ブルート」です。

    5)leaf_size:最近傍探索アルゴリズムパラメータを、KDツリーまたはツリーのボールを使用する場合、サブツリーのリーフノードしきい値の数の構成を停止します。この値が小さいほど、結果KD-ツリーまたはツリーボールも大きく、より深い層、より長い時間の貢献、およびその逆は、結果KD-木や木が小さなボール、層の浅いの数、短い方の成果です。この値はそれほど通常の状況下でそれを残すことができ、唯一のアルゴリズムを使用して、速度とメモリサイズに影響を与える一般的であるため、デフォルトは30です。

    6) p: 最近邻距离度量参数。只用于闵可夫斯基距离和带权重闵可夫斯基距离中p值的选择,p=1为曼哈顿距离, p=2为欧式距离。如果使用默认的欧式距离不需要管这个参数。

    以上就是DBSCAN类的主要参数介绍,其实需要调参的就是两个参数eps和min_samples,这两个值的组合对最终的聚类效果有很大的影响。

1.4代码示例:

  • 为体现DBSCAN在非凸数据的聚类优点,首先生成一组随机数据:

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import datasets
    %matplotlib inline
    
    X1,y1 = datasets.make_circles(n_samples=5000,factor=.6,noise=.05)
    X2,y2 = datasets.make_blobs(n_samples=1000,n_features=2,centers=[[1.2,1.2]],cluster_std=[[.1]],random_state=9)
    X = np.concatenate((X1,X2))
  • K-Means聚类效果,代码如下

    from sklearn.cluster import KMeans
    y_pred = KMeans(n_clusters=3,random_state=9).fit_predict(X)
    plt.scatter(X[:,0],X[:,1],c=y_pred)
    plt.show()

  • DBSCAN聚类效果,代码如下:

    from sklearn.cluster import DBSCAN
    y_pred = DBSCAN().fit_predict(X)
    plt.scatter(X[:,0],X[:,1],c=y_pred)
    plt.show()

  • 但不是我们所期望的,它将所有数据都归为一类,需要对DBSCAN的两个关键参数eps和min_samples进行调参,我们减少eps到0.1看看效果:

    from sklearn.cluster import DBSCAN
    y_pred = DBSCAN(eps=0.1).fit_predict(X)
    plt.scatter(X[:,0],X[:,1],c=y_pred)
    plt.show()

参照链接:

おすすめ

転載: www.cnblogs.com/xujunkai/p/12115040.html