无监督学习(Unsupervised Learning)

时间:2020-12-13 15:29:38

无监督学习(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\): 特征的数量

步骤

  1. 从现有的样本中调出K个样本作为聚类中心(采用随机初始化的方式选择样本)
  2. 计算其余样本分别到这K个样本的欧拉距离
  3. 某个样本距离这K个聚类中心的哪个最近, 就把这个样本归为那个类别, 以此类推, 将所有的样本进行归类
  4. 在已经分好类的基础上, 计算出每一个类别的均值(中心), 再重复2和3步骤, 知道损失函数达到最优点(可能仅仅是达到了局部最优点(local optima), K-means算法最终聚类的结果与第1步中K的随机初始化的值后很大的关系, 因为在结束了K-means算法之后我们应该重复1-4步多次, 得到损失函数最小), 结束K-means算法
  5. 注意: K值的选择需要人工调整

理性的认识

  • 在K-means中主要就是要\(min_{c^{(i)},\mu^{(j)}}J(c^{(1)},c^{(2)},...,c^{(m)},\mu^{(1)},\mu^{(2)},...,\mu^{(k)})\)
  1. 随机初始化K, K要小于m
  2. 在for循环中一个一个的取出样本计算出所有样本到最近的中心的距离, 保证J最小
  3. 在另外一个for循环中取出中心点, 移动中心点
  4. 重复1-3步骤

如何选择K的值

  • elbow method: 画出K与J的图像, 找出凸出点, 那个就是期望的K值
  • 根据实际需求划分