机器学习(八):寻找数据的分组——k均值聚类

理解聚类

聚类是一种无监督的机器学习任务,可以将数据自动分成类,或具有类类似的分组。我们可能都不知道我们在寻找什么,聚类是用来知识发现而不是预测。简单地说,就是对无标签的数据进行分类

k均值聚类

涉及将n个案例分配到k个类中的一个,其中k是一个提前定义好的数,目标是最小化每个类内部的差异,最大化类之间的差异。该算法使用了一个可以找到局部最优解的启发式过程。两个阶段:将案例分配到初始的k个类中,其次,根据落入当前类的案例调整类的边界来更新分配。重复更新和分配过程多次,直到做出的改变不会再提升类的优度。

  • 使用距离来分配和更新类
    k均值将特征值作为一个多维特征空间中的坐标。

    分配:k均值算法首先在特征空间中选择k个点作为类中心。这些中心是促使剩余案例落入特征空间的催化剂。(当然,也可以跳过这一步,直接把每一个案例随机分入类中)确定类的中心后,其他案例将分配到与其最相似或者根据距离函数最接近的距离。(使用欧氏距离或曼哈顿距离)
    这里写图片描述
    更新:先将初始类的中心转移到新的位置——质心,可以通过计算分配到当前类的各点的均值得到。调整后可能会有其他类的案例被重新归类。当没有点重新分配时,聚类分配结束。
    这里写图片描述

  • 选择适当的聚类数
    一般设置为n/2的平方根,n为案例的个数。基于方便选择一个k值就可以了

举例:青少年市场细分

> library(stats)
> interests<-teens[5:40]
> iinterests_z<-as.data.frame(lapply(interests,scale))
> teen_clusters<-kmeans(iinterests_z,5)
> teen_clusters$size
[1]  1020 21568   868  5993   551
> teen_clusters$centers
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值