主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

dbscan

基于密度的带噪声应用的空间聚类

説明

idx= dbscan (Xεminptsは,dbscanアルゴリズム(アルゴリズムを参照)を使用して,n行p列のデ,タ行列X内の観測値をクラスタ,に分割します。dbscanは,コア点の識別に必要な近傍探索半径εおよび最小近傍点数minptsのしきい値に基づいて,観測値(または点)をクラスタ,化します。この関数は,各観測値のクラスタ,e e n行1列のベクトル(idx)を返します。

idx= dbscan (Xεminpts名称,值では,1以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば,“距离”、“闵可夫斯基”,“P”3を指定すると,dbscanアルゴリズムで指数3のミンコフスキ,距離計量を使用できます。

idx= dbscan (Dεminpts“距离”“预算”)は,事前計算済みの観測値間のペアワDに対するクラスタンデックスのベクトルを返します。Dには,pdistまたはpdist2の出力を指定するか,pdistまたはpdist2の出力形式にそれぞれ従う,より一般的な非類似度ベクトルまたは行列を指定できます。

idxcorepts= dbscan(___は,前の構文におけるいずれかの入力引数の組み合わせを使用して,dbscanが識別したコア点が格納されている逻辑ベクトルcoreptsも返します。

すべて折りたたむ

既定のユークリッド距離計量でDBSCANを使用して,2次元の円状データセットをクラスター化します。また,2乗ユ,クリッド距離計量でdbscanとk-表示クラスタリングを使用してデ,タセットをクラスタ,化した結果を比較します。

ノ▪▪ズがある2▪▪の円が含まれている人工的なデ▪タを生成します。

rng (“默认”%用于再现性%数据生成参数N = 300;%每个集群的大小R1 = 0.5;%第一个圆的半径R2 = 5;%第二圆半径= linspace(0,2*pi,N)';X1 = r1*[cos(theta),sin(theta)]+ rand(N,1);X2 = r2*[cos(theta),sin(theta)]+ rand(N,1);X = [x1; x2];%噪声二维圆形数据集

デ,タセットを可視化します。

散射(X (: 1), (2):,)

图中包含一个轴。坐标轴包含一个散点类型的对象。

デタに対してdbscanクラスタリングを実行します。εの値として1を,minptsの値として5を指定します。

idx = dbscan(X,1,5);默认的距离度量是欧氏距离

クラスタリングを可視化します。

gscatter (X (: 1) X (:, 2), idx);标题(使用欧几里得距离度量的DBSCAN

图中包含一个轴。标题为DBSCAN Using Euclidean Distance Metric的轴包含2个类型为line的对象。这些物体表示1,2。

ユークリッド距離計量を使用した場合,DBSCANはデータセット内の2つのクラスターを正しく識別します。

2乗ユクリッド距離計量を使用して,dbscanを実行します。εの値として1を,minptsの値として5を指定します。

idx2 = dbscan(X,1,5,“距离”“squaredeuclidean”);

クラスタリングを可視化します。

gscatter (X (: 1) X (:, 2), idx2);标题(使用平方欧几里得距离度量的DBSCAN

图中包含一个轴。标题为DBSCAN Using Squared Euclidean Distance Metric的轴包含2个类型为line的对象。这些物体表示1,2。

2乗ユークリッド距離計量を使用した場合,DBSCANはデータセット内の2つのクラスターを正しく識別します。

2乗ユ,クリッド距離計量を使用して,k-表示クラスタリングを実行します。k= 2クラスタ,を指定します。

kidx = kmeans(X,2);默认距离度量是欧几里得距离的平方

クラスタリングを可視化します。

gscatter (X (: 1) X (:, 2), kidx);标题(使用平方欧氏距离度规的K-Means

图中包含一个轴。标题为K-Means的轴使用平方欧几里得距离度量包含2个类型为直线的对象。这些物体表示1,2。

2乗ユ,クリッド距離計量を使用した場合,k-meansクラスタリングはデタセット内の2のクラスタを正しく識別できません。

関数dbscanに対する入力として観測値間のペアワイズ距離の行列を使用してDBSCANクラスタリングを実行し,外れ値とコア点の個数を求めます。データセットは,自動車の周囲にある物体の座標を含む3次元の点の集合として格納された激光雷达スキャンです。

物体のx y z座標を読み込みます。

负载(“lidar_subset.mat”) loc = lidar_子集;

自動車の周囲の環境を強調するため,道路表面の上部の領域で自動車の左右20メートルおよび前後20メートルにわたるように関心領域を設定します。

xBound = 20;米%yBound = 20;米%zLowerBound = 0;米%

指定した領域内の点のみが含まれるようにデ,タをトリミングします。

指数= loc (: 1) < = xBound & loc (: 1) > = -xBound...& loc(:,2) <= yBound & loc(:,2) >= -yBound...& loc(:,3) > zLowerBound;Loc = Loc(索引,:);

2次元散布図としてデ,タを可視化します。プロットに注釈を付けて,自動車を強調します。

散射(loc (: 1), loc (:, 2),“。”);注释(“椭圆”,[0.48 0.48 0.1 .1],“颜色”“红色”

图中包含一个轴。坐标轴包含一个散点类型的对象。

点集合の中心(赤い丸の部分)には,自動車の屋根とボンネットが含まれています。他のすべての点は障害物です。

関数pdist2を使用して,観測値間のペアワDを事前計算します。

D = pdist2(loc,loc);

ペアワ@ @ズ距離でdbscanを使用して,デ,タをクラスタ,化します。εの値として2を,minptsの値として50を指定します。

[idx, corepts] = dbscan(D,2,50,“距离”“预算”);

結果を可視化し,图に注釈を付けて特定のクラスタ,を強調します。

gscatter (loc (: 1), loc (:, 2), idx);注释(“椭圆”,[0.54 0.41 .07 .07],“颜色”“红色”网格)

图中包含一个轴。坐标轴包含12个line类型的对象。这些对象分别代表-1、1、2、3、4、5、6、7、8、9、10、11。

散布図に示されているように,dbscanは11個のクラスタを識別し,自動車を別個のクラスタに配置しています。

関数dbscanは,(中心が(3、4)の付近にある)赤い丸の点のグループをプロットの右下にある点のグループと同じクラスター(グループ7)に割り当てています。これらのグル,プは別々のクラスタ,に属すると考えられます。大きいクラスタ,を分断し,点をさらに分割するため,小さい値のεを試すことができます。

また,デ,タ内の外れ値(idxの値が1)もいくか識別されています。dbscanが外れ値として識別した点の個数を求めます。

求和(idx == -1)
Ans = 412

dbscanは,19070個の観測値から412個の外れ値を識別しました。

dbscanがコア点として識別した点の個数を求めます。coreptsの値の1は,コア点を示します。

Sum (corepts == 1)
Ans = 18446

dbscanは,18446個の観測値をコア点として識別しました。

より幅広い例にいては,Dbscanのパラメ,タ,値の決定を参照してください。

入力引数

すべて折りたたむ

入力デ,タ。n行p 列の数値行列を指定します。Xの行は観測値(点)に,列は変数に対応します。

デ,タ型:|

観測値間のペアワ@ @ズ距離。pdistが出力した数値行ベクトル,pdist2が出力した数値正方行列,逻辑行ベクトル,または逻辑正方行列を指定します。Dは,pdistまたはpdist2の出力形式にそれぞれ従う,より一般的な非類似度ベクトルまたは行列にすることもできます。

前述した指定に関して,n個の観測値(行)とp個の次元(列)がある入力行列Xに対してDで使用できる形式を次の表で説明します。

指定 形式
数値行ベクトル(pdist (X)の出力)
  • X内の観測値のペアに対応する,長さN (N - 1)/2の行ベクトル

  • (2,1),(3,1),…,(n,1), (3,2), ..., (n,2), ..., (n,n – 1))という順序で並んでいる距離

数値正方行列 (pdist2 (X, X)の出力)
  • N行N列の行列。D (i, j)X内の観測値およびjの間の距離

  • 対角要素がゼロに等しい対称行列

逻辑行ベクトル
  • X内の観測値のペアに対応する,長さN (N - 1)/2の行ベクトル

  • 距離がε以下であるかどうかを各要素が示す,逻辑行ベクトル

  • (2,1),(3,1),…,(n,1), (3,2), ..., (n,2), ..., (n,n – 1))という順序で並んでいるDの要素

逻辑正方行列
  • N行N列の行列。D (i, j)X内の観測値およびjの間の距離がε以下であるかどうかを示す

メモ

Dが逻辑ベクトルまたは逻辑行列である場合,εの値は空でなければなりません。たとえば,dbscan (D[] 5,“距离”,“预计”)

デ,タ型:||逻辑

点の@ @プシロン近傍。点の周囲の近傍探索半径を定義する数値スカラ,を指定します。ある点の@ @プシロン近傍にminpts個以上の近傍点が含まれている場合,dbscanはその点をコア点として識別します。

Dが逻辑ベクトルまたは逻辑行列である場合,εの値は空([])でなければなりません。

例:dbscan (X, 2.5, 10)

例:dbscan (D[] 5,“距离”,“预计”),逻辑行列または逻辑ベクトルDの場合

デ,タ型:|

コア点に必要な最小近傍点数。正の整数を指定します。クラスタ内で,コア点のプシロン近傍にはminpts個以上の近傍点が含まれていなければなりませんが,境界点のminptsより少なくなる可能性があります。

例:dbscan (X, 2.5, 5)

デ,タ型:|

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。名字は引数名で,价值は対応する値です。名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:dbscan (2.5 D, 5‘距离’,“预算”)は,事前計算済みの観測値間のペアワD,プシロン近傍2.5,および最小近傍点数5を使用するdbscanクラスタリングを指定します。

距離計量。“距离”と次の表で説明されている文字ベクトル,字符串スカラーまたは関数ハンドルから構成されるコンマ区切りのペアとして指定します。

説明
“预算”

事前計算済みの距離。dbscanに対する1番目の入力がペアワescズ距離のベクトルまたは行列Dである場合,このオプションを指定しなければなりません。

“欧几里得”

ユ,クリッド距離(既定)

“squaredeuclidean”

2乗ユ,クリッド距離(効率向上のみを目的に提供されているオプション.;三角不等式は満たさない)。

“seuclidean”

標準化されたユ,クリッド距離。観測値間の各座標差は,標準偏差S = std(X,'omitnan')の対応する要素で除算することによりスケ,リングされます。年代にいて別の値を指定するには,规模を使用します。

“mahalanobis”

Xの標本共分散を使用したマハラノビス距離,C = cov(X,'omitrows')Cにいて別の値を指定するには,を使用します。ここで,行列Cは対称な正定値です。

“cityblock”

市街地距離

闵可夫斯基的

ミンコフスキ,距離。既定の指数は2です。異なる指数を指定するには,Pを使用します。Pは正のスカラ,値です。

“chebychev”

チェビシェフ距離(最大座標差)

的余弦

1から,ベクトルとして扱われる点の間の夾角の余弦を引いた値

“相关”

1から,値の系列として扱われる点の間の標本相関を引いた値

“汉明”

ハミング距離(異なる座標の比率)

“jaccard”

1からジャカ,ド係数(異なる非ゼロ座標の比率)を減算

“枪兵”

1から観測値間の標本スピアマン順位相関係数を減算(値の系列として処理)

@distfun

カスタム距離関数のハンドル。距離関数の形式は次のようになります。

函数D2 = distfun(ZI,ZJ)距离计算%...
ここで,

  • は,単一の観測値が含まれている1n列のベクトルです。

  • ZJは,複数の観測値が含まれている平方米n列の行列です。distfunは,任意の個数の観測値が含まれている行列ZJを受け入れなければなりません。

  • D2平方米1列の距離のベクトルであり,D2 (k)は観測値ZJ (k,:)の間の距離です。

データがスパースでない場合,通常は関数ハンドルではなく組み込みの距離を使用する方が高速に距離を計算できます。

定義にいては,距離計量を参照してください。

“seuclidean”闵可夫斯基的または“mahalanobis”距離計量を使用する場合,追加の名前と値のペアの引数“规模”“P”または“浸”をそれぞれ指定して,距離計量を制御することができます。

例:dbscan (X 2.5 5,“距离”,“闵可夫斯基”,“P”,3)は,クラスタリングアルゴリズムを実行するときに,电子邮件プシロン近傍として2.5,クラスタ,を成長させるための最小近傍点数として5,および指数3.のミンコフスキ,距離計量を使用するよう指定します。

ミンコフスキ,距離計量の指数。“P”と正のスカラ,値をコンマで区切って指定します。

この引数は,“距离”闵可夫斯基的である場合のみ有効です。

例:“P”3

デ,タ型:|

マハラノビス距離計量の共分散行列。“浸”と対称な正定値行列である数値行列から構成されるコンマ区切りのペアとして指定します。

この引数は,“距离”“mahalanobis”である場合のみ有効です。

デ,タ型:|

標準化されたユ,クリッド距離計量のスケ,ル係数。“规模”と正の値の数値ベクトルから構成されるコンマ区切りのペアとして指定します。

Xの各次元(列)には対応する“规模”の値があるので,“规模”の長さはp (Xの列数)です。dbscanは,Xの各次元にいて,“规模”内の対応する値を使用して,Xとクエリ点の差を標準化します。

この引数は,“距离”“seuclidean”である場合のみ有効です。

デ,タ型:|

出力引数

すべて折りたたむ

クラスタンデックス。数値列ベクトルとして返されます。idxの行数はnであり,idxの各行はX内の対応する観測値のクラスタ,割り当てを示します。1に等しい▪▪ンデックスは,外れ値(またはノ▪▪ズ点)を示します。

メモ

Dbscanアルゴリズムを使用するクラスタ,割り当ては,観測値の順序に依存します。したがって,Xの行を並べ替えると,観測値のクラスタ,割り当てが異なる結果になる可能性があります。詳細は,アルゴリズムを参照してください。

デ,タ型:

コア点のンジケタ。dbscanが識別したコア点のesc escンデックスを示すn行1列のlogicalベクトルとして返されます。coreptsのいずれかの行の値1は,X内の対応する観測値がコア点であることを示します。それ以外の場合,コア点ではない観測値に対応するcoreptsの行の値は0になります。

デ,タ型:逻辑

詳細

すべて折りたたむ

コア点

クラスタのコア点は,プシロン近傍(ε)内に最小数(minpts)以上の近傍点がある点です。各クラスタ:には,少なくとも1のコア点が含まれていなければなりません。

境界点

クラスタの境界点は,プシロン近傍(ε)内の近傍点の個数がコア点に必要な最小数(minpts)より少ない点です。一般に,境界点のaapl .プシロン近傍には,コア点のaapl .プシロン近傍より大幅に少ない個数の点が含まれます。

ノereplicationズ点

ノ@ @ズ点は,どのクラスタ@ @にも属さない外れ値です。

ヒント

  • 多数のεの値に対して反復処理を行うときの速度を向上させるには,dbscanに対する入力としてDを渡すことを検討してください。このようにすると,すべての反復で距離を計算する必要がなくなります。

  • pdist2を使用してDを事前計算する場合,pdist2の名前と値のペアの引数“最小”または“最大”によるDの列の選択または並べ替えは行わないでください。dbscanDが正方行列であると想定するので,n個未満の距離を選択するとエラ,が発生します。Dの各列で距離を並べ替えると,Dの解釈が不十分になり,関数dbscanで使用したときに無意味な結果が生成される可能性があります。

  • 効率的にメモリを使用するため,Dが大きい場合はDを数値行列ではなく逻辑行列としてdbscanに渡すことを検討してください。既定では,matlab®は数値行列の各値の格納に8バイト(64ビット)を使用しますが,逻辑行列の各値の格納には1バイト(8ビット)を使用します。

  • minptsの値を選択するには,入力デ,タの次元数に1を加算した値以上の値を検討してください[1]。たとえば,n行p列の行列Xの場合,p + 1以上の値を“minpts”に設定します。

  • εの値を選択する方法として可能なものの1は,Xにk距離グラフを生成することです。Xの各点にいて,k番目に近い点に対する距離を求め,この距離に対して並べ替えた点をプロットします。一般に,このグラフには,折れ曲がる部分があります。点が外れ値(ノaapl .ズ)領域に近づき始める領域なので,折れ曲がる部分に対応する距離は一般にεに適した選択肢です[1]。

アルゴリズム

  • DBSCANは,データ内のクラスターとノイズを検出するように設計されている,密度に基づくクラスタリングアルゴリズムです。このアルゴリズムでは,コア点,境界点およびノaaplズ点という3種類の点を識別します[1]。関数dbscanは,指定されたεおよびminptsの値に対して,以下のようにアルゴリズムを実装します。

    1. 入力デ,タセットXから,ラベルが付いていない1番目の観測値x1を現在の点として選択し,1番目のクラスタ,ラベルcを1に初期化します。

    2. 現在の点の@ @プシロン近傍ε内にある点の集合を求めます。これらの点は近傍点です。

      1. 近傍点数がminptsより小さい場合,現在の点にノ▪▪▪▪ズ点(▪▪▪まり外れ値)のラベルを付けます。ステップ4に進みます。

        メモ

        X内の他の点のεminptsによって設定される制約を後にノ电子邮箱ズ点が満たす場合,dbscanはノ▪▪ズ点をクラスタ▪▪に再割り当てする可能性があります。このように点を再割り当てする処理は,クラスタ,の境界点に対して発生します。

      2. それ以外の場合,クラスタ,cに属するコア点のラベルを現在の点に付けます。

    3. 現在のクラスターCに属しているというラベルを付けられる新しい近傍点が見つからなくなるまで,各近傍点(新しい現在の点)に対してステップ2を繰り返します。

    4. X内でラベルが付いていない次の点を現在の点として選択し,クラスタ,カウントに1を加算します。

    5. X内のすべての点にラベルが付けられるまで,ステップ2 ~ 4を繰り返します。

  • 2つのクラスターの密度が異なっており,互いに近い場合,つまり,2つの境界点の距離(各クラスターからの距離)がε未満である場合,dbscanは2のクラスタを1に結合する可能性があります。

  • すべての有効なクラスタ,にminpts個以上の観測値が含まれるとは限りません。たとえば,dbscanは,互いに近い2のクラスタに属する境界点を識別する可能性があります。このような場合,最初に検出されたクラスタ,に境界点が割り当てられます。この結果,2番目のクラスタ,は有効なクラスタ,のままですが,観測値の個数がminptsより少なくなる可能性があります。

参照

酯,M., h . p。Kriegel, J. Sander, X. Xiaowei。“一种基于密度的算法,用于在有噪声的大型空间数据库中发现集群。”第二届数据库和数据挖掘知识发现国际会议论文集,226-231。波特兰:AAAI出版社,1996年。

R2019aで導入