ソートされたデータのコレクションを「インテリジェントに」ビンに入れる方法は?


11

ソートされたコレクションをインテリジェントにビンに入れようとしています。個のデータのコレクションがあります。しかし、私はこのデータが不等サイズのビンに収まることを知っています。データを適切に合わせるためにエンドポイントをインテリジェントに選択する方法がわかりません。例えば:mnm

コレクションに12個のアイテムがあり、データが3つのビンに収まることがわかっているとします。

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

i = \ {1-3 \}、\ {4-9 \}、\ {10-12 \}のビンのブレークポイントをインテリジェントに選択するにはどうすればよいi={13},{49},{1012}ですか?

現在の実装では、データを均等なサイズのビンに分割し、エンドポイントの平均をとってビンの終わりのインデックスを見つけます。したがって、次のように機能します。

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

first break evenly: i = 1-4, 5-8, 9-12
mean endpoints:  between 4 and 5: (3+3)/2 = 3
                 between 8 and 9: (3+3)/2 = 3

したがって、3未満の値はビン1に適合し、3を超えて3未満の値はビン2に適合し、3を超える値はビン3に適合します。問題は何ですか。データのビンが等しくない場合、メソッドは失敗します。

友人がk最近傍アルゴリズムに言及しましたが、よくわかりません。


1
「インテリジェント」の意味を説明していただけませんか?ビニングで何を達成しようとしていますか?そもそもなぜビニングなの?
whuber

最後から2番目の段落は、、、およびですか?そうでなければ、それは私には意味がありません。3 < 4 B I N 2 4 B I N 3<3bin13&<4bin24bin3
gung-モニカの復活

ビンが等間隔に配置されていると仮定して、私が単純に行ったように単純ではないように、私はインテリジェントに意味します。データの一部が特定のビンに分類される場合、そのデータについて非常に重要なことがわかります。データを並べ替えてビンブレークインデックスを決定し、各データのどのビンを個別に分類するかを決定します。
Matthew Kemnetz 2012

平均で何か間違ったことをしない限り、私はそれが正しいと思います。等間隔のビンを選択すると、すべてのエンドポイントが3になります。そのため、データを適切にビニングすることはできません。これが、私の実装が等間隔のビンなしで失敗する理由です。
マシューケムネツ

これは、少し異なる設定で行ったものです。
マクロ

回答:


9

あなたがやりたいことはクラスタリングと呼ばれていると思います。同様の値が同じビンに収集され、ビンの総数が事前に設定されるように、「値」をグループ化する必要があります。

この問題は、k平均クラスタリングアルゴリズムを使用して解決できます。MATLABでは、次の方法でこれを行うことができます。

bin_ids = kmeans(Values,3); 

上記の呼び出しは、グループValues内の分散が最小になるように、3つのグループに値をグループ化します。


1
私もそれを見つけました。これはまさに私が実装したものであり、うまく機能しました。私は自分の質問に答えるためにここに来ましたが、あなたは私を倒しました!クラスタリングは私がやろうとしていたことでした。
Matthew Kemnetz、2012

8

k-meansはオプションですが、1次元データの場合はあまり意味がありません。1次元データでは、1つの大きなメリットがあります。データを完全に並べ替えることができます。

見てい自然な切れ目の最適化を代わりに:
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization


これは非常に興味深いです。これがkの意味よりも優れている理由について詳しく説明していただけますか?
Matthew Kemnetz 2012

私が尋ねる主な理由は、アルゴリズムにMATLABを使用していて、ツールボックスなどでJenksの自然なブレークの最適化を見つけることができなかったためです。そのため、独自に実装する必要があります。ギアを切り替えてこれを実装する前に、これがどれほど良い/速いか知りたいだけでした。
Matthew Kemnetz、

1
k-meansはかなり愚かです。それには手段があり、常に2つの手段の真ん中で分割されます。だから、例えば0 1 2 3 4 5 7 7 7与えられ、k平均は4と5の間の分割を好むでしょう時にはそれも3と4の間で分割されます
終了しました- Anony-ムース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.