永不过时的K-Means算法

众所周知,数据挖掘算法并非十全十美,在某些情况下他们也会失效。 使用 K 均值算法(K-Means)时就可能会出现这种情况,当然此时你可以尝试一下另一种方法—— K 中心聚类算法(K-Medoids),也许效果会更好。

引言

永不过时的K-Means算法

众所周知,数据挖掘算法并非十全十美,在某些情况下他们也会失效。 使用 K 均值算法(K-Means)时就可能会出现这种情况,当然此时你可以尝试一下另一种方法—— K 中心聚类算法(K-Medoids),也许效果会更好。

在该网站之前的文章《揭开机器学习的面纱》中,已经指出, K 均值算法用于聚类时效果良好,而且在数据挖掘和机器学习领域,它也有着重要的地位。Psanchezcri 就曾在他的文章《将 K 均值方法用于金融时序回报率聚类》中,将 K 均值算法用于分析金融时间序列的趋势。

然而,即使在网络上有关算法的文档浩如烟海的情况下,关于机器学习算法有时会失效的讨论却并不多见。

因此,本文借由一个金融案例来反映这个问题。

思路

1)首先,我们在欧洲斯托克600指数的成分股中选择三组共6只股票(在三个不同的部门中各选两只):

  • 金融部门:
    西班牙毕尔巴鄂比斯开银行 & 桑坦德银行
  • 非必需消费品:
    法国酩悦·轩尼诗-路易·威登 & 迪奥
  • 能源部门:
    英国石油公司 & 锡尼什港能源公司

2)搜集数据,并绘出在2013/01/01至2015/12/31期间这六只股票的价格走势曲线。如下所示:永不过时的K-Means算法

3)选择日回报率作为计算指标,我们算出三组股票序列的相关距离。然后通过距离矩阵降维的方法,在二维欧氏空间中绘出每个点。

结果显示这六只股票可以按部门进行分类效果显著。下图以蓝色菱形点、绿色正方形点、红色圆点来标记六只股票,明显可以按部门分为三类:

永不过时的K-Means算法

4)最后,我们将 K 均值算法运用于距离矩阵,聚类目标预先设定分成3类。由于 K 均值算法是从随机点开始的,每次运行结果可能有所不同,本文我们预先设定运行这个算法15次,即产生15个结果。当然,我们希望得到聚类结果符合股票所属部门的实际情况。

结论

1)在约80%的聚类结果中,K 均值聚类算法取得了理想的结果,聚类结果与这六只股票所属部门相符,如下图所示:

永不过时的K-Means算法2)在剩下的20%的聚类结果中,算法则出现了聚类的错误。例如,下图中错将两个不同部门的四只股票聚为一类(图中蓝色菱形点和绿色正方形点),而将同一部门的两只股票分为两类(图中红色圆点):

永不过时的K-Means算法如果我们使用与之思想类似的 K 中心聚类算法,结果则可以达到100%的正确聚类率。这表明在聚类时,似乎使用重心会比用均值来衡量距离,效果更好。

原文链接:
原文作者:Fjrodriguez2
译者:Vector

本文为专栏文章,来自:数据工匠,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/27223.html 。

(0)
数据工匠的头像数据工匠专栏
上一篇 2016-09-18 09:09
下一篇 2016-09-30 21:01

相关文章

关注我们
关注我们
分享本页
返回顶部