本文来自之前在Udacity上自学机器学习的系列笔记。这是第15篇,介绍了什么是非监督学习和聚类。
非监督学习
非监督学习是机器学习的一种方法,而且非常重要,因为现实生活中,我们获取的数据往往是没有标记的,或者说数据本身没有提供所想要的正确答案。对于这类数据,我们使用非监督学习来研究数据。
比如说,下面的数据点,我们观察到其中应该具备一种聚类或簇的概念,可以通过机器学习来识别新的数据应该属于哪个聚类。
再比如说,下面的数据点,我们观察到其中应该具备一条曲线的概念,通过将二维数据点降维到一维的线来解释数据,进而预测新数据可能具备的特性。
所以,这种聚类和降维的问题,就是非监督学习需要研究的问题。对数据没有标记,但可以通过机器学习来发现数据的结构的方法,就是非监督学习。
聚类与K-均值(K-Means)
聚类问题中,最常用的算法是“K-均值”。
K-均值可以分为两个步骤,第一步是分配,第二步是优化。首先是初始假定,所有数据点分配为若干个聚类中心,每个中心代表一个簇;然后根据数据点到各个簇的距离,按照减少距离的方向进行优化,最后得到对于各个中心来说距离最小的结果。
比如说下面的数据点,假定了三个红蓝绿的数据中心。但明显地这三个中心并没有很好地表达数据的结构。
于是,通过反复地优化,可以得到最优化的结果。
大家可以访问下面的网站动手体验:
http://www.naftaliharris.com/blog/visualizing-k-means-clustering/
关K-Means算法的介绍可以从sklearn文档获得更多信息:
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html?highlight=kmeans#sklearn.cluster.KMeans
使用K-Means要注意的是局部最小值,因为它使用的是爬山算法,即从当前的某个聚类中心出发,与周围的其他中心进行比较,如果发现当前中心范围的数据点是最近的,那么就会将这个中心当成了最优的一个中心。
比如说下面这种情况,一开始初始假定的三个中心刚好有一个处于两个簇的中间位置,而另外两个中心则处于第三个簇的中心位置,导致了局部最小值。对于这类情况,我们需要重新做初始的假定来对比计算。