K-Means 及其衍生算法
在机器学习中,通常有两种模型,生成模型 (generative model) 和判别模型 (discriminative model)。对于无监督学习,聚类问题中,同样是也是以 K-Means 和 高斯混合模型 (Gaussian Mixture Model) 为经典的代表。
还记得今年年初刚开始系统性学习机器学习的时候,这两个概念不是很清楚,现在弄懂了,以后有时间可以专门讲下。
对于判别模型,通常就是计算边界 (boudary),如果以数学公式来表达通常就是直接从 training data 计算
K-Means 是 EM 算法的特殊例子,因为它用的是欧几里德 (Euclidean Distance) 距离,它的目标functon如下:
m 代表data instances,K代表目前cluster的数量。当
那么算法本身可以分为 E-Step 和 M-Step。E-Step 主要计算欧几里德距离,M-Step则是算objective function J对于
需要注意以下几点:
如果数据集的variance过大,最好对数据做归一化 (Standardize),使得他们的mean等于0,标准差等于1,以避免某些feature对于其他feature的影响。 K-Means 依赖于初始化状态,很有可能陷入局部最优,所以建议多初始化几次,然后取最小的J
由于K-Means是硬分类,Fuzzy C-Means就是相当于Soft K-Means。这里的Soft是指给数据点对于每个cluster不再是硬分配,而且给每个cluster分配响应的概率。
同理类似于SVM也有硬间隔和软间隔。
这里我们同样可以写出它的objective function J:
FCM也是稍微将K-Means 变形,将w改为一个相对值,相对于其他所有点对应clusters的距离。分母其实就是Normalization constant,为了保证w处于0和1之间。
如果你留意上述的算法,他们都是要实现知道或者推断clusters的数量,我们可以通过下述方法推断:
但是与K-Means Clustering不同的是,Hierarchical Clustering 可以帮我们找到最优的clusters数量。
其算法很简单过程如下:
注意有五种方式计算距离:
举例:
根据第一种距离公式:
我们可以算出distance matrix:
可以看出0.328是最小的,所以我们将2和4合并,此时合并高度为0.328:
然后再将2&4和3合并,合并高度为0.483:
合并1和5,合并高度为0.942:
然后根据我们每次合并的数据绘制成树状图,最后的高度为1.530:
此时最优的cluster 数目应该就是最大的合并高度下的竖线条数也就是2.
注意:其实这里蕴涵了两种策略,Top-Down (从一个cluster开始,不断分解到N个clusters)或者 Bottom-Up (从N个clusers开始合并为一个cluser)
其实是Top-Down approach,就是递归调用K-Means不断将其划为clusters中。这种方式相对较快,时间复杂度为
本次我们细讲了无监督学习聚类的判别模型,对于判别模型最大的问题是无法解决数据集overlapping的问题,更无法做一些推断和预测。这时生成模型的好处就体现出来,他可以预测出数据集中没有的数据的。后面我会讲一下生成模型和判别模型在深度学习中的应用,欢迎继续关注。