word2vec——Kmeans算法

32 篇文章 1 订阅
4 篇文章 0 订阅

  • word2vec源码中最后一小部分,作者用c写了个k-means的算法,很久以前还啥都不懂的时候学过这个算法,现在回头做个简单的笔记。

伪代码

  • input: K值(聚类个数) T值 (循环的最大次数)
  • 对齐表示属于同一循环(同python)
1. 初始化 K个中心点的位置

while( i < T):   (循环到最大循环次数时,跳出循环)

	for(遍历X中所有的点x):
		2. 计算x到K个中心点的距离(常用欧式距离计算公式)。
		3. 比较算出的距离,以最近邻为原则,找出该点归属于哪一类。
	4. 更新K个中心点的坐标(更新原则:某类内所有属于该类的x的均值替代现在的坐标)
	5. 求和(为6服务):求出每个点到其对应类中心的距离,整体求和。
	6. 退出条件:如果(5求出的值 - 上一次迭代的时的值) < 阈值 ,则:break(跳出循环)

优缺点讨论

优点

  1. 简单,收敛快。
  2. 聚类效果较优。
  3. 算法可解释性强。
  4. 超参数少,仅K一个。

缺点

  1. K的个数往往需要对数据有一定的探究(先验知识)。
  2. 算法复杂度不易控制 O(NKm), 迭代次数可能较多 (m可能会比较大)。
  3. 初值敏感:对于不同的初始值,可能会得到不同的结果。(K-Means++算法可以用来解决这个问题,其可以有效地选择初始点)
  4. 对躁声和孤立点数据敏感。(PS:这是均值的锅,因为算法用了均值的原因,而均值本身对噪声和孤立点敏感)
  5. K-means算法并不是可以对任何数据都有很好的聚类效果,其更偏向于成圆(球)状的聚类效果。解释:欧式距离的锅。因此:需要对数据有一个整体把控,不同的效果需要不同的聚类算法,不能以一待之。
  6. 容易陷入局部最优;(这个和初值的选取是对应的)
  7. 无法增量计算。(新增样本后,无法利用现有结果,需要重新开始)

改进

  • 整个机器学习常见这个套路,一个算法的诞生是为了改进另一个算法的缺陷,K-means有这么多缺点,所以对应也产生了改进算法,本人不进行探究,感兴趣者可以参考:
  • https://blog.csdn.net/u014465639/article/details/71342072
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值