3

Streaming-Kmeans と呼ばれる mahout に K-Means の新しい実装があることを確認しました。

https://github.com/dfilimon/mahout/tree/epigrams

その使用法に関する記事はどこにも見つかりません。同じものを使用する方法に関するコード例がいくつかある、その使用法に関する有用なリンクを誰かが指摘できますか。

4

2 に答える 2

3

StreamingKMeans は mahout .8 の新機能です。そのアルゴリズムの詳細については、N. Ailon、R. Jaiswal、C. Monteleoni による「Streaming k-means approximation」 http://books.nips.cc/papers/files/nips22/NIPS2009_1085.pdf 「Fast and M. Shindler、A. Wong、A. Meyerson 著、 http://books.nips.cc/papers/files/nips24/NIPS2011_1271.pdf

ご指摘のとおり、その使用法に関する記事はありません。クラスタリング アルゴリズムの他のバージョンとして、いくつかの設定パラメータを文字列配列として渡すことができ、データをクラスタ化する Driver があります。

String[] args1 = new String[] {"-i","/home/name/workspace/XXXXX-vectors/tfidf-vectors","-o","/home/name/workspace/XXXXX-vectors/tfidf-vectors/SKM-Main-result/","--estimatedNumMapClusters","200","--searchSize","2","-k","12", "--numBallKMeansRuns","3",  "--distanceMeasure","org.apache.mahout.common.distance.CosineDistanceMeasure"};

StreamingKMeansDriver.main(args1);

重要なパラメーターの説明を取得するには、最初のパラメーターとして「-iiii」のような間違いをしてください。パラメータ、その説明、およびデフォルト値が表示されます。

ただし、この方法で使用したくない場合は、StreamingKMeansMapper、StreamingKmeansReducer、StreamingKmeansThread を読んでください。これらの 3 つのクラス コードは、アルゴリズムの使用法を理解し、必要に応じてカスタマイズするのに役立ちます。Mapper は StreamingKMeans を使用して、入力データの推定クラスターを生成します。for get k final cluster Reducer は中間点 (前のステップで生成された重心) を取得し、ballKmeans を使用してこれらの中間点を K クラスターにクラスター化します。

于 2013-06-30T08:48:39.090 に答える
2

ストリーミング k-means を実行する手順は次のとおりです。

  1. seq2sparse を介してスパース ベクトルを生成します。
  2. mahout streamingkmeans -i "" -o "" --tempDir "" -ow -sc org.apache.mahout.math.neighborhood.FastProjectionSearch -k -km

    -k = クラスタの数 -km = (k * log(n)) ここで、k = 数。クラスタ数、n = no。クラスター化するデータポイントの数。これを最も近い整数に丸めます

-sc パラメータに FastProjectionSearch または ProjectionSearch または LocalitySensitiveHashSearch を使用するオプションがあります。

于 2013-08-06T21:05:12.487 に答える