提高 k-means 精度

数据挖掘 Python 文本挖掘 apache-hadoop k-均值 距离
2021-09-21 20:14:28

我们的武器

我正在尝试使用 k-means 和 Hadoop,由于各种原因(例如,帮助我赢得这场战争!),我被束缚在这些选项上。


战场

我有文章,属于c类,其中c是固定的。我将文章的内容矢量化为TF-IDF特征。现在我正在运行一个朴素的 k-means 算法,它以c质心开始并迭代地开始对文章进行分组(即 TF-IDF 矩阵的行,您可以在这里看到我是如何构建它的),直到发生收敛。


特别说明

  1. 初始质心:尝试使用每个类别中的随机数或每个类别中所有文章的平均值。

  2. 距离函数:欧几里得。


问题

正如预期的那样,准确性很差,我可以通过为初始质心做出另一个选择或/并选择另一个距离函数来做得更好吗?


打印“你好数据科学网站!” :)

1个回答

好问题,@gsamaras!从设计的角度来看,您设置此实验的方式对我来说很有意义,但我认为您仍然可以检查几个方面。

首先,信息量不足的特征可能会分散您的分类器的注意力,从而导致结果较差。在文本分析中,我们经常谈论停用词过滤,即删除此类文本(例如,the、and、or 等)的过程。您可以在网上轻松找到标准的停用词列表(例如,这个),但有时他们可能会很严厉。最好的方法是建立一个将特征频率与类别相关联的表,因为这将获得您在此类查找表中不太可能找到的特定领域的特征。文献中关于去除停用词的效果有不同的证据,但我认为这些发现主要与特定于分类器有关(例如,与朴素贝叶斯分类器相比,支持向量机受无信息特征的影响较小.我怀疑k-means属于后一类)。

其次,您可能会考虑使用不同的特征建模方法,而不是 tf-idf。不反对 tf-idf——它适用于许多问题——但我喜欢从二元特征建模开始,除非我有实验证据表明更复杂的方法会带来更好的结果。也就是说,k-means 可能会对从浮点特征空间到二进制特征空间的切换做出奇怪的反应。这当然是一个易于检验的假设!

最后,您可能会查看数据集中的预期类分布。所有课程的可能性都一样吗?如果没有,您可能会从采样方法或使用不同的距离度量中获得更好的结果。众所周知,k-means 在倾斜的课堂情况下反应很差,所以这也是需要考虑的事情!在您的特定领域中可能有研究描述其他人如何处理这种情况。