Кластеризация Mahout K-means дает мне результат, как будто 0 принадлежит кластеру 1.0: []

Я запустил алгоритм кластеризации K-средних для набора файлов последовательности. Однако сгенерированный результат выглядит следующим образом:

0 принадлежит кластеру 1.0: []

0 принадлежит кластеру 1.0: []

0 принадлежит кластеру 1.0: []

0 принадлежит кластеру 1.0: []

0 принадлежит кластеру 1.0: []

0 принадлежит кластеру 1.0: []

Используемая мной программа заимствована из NewsKMeansClustering.java, пример которой приведен в главе 9 Mahout-in-Action.

Не могли бы вы сообщить мне, почему я получаю такой результат? Это из-за каких-либо конкретных требований к настройке параметров или чего-то еще?

Основной код кластеризации в этой программе:

CanopyDriver.run(vectorsFolder, canopyCentroids, new EuclideanDistanceMeasure(), 250,    120, false, false);

KMeansDriver.run(conf, vectorsFolder, new Path(canopyCentroids, "clusters-0"), 
clusterOutput, new TanimotoDistanceMeasure(), 0.01, 20, true, false);

person user873766    schedule 10.08.2011    source источник


Ответы (2)


Я столкнулся с той же проблемой, используя Mahout 0.5. Думаю, проблема в том, что в обеих функциях используется параметр normPower. Попробуйте код, подобный этому.

DictionaryVectorizer.createTermFrequencyVectors(tokenizedPath,
                outputDir, conf, minSupport, maxNGramSize,
                minLLRValue,
                -1.0f, // no normalization here
                logNormalize, numReducers, chunkSize,
                sequentialAccessOutput, namedVector);
TFIDFConverter.processTfIdf(vectorOutput, new Path(outputDir,
                "tfidf"), conf, chunkSize, minDf, 
                maxDFPercent,normPower,
                logNormalize, sequentialAccessOutput, namedVector,
                numReducers);

После этого у меня перестали возникать проблемы с пустыми кластерами.

person rwaury    schedule 19.09.2011

У меня была эта проблема. Новичку было очень сложно решить. Однако в моем случае я понял, что значения T1 и T2 для кластеризации навеса были действительны только для предоставленных данных Reuters (и евклидовой нормы). Я использовал свои собственные данные документа, которые, по-видимому, имели другое распределение расстояний между векторами документа. Поэтому я провел элементарный анализ, а затем переоценил T1 и T2 на основе собственных данных. Тогда все заработало. Смотрите мой пост также на...

Как выбрать пороговые значения T1 и T2 для Canopy Clustering?

Надеюсь это поможет.

person rpd    schedule 09.11.2011