无监督学习(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值
- 根据实际需求划分