永不过时的K-Means算法 | 数盟社区

作者:Fjrodriguez2 来源:数据分析网

屏幕快照 2016-09-26 下午2.23.10.png

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

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

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

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

思路

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

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

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

屏幕快照 2016-09-26 下午2.23.22.png

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

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

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

结论

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

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

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

注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。
期待你一针见血的评论,Come on!

不用想啦,马上 "登录"  发表自已的想法.