1. 无监督学习
无监督学习:数据不带有任何标签,训练集只有x而没有对应的label
聚类:如下图中数据,可以看为两个分开的点集,用聚类算法可以找到圈出这两个点集的方法
2. K-均值算法
2.1 什么是kmeans
K-均值算法是最常用的聚类算法,算法可以将未标记的数据集聚类成不同组。
假设要将数据聚类成k个组,则方法为:
- 首先选择k个点,即聚类中心
- 求每个数据点距离k个中心的距离,并且将距离最近的的中心点与之关联,形成k个聚类组
- 计算每一个组的平均值,并将每个组的聚类中心移动到平均值的位置
- 重复上面两部直至中心点不再变化
伪代码如下:
随机初始化聚类中心
whilr true:
# 分类
for i in range(m):
c(i) = 与x(i)最接近的聚类中心点序号(1-k)
# 移动聚类中心
for j in range(K):
u(k) = 该簇数据的平均值
2.2 K-均值的优化目标
与逻辑回归等相同,K-均值算法也有自己的目标优化函数,k均值的代价函数(失真代价函数Distortion function):
J ( c ( 1 ) , ⋯   , c ( m ) , μ 1 , ⋯   , μ k ) = 1 m ∑ i = 1 m ∣ X ( i ) − μ c ( i ) ∣ 2 J(c^{(1)},\cdots,c^{(m)},\mu_1,\cdots,\mu_k)=\frac{1}{m}\sum_{i=1}^{m}{|X^{(i)}-\mu_{c^{(i)}}|}^2 J(c(1),⋯,c(m),μ1