Unsupervised Learning
四个月了,终于写到无监督学习了。。。。。
相关机器学习概念:
K均值聚类(K-means clustering)
1. Unsupervised Learning
监督学习与无监督学习的差异:
我们之前接触的线性回归、逻辑回归、神经网络和SVM都是监督学习,它们的输入数据集有标签{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},在程序运行前就可对输出结果有大致的掌握。
无监督学习的输入数据集无标签,只有数据集属性{x(1),x(2),...,x(m)}\{x^{(1)},x^{(2)},...,x^{(m)}\}{x(1),x(2),...,x(m)},且输出结果不可预测。
\quad
无监督学习的例子:
-Market segmentation
-Social network analysis
-Organize computer clusters
-Astronomical data analysis
\quad
2. Clustering
2.1 K-means Algorithm
K均值聚类算法首先需要初始化K个聚类中心,然后进行迭代计算,每次迭代完成两个任务:
1、簇分配 cluster assignment
遍历样本,将每一个样本点分配至最近的聚类中心
2、移动聚类中心 move centroid
根据簇分类的结果,计算每一类的均值并将其作为新的聚类中心
\quad
用伪代码表述为:
Randomly initialize K cluster centroids μ1,μ2,...,μK∈Rn\mu_1,\mu_2,...,\mu_K∈\R^nμ1,μ2,...,μK∈Rn
Repeat{
\qquad for i = 1 to m
c(i):=\qquad\qquad c^{(i)}:=c(i):= index (from 1 to K) of cluster centroid closest to x(i)x^{(i)}x(i)
\qquad for k = 1 to K
μK:=\qquad\qquad \mu_K:=μK:= average (mean) of points assigned to cluster K
\qquad }
\quad
NOTE: 在聚类问题中,x(i)∈Rnx^{(i)}∈\R^nx(i)∈Rn,无需加入x0=1x_0=1x0=1
\quad
2.2 Optimization Objective
K均值算法中的代价函数有时也被称作失真函数(distortion cost function):
2.3 Random Initialization
随机选取K(K<m)个训练样本,作为随机初始点。
K均值聚类法存在局部最优的可能性。为了尽可能地得到全局最优的结果,我们可以循环执行K均值方法,如随机初始化100次,选择目标函数值最小的那一次作为最终聚类结果:
\quad
2.4 Choosing the Number of Clusters
聚类数目的选择很大程度上依赖于主观判断,这也是无监督学习的一个特点。一种可能的判断方法是肘部法则(Elbow method),计算不同聚类数目下的代价函数并作图,选择畸变值下降速度突变的那一点作为聚类数。不过在实践中,这种方法有时表现并不好,比如下图右侧的平滑曲线,它并没有明显的“肘部”。
根据聚类后续的目的来选择聚类数目是更好的办法。比如选择T恤的尺码,我们可能会选择3类S,M,L,也可能选择5类XS,S,M,L,XL,这需要根据实际的供求关系来确定。