1

対異なるセンタリングされて、なぜ私は2つのモデルが以下のように同じデータに関数kmeansモデルを使用して訓練があります。StreamingKMeansクラスタは、通常の関数kmeans

int numIterations = 20; 
    int numClusters = 5; 
    int runs = 10; 
    double epsilon = 1.0e-6; 

    KMeans kmeans = new KMeans(); 
    kmeans.setEpsilon(epsilon); 
    kmeans.setRuns(runs); 
    kmeans.setMaxIterations(numIterations); 
    kmeans.setK(numClusters); 
    KMeansModel model = kmeans.run(trainDataVectorRDD.rdd()); 

、以下のようなStreamingKmeans:

int numOfDimensions = 3; 
    int numClusters = 5; 
    StreamingKMeans kmeans = new StreamingKMeans() 
      .setK(numClusters) 
      .setDecayFactor(1.0)    
      .setRandomCenters(numOfDimensions, 1.0, 0); 

    kmeans.trainOn(trainDataVectorRDD); 

アイデアをストリーミングの1つは、私はkafkaキューからすべてを読んでモデルを訓練し、新しいデータが入ってくると自動的に更新されるということです。

私は2つの異なるcl両方のモデルのusterセンター。どこで私は間違えましたか? 通常のKMeansが正しいものです。私は5つのクラスターセンターのうち2つをここに掲載しています。どんな助けもありがとう、ありがとう=)。

クラスタ:関数kmeans

clusterCenter:[1.41012161E9,20.9157142857143,68.01750871080174]

clusterCenter:[2.20259211E8,0.6811821903787257,36.58268423745944]

クラスタ:StreamingKmeans

clusterCenter: - 0.07896129994296074,1.0194960760532714、-0.4783789312386866

clusterCenter: [1.3712228467872134、-0.16614353149605163,0.24283231360124224]

答えて

1

k-手段は、ランダム化である。 2回実行すると、おそらく2つの異なる結果が得られます。特に、それらは整列しない(すなわち、クラスタ1は、他の結果においてクラスタ1と一致しない可能性がある)。

さらに、ストリーミングk-meansは、データを1回だけ通過する可能性が高いため、結果は、1反復後にk-means と多少似ていると予想されます

更新:Sparks StreamingKMeans setRandomCentersは、N(0; 1)分布から初期中心を選択します。あなたのデータによっては、これは良い考えではないかもしれません。また、いくつかのクラスタセンター(例えば、負の座標)は、永遠に空のままです。私の意見では、これは本当に愚かな初期化メソッドであり、ほとんどのアプリケーションでは役に立たない。

+0

これは当てはまりますが、ここでの問題はストリーミングクラスタの重心が理にかなっていない、つまりデータセットにないことです。 ここに何かをすることができます。後で普通のkmeansをシングルパスで実行し、それらが一致するかどうかを確認します。お返事ありがとうございます:) –

+0

SparkのStreamingKMeansは私が思ったより悪いです。 'setRandomCenters'はN(0; 1)から**ランダムガウス分布**を描画し、これがあなたのデータのための良いアイディアだと仮定します。今ではこれらのセンターのいくつかはおそらく単一のポイントを受け取ったことはありません! –

+0

通常のk-meansを1回反復と1回実行に設定すると、データの範囲内にある賢明な回答が得られます。この問題を回避する方法の1つは、通常のk-meansを実行し、ストリーミングk-meansのsetIntialCenters入力としてクラスタセンターを使用すると正しいことです。 –

関連する問題