无监督学习(Unsupervised Learning)
聚类无监督学习
特点
- 只给出了样本, 但是没有提供标签
- 通过无监督学习算法给出的样本分成几个族(cluster), 分出来的类别不是我们自己规定的, 而是无监督学习算法自己计算出来的
K-means 聚类算法
规定
- (c^{(i)}): 表示(x^{(i)})属于哪个cluster, 如(x^{(1)})属于(c^{(1)})簇, 如果(c^{(1)}=1), 则(x^{(1)})划分在第1个类别
- (mu_k): 表示第k簇的聚类中心样本点
- (mu_{c^{(i)}}): 表示样本(x^{(i)})所在的聚类(c^{(i)})的聚类中心
- (m): 样本的数量
- (n): 特征的数量
步骤
- 从现有的样本中调出K个样本作为聚类中心(采用随机初始化的方式选择样本)
- 计算其余样本分别到这K个样本的欧拉距离
- 某个样本距离这K个聚类中心的哪个最近, 就把这个样本归为那个类别, 以此类推, 将所有的样本进行归类
- 在已经分好类的基础上, 计算出每一个类别的均值(中心), 再重复2和3步骤, 知道损失函数达到最优点(可能仅仅是达到了局部最优点(local optima), K-means算法最终聚类的结果与第1步中K的随机初始化的值后很大的关系, 因为在结束了K-means算法之后我们应该重复1-4步多次, 得到损失函数最小), 结束K-means算法
- 注意: K值的选择需要人工调整
理性的认识
- 在K-means中主要就是要(min_{c^{(i)},mu^{(j)}}J(c^{(1)},c^{(2)},...,c^{(m)},mu^{(1)},mu^{(2)},...,mu^{(k)}))
- 随机初始化K, K要小于m
- 在for循环中一个一个的取出样本计算出所有样本到最近的中心的距离, 保证J最小
- 在另外一个for循环中取出中心点, 移动中心点
- 重复1-3步骤
如何选择K的值
- elbow method: 画出K与J的图像, 找出凸出点, 那个就是期望的K值
- 根据实际需求划分