什么是无监督学习?
- 先来看看什么是监督学习,一个典型的监督学习例子:
👆一个带有标签的训练集 ,我们的目标是,找到一条能够区分正样本和负样本的决策边界。在监督学习中,我们有一系列的标签,然后我们需要用假设函数来拟合它。作为对比,在无监督学习中,我们的数据并不带有任何的标签,我们得到的数据是这样的👇:
数据集可直接表示为 x(1),x(2)…,x(n),没有y标签。
对于这些数据,我们能做的就是在它们中间找到一些结构,而对于这个训练集,通过无监督学习可以将它分成两个簇,成为聚类算法(Clustering algorithm)👇。
K-Means算法
- 假设我们有一个无标签的数据集,如下图所示,我们希望将它分为两个簇,使用K-Means聚类算法,步骤如下:👇
〇未使用K-Means聚类算法的原数据集。
①第一步是随即生成两点,这两点就叫做聚类中心(Cluster Centroids),生成两个聚类中心,是因为我们现在希望将数据集分为两个簇👇。
②K-Means算法是一个迭代算法,它做两件事,第一步是簇分配(Cluster assignment),而第二步是移动聚类中心(Move centroid)。对于第一步而言,簇分配,是在内循环中遍历每一个数据样本点,也就是上图中的绿点,来给它们分配聚类中心(即上图中的红叉和蓝叉,分配依据是绿点距离红/蓝叉谁更近)。之后根据分配结果,将绿叉染成红色或蓝色。
内循环的第二步,即是移动聚类中心,我们要做的就是将红叉和蓝叉(即聚类中心)移动到红点和蓝点的均值处。我们要做的就是找出所有的红点,计算它们的均值,即所有红点的平均位置,然后把红色的聚类中心移动到那里。对于蓝色聚类中心,我们也要做同样的事情。