课时108 无监督学习
非监督学习的数据不带标签,没有y。我们要把无标签数据输入到算法中,让算法找到一些隐藏在数据中的结构。
聚类算法clustering algorithm是要学习的第一个无监督学习算法,应用有:
课时109 K-Means算法
K均值K-Means算法是现在最热门的最广泛应用的聚类算法。
因为想分成两类,先随机生成两点,叫聚类中心cluster centroids。K-Means是一个迭代算法,会做两步,第一步是簇分配cluster assignment step,根据样本点离每个聚类中心的远近分成两类,用红色蓝色表示。
第二步是移动聚类中心move centroid step,将聚类中心移动到点的均值处。
再次检查样本点离红色聚类中心近还是蓝色,重新染色;再重新计算红蓝点均值移动聚类中心。依次迭代,直到点和聚类中心都不再移动。也就是K均值已经converge了。
具体实现步骤:
用μ1,μ2,…,μk表示聚类中心,用c(1),…,c(m)存储与第i个样本点最近的聚类中心的索引。
找到一个k使得||x(i)-μk||最小,得出对应的c(i)。
如果有聚类中心没有被分配给任何样本点,一般移除这个聚类中心重新初始化。K-均值算法可以很便利地用于将数据分为许多不同组,即使在没有明显区别的组群的情况下也可以。
课时110优化目标
K-均值最小化的问题是要最小化所有数据点与其属于的聚类中心的距离之和,它的代价函数也叫畸变函数distortion function。实际上K-Means的两步迭代就是在最小化代价函数的过程:
先初始化K个聚类中心。
第一个循环:循环各个点,给他们分配离的最近的聚类中心。
第二个循环:循环聚类中心,移动聚类中心到与离点最近处。
第一步是用于减小c(i)引起的代价,第二步是用于减小μi引起的代价。每次迭代都在减小代价函数,否则程序有错。
课时111 随机初始化
算法的开始,即随机选择k个聚类中心的方法:
- 我们应该选择K<M,即聚类中心的个数小于样本点的个数。
- 随机选择K个样本点,令K个聚类中心分别与这K个训练实例相等。
为了防止算法停留在局部最优解(这通常取决于初始化的情况),可以多次初始化聚类中心多次运行,找到使代价函数最小的解:
课时112选取聚类数量
通常还是手动选择聚类总数K的大小。
elbow method胳膊肘法则:如果有明显拐点,选择曲线拐点处的K;如果没有明显拐点,就没办法了。
如果有明显的意图,就根据后续的目的选择。