バイナリシーケンスでのクラスターの検出


8

私は次のようなバイナリシーケンスを持っています 11111011011110101100000000000100101011011111101111100000000000011010100000010000000011101111

以下の図のように、ほとんどが1のクラスターの後に多数のゼロが続きます(黒は1を表します)。

ここに画像の説明を入力してください

これらの1のクラスターを自動的に検出し、スパン(画像では赤い線で示されます)を生成できる手法(RまたはPythonが望ましい)を適用したいと思います。私はこれをしきい値で実行できることを知っています。つまり、2つのクラスターを少なくともn 0 で区切ってクラスターにする必要があると言いますが、事前定義されたしきい値を使用しない他の確立された方法があるのだろうかと思います。

何か案が?

回答:


5

それらを「クラスター」と呼ぶことは避けます。この用語を使用すると、データマイニングから常に多次元手法に取り乱されることになります。

あなたの問題は、はるかに単純な1次元の設定です。さらに簡単です。座標はなく、0と1の配列です。

あなたの問題に対するこれまでにない万能の解決策はありません。1人のユーザーが非常に高解像度の「バーコード」を読みたいのに、もう1人のユーザーはノイズが多いからです。

したがって、最終的には、1つのパラメーターが必要になります。絶対ギャップサイズ、相対ギャップサイズ、カーネル帯域幅など、いくつかの選択肢があります。

非常に単純な「カーネルベース」のアプローチは、各ピクセルを-10 ... + 10で設定されたピクセル数にマッピングすることです。つまり、21セルなので、値は0〜21になります。次に、極小値を探します。まだ分​​割したくない実行の分割を開始する場合は、ウィンドウサイズを増やします。


ありがとう。カーネルとローカルミニマムに関する提案は、実際には@EngrStudentが提案したものに似ていますよね?それでも私はそれが何を意味するのか完全には理解していません。マシンベースの方法で極小値を探すにはどうすればよいですか?つまり、関数そのものではなく値だけを知らなくても、「関数」の1次導関数をどのように計算できますか?
wnstnsmth 2013

はい、おそらくEngrStudentが提案したものと同じです。カーネル密度推定は、平滑化のための非常に標準的な手法です。画像処理でも随所に使われています!隣接する値がそれよりも小さい場合、それは極小値です...離散データセットがある場合と同じくらい簡単です。
QUITあり-Anony-Mousse 2013年

2

49〜55ページのリファレンス1には、ここで役立つカーネルベースのメソッドに関する素晴らしいセクションがあります。もしそれをしていたら、実際の値とそれらの一次導関数の加重和を見てみます。なぜならそれは「情報」のより良い指標かもしれないからです。

参照:http : //amzn.com/0198538642 "パターン認識のためのニューラルネットワーク"(Christopher Bishop)(1995)


1
インデックスに関する数値の1次導関数は「diff」です。したがって、連続して多くの「1」がある場合、導関数はゼロになります。スパースなものがある場合、それが切り替わるたびに差分が大きくなります。EWMAを貧弱な人間のカーネルとしてスムーズに使用できます。 en.wikipedia.org/wiki/Exponential_smoothing。どのように機能しますか?値のウィンドウの加重平均を作成します。カーネル関数は関連することを行いますが、もう少し複雑です。それは時々はるかに広いウィンドウを取り、それからその中の値に基づいて関数を計算します。時々関数はpdfのように見えます。
EngrStudent 2013

1
差分と生の値を合計すると、それらが疎である場合と密である場合の情報が得られます。
EngrStudent 2013

小さなシーケンス例を使用して、応答とコメントについて詳しく説明していただけますか?非常に似た問題があります。
アルンホセ

差分の絶対値はエッジ検出器です。000111000などのシーケンスがあり、差分を取ると0000(-1)00になります。差分の1の位置は立ち上がりエッジを示し、-1は立ち下がりエッジを示します。差分の絶対値を取得して合計すると、2つのエッジが得られます。シーケンス010101010がある場合、その絶対差分は11111111で、合計すると8つのエッジになります。実質的に高いエッジ数があります。abs diffでなく、それを実行合計で使用する場合、1がいくつあるか、0がいくつあるかがわかります。
EngrStudent

1の実行が終了して開始するとは、どの基準で言えますか?ウィンドウのサイズをどのように決定しますか?
アルンホセ

0

問題は画像処理といくらか類似しています。高さが1ピクセルのバイナリイメージがあり、ある種のセグメンテーションを実現したいとします。

入力画像の性質は、領域を平滑化する形態学的フィルタ、例えば示唆閉鎖します。クラスターの「リンケージ」を決定する構造化要素を選択する必要があります。結局、これはあなたのアプローチとかなり似ています。ぼかしやガウスカーネルなどの畳み込みフィルターを使用して画像を平滑化し、選択したしきい値を適用して画像を再バイナリ化することもできます。

すべて1を点として扱い、シーケンス内のその位置を座標として扱い、距離メトリックを構成できる場合は、標準のクラスタリングアルゴリズムのほとんどすべてを使用できます。たとえば、階層的クラスタリングを使用したり(リンケージ基準としきい値を選択)、ガウス混合モデルでk平均法またはEMを使用したり(探しているクラスターの数を選択)したりできます。

しかし、少なくともアルゴリズムの感度を事前に定義する必要がなくても、最終的には離れることができるとは思いません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.