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