终于有机会给大家聊聊每天折磨我的主题 - 无监督集成学习(Unsupervised Ensemble)。其实这是个很有意思的领域,但因为各种各样的原因一直都处于萎靡不振的情况。比较尴尬的是,工业界非常需要好的无监督集成算法,但学术界的兴趣更多的还是在那些吸睛的领域上。
相信大家都听说过无监督学习(unsupervised learning),就是使用没有标签的数据进行学习,比较常见的应用有聚类算法如K-means。举个简单的例子,如果给了你经济数据,并给了你今天的股票价格,让你预测未来那就是监督学习。如果只给你经济数据,直接让你预测未来那就是无监督学习。一般来说,无监督学习的难度要远高于监督学习。
而集成学习大家也不陌生,比如Kaggle中常见的GBDT还有工业界常用的随机森林(random forests)都是集成学习。集成学习的精髓就是一个好汉三个帮,使用多个基学习器来降低模型的泛化误差中的偏差(bias)和方差(variance)。
但当我们把这两个概念合起来,什么是无监督集成学习?简单来说,无监督的集成学习就是对没有标签的数据使用集成算法。但或许你也发现了,百分之九十九的教科书都不会提到这个主题,大部分时候你只会在论文中看到这个名词。引发这个现象的原因有很多,今天跟大家抛砖引玉的介绍几个它备受冷落的原因。
对于有监督的集成学习来说,比较出名的框架(元算法)有两种:
在这两种框架中都可以使用不同的基学习器,只要遵循上面的步骤即可得到不错结果。而对无监督学习来说,boosting是一个序列模型,基学习器并不是同时训练,而是有先后顺序。而无监督学习中我们没有标签,于是无法在训练完C_{i} 之后对它进行评估误分率,这导致了在无监督情况下大部分情况都是走bagging的思路,而不是boosting的思路。
当然,科研人员们也不是吃素的,面对没有标签的boosting也开发出了一些替代品[1](http://t.cn/RWMHfHl),比如用启发式算法(heuristic algorithm)。但实际效果非常不稳定,不容易获得可靠的结果。
但我们得到基学习器以后,需要观察其学习成果如何,一般是直接与标签进行对比。然而无监督学习导致了很难对结果进行评估,即使不做集成学习这也是很难的一件事情。
因此,不同场景下我们只好选择不同替代品。对于聚类来说,如果我们使用了混合高斯来拟合数据,那么最大似然就成了评价依据。如果我们选择了K-means算法,那么一个数据点距离其所属团(cluster)的中心距离就是评价标准。如果我们是用Isolation Forest,那么将一个数据点隔离(isolate)所需要的树的深度就成了它的评估标准。因此,无监督学习中的评估标准非常混乱,不像监督学习中可以直接与标签进行对比。
同时,因为没有标签的缘故,在无监督学习中我们一般很难使用交叉验证(cross validation),甚至也不会区分训练集和测试集因为没什么差别。
集成学习中最重要的一步就是将基学习器的结果融合在一起,常见的方法有:
在监督学习中,即使每个基学习器的类型不同,最终的输出可能都是预测分类,比如0或者1。而无监督学习不同,基学习器的预测结果可能有不同的含义,比如K-means的输出结果是距离,而Isolation Forest输出的是深度,都不在一个维度上。虽然我们可以将每个基学习器的结果都“变成”0和1这种一致的形式,但转化过程中势必会损失信息,对于本身就很难的无监督学习这是难以接受的。因此在无监督集成中,为了将不同基学习器得到结果统一往往会使用:
1、正规化(normalization):可以计算z-score,将每个基学习器的结果投射到正态分布上(均值为0,标准差为1),即
。那么就可以使用上面的公式近似的把这些距离拟合到正态分布上,同理可以对c2,c3产生的数据进行相似的处理。
2、概率化:如果基学习器的输出本身就是概率,那是最佳情况因为概率可以直接进行集成。特定情况下,用不同的分布融合的生成模型,如GMM产生数据点来自于不同高斯分布的概率[2](http://t.cn/RWMTeQx)。
那么将不同的基学习器转化到同一个标准下以后,我们就需要把结果融合。集成的方法有很多种,具体情况取决于你使用的集成方法是倾向于降低方差、偏差、还是两者都有。对于类似bagging的集成,即使在无监督学习下的目标依然是降低方差,一般比较常见的做法有有取基学习器中的最大值,或者依然取平均。
无监督集成学习的重点就是期望基学习器有好的准确性(accuracy)和多样性(diversity),这样集成的结果才会好。但因为无监督学习没有标签,我们无法很好的衡量准确性,而只能衡量多样性(high variability)。然而准确性和多样性是一对欢喜冤家,他们直接会决定模型泛化误差的方差和偏差。
这篇文章的目的是给大家介绍一下无监督集成学习中常见的困难,如果有空也希望更多的介绍相关的内容。这个领域的应用很广但相关研究很少,比如风险预测和聚类等,很适合想要填坑的朋友来挖坑灌水。
这篇文章仓促写成,难免有所疏漏,希望大家在评论中指出。感谢 ʕ•ᴥ•ʔ