机器学习40讲_21_20_基于距离的学习聚类与度量学习
你好,我是王天一。
今天我和你分享的主题是基于距离的学习聚类与度量学习。
截至目前呢,我所介绍的模型都属于监督学习的范畴。
他们处理的是具有标签的输入数据,给出意义明确的输出。
那么对于回归模型来说,它输出的是连续的回归值。
分类模型呢输出的是离散的类别,标签这些个模型它都属于预测模型。
而另一类模型呢则隶属于无监督学习这类模型。
它学习没有标签的数据作用呢,也不是计算类别或者回归值,而是揭示关于数据隐藏结构的一些规律。
因此,这一类模型也被称为描述模型。
聚类算法就是最具有代表性的描述模型。
聚类分析,它实际上呢是一种分组方式,它让每一组当中的组内对象的相似度都高于不同组组间对象的相似度。
那么分出来的每个组的结果呢都叫做一个簇。
由于相似度是聚类的依据,那么作为相似度主要度量方式之一的距离就会在聚类当中发挥重要的作用。
在人工智能基础课里,我曾介绍过四种主要的聚类算法。
你可以结合文稿中的要点图来回忆一下,除了以概率分布为基础的分布聚类以外,那么其他三类这个聚类的算法呢都涉及到对聚类的使用。
而其中最典型的就是k均值所代表的圆形聚类算法。
理解k均值算法的基础是理解它对于距离的使用方式。
那前面介绍的这个近邻算法呢其实也用到了距离。
在选择近邻的时候,它就是以距离为依据的。
那么近邻点呢它是以内收的形式来影响未知的数据。
所有近邻点按照一定规则共同的来决定处于中心的这个位置,数据的类别。
反过来,如果我将这种影响的方式调转方向,以一个外张的方式去影响,让处于样本的中心作为原型。
那每个圆形都像一个小太阳一样,用万有引力去牵引周围其他的样本。
那么其他样本呢就会像卫星一样被吸附在这个圆形周围,共同构成一个星系。
那么这个星系呢实际上就是聚类分析当中的醋和万有引力类似k均值算法当中定义的相似度,它也会和距离成一个负相关的关系。
如果说样本离圆形的距离越小啊,那么两者之间的引力越大,相似度呢也会越高。
但是和天文学当中的星系不同的是,k均值算法当中簇的中心不是固定不变,而是要动态变化的。
如果说一个样本离圆形太远的话,那引力就可能会减弱到让这个样本被另一个原形所吸走,也就是转移到了另一个醋当中。
那么醋内样本的流入流出,它不光是醋的这个结构的变化,它也会让醋的中心发生改变,进而呢影响到不同错误之间的一个动态结构。
好在动态结构呢最终会达到平衡。
当所有样本到它所属促中心的平方误差最小的时候,这种情况下模型就能够稳定下来。
如果聚类的任务是将n个数据点聚类成为k个簇。
那这个任务呢可以通过对于目标函数的优化来完成。
那么点击文稿,你可以看到距离平方形式的这个目标函数以及它的分析过程。
根据这个过程呢,可以总结出k均值算法的步骤。
首先要从数据集当中随机选取出k个样本啊,作为这k个聚类,也就是k个簇各自的中心。
接下来呢要对其余样本分别计算他们到这k个中心的距离,并且将样本划分到离它最近的中心所对应的聚类,也就是对应醋当中。
当所有样本的促归属都确定之后,这时我再来计算每个聚类里所有样本的这个算术平均数。
计算出的结果呢则作为这个聚类新的中心,并且将所有样本按照这k个更新之后的中心再来重新的进行聚类。
这样的话取平均重新计算中心,重新聚类,这三步的过程将会不断的迭代,直到聚类结果呢不再发生变化为止。
那么点击文稿,你可以看到k均值算法对运行流程的一个示意图。
下面的这个例子呢是利用k均值算法对英超球队的这个比赛风格进行分类的结果。
这里使用的数据集呢是二十支英超球队在一七一八赛季的场均数据用来聚类的两个指标,分别是长船数目与短船数目的比值。
啊,这个指标之前我们用到过以及呢不成功的突破数目,还有成功突破数目的比值。
这个数据呢可以近似的看成是突破的成功率,表示的呢是一个球队的这个攻击线的一个强度。
根据以往对英超联赛的了解呢,我将聚类的数目设为三类啊,就是把所有的球队分成三种初始的聚类中心,分别被设定为阿森纳、埃弗顿,还有斯托克城这三支球队的指标。
如果了解英超的话,你会知道啊,阿尔塞纳温格治下的这个阿森纳,一直以来呢都是英超当中一股细腻的技术清流。
相比之下啊,号称天空之城的这个斯托克城,崇尚高举高大,称得上呢是泥石流。
而艾弗顿作为中油球队的代表,可以看成是弱化版技术流和加强版身体流的一个组合。
应该说呢以这三支球队作为剧烈的参考啊,是有足够的代表性。
六SK论当中,classter模块里面的kiming slay,也就是k均值的这个类,可以方便的计算出聚类的结果。
聚类的结果呢点击文稿。
那你可以看到这个图示,如果你经常看球呢,就会发现其实这个剧烈的结果呢差强人意啊,勉强的能让人满意吧。
近年来崛起的这个托特纳姆热刺,它走的也是这个传控路线,但是呢却被划分到了硬桥硬马的斯托克城一类。
类似的情形呢也发生在自作孽不可活的典型中游队斯旺西城身上。
在这个赛季啊,他抛弃了之前的这个传控风格啊,转而改打这个英式足球。
那么在图中的右侧显示的呢,则是让算法随机选择三个中心的距离,结果可以看到它和左侧的结果呢几乎是完全一致的啊,只是在水晶宫这一支球队上存在不同,这说明什么呢?三个初始种子的选择还是足够的具有代表性。
从贝叶斯的角度来看呢,k均值算法它是高斯混合模型的一个特例。
顾名思义,这个混合模型呢将数据总体看作是来自于若干个高斯分布的这个数据的集合,每一个高斯分布都是一个成分。
那么理想情况下,k均值算法所锯出来的每一个醋都应该对应着一个未知参数的高斯分布。
所有单个的高斯分布,它的概率密度以线性组合的形式组合在一块儿,得到的就是整体分布的概率密度。
那么点击文稿,你可以看到这个整体概率密度的表达式。
有了整体的概率密度呢,我可以计算出数据属于某一个分布,也就是某一个成分的概率判断数据x属于哪个簇,实际上就是要找到它来自于哪个高斯分布。
而归属于DK个错误,也就是来自于DK和高斯分布的概率呢,可以通过贝叶斯定理来进行计算。
那么点击文稿,你可以看到它的表达式,这里的计算结果呢可以形象的解释成什么呢? Dk个高斯分布在解释这个观测值x的时候,它所需要承担的责任。
我们通常都会说能者多劳,你这个观测值属于这个高斯分布的概率越大。
那么高斯分布在解释这个观测值的时候呢,所需要承担的责任也就越重。
不能发现根据这个式子所计算出来的每个伽马k啊都不等于零,这也是高斯混合模型和k均值算法的一个区别。
K均值呢它所输出的是非此即彼的聚类结果啊,属于这种硬聚类的方法。
反过来高速混合模型呢则会输出数据归属到每个剧类的概率,得到的呢是软聚类的结果。
如果说假定高斯混合模型当中啊,所有单个的分布也就是所有成分,它的斜方差矩阵都等于ep CM的话啊,就是每个分布它斜方差矩阵都相等的话。
那么点击文稿。
你可以看到解释观测值x值这个责任,它的一个新的表达式。
当描述方差的参数用趋近零的时候,那我们知道高斯分布会越来越窄,最终呢收缩成一个固定的数值。
那么在一次性不断变小的过程当中,上面这个式子里分子分母里都算上啊,所有具有负k除以EPCO它们的指数啊,这种形式的项都会呢趋近于零,但是趋近的速度是不一样的。
既然趋近速度不一样的话,那么到底是哪一项衰减最慢呢?衰减最慢的那一项是在负k除以一不自用的指数项当中系数k最小的那一项,也就是XN减去缪j的平方最小的这一项啊。
至于说这些符号具体有什么含义呢?点击文稿,你可以看到它们的表达式。
这个表达式最小呢意味着对于观测值x的解释,全部的被归因于第j个高斯分布。
这时候软输出的伽马NJ就会退化,成为前文当中k均值算法当中的硬输出RNK.这说明什么呢?数据x被分配到离它最近的那个簇中心之内。
在k均值算法当中呢,扮演核心角色的是距离的概念。
但是距离的求解只是手段,他的目的呢是衡量局部范围内的相似程度,将k金麟算法还有k均值算法。
这些基于距离的方法推广一步得到的就是相似性学习,还有它的变种度量学习。
他们在信息检索呀、推荐系统啊以及计算机视觉等这些领域都发挥着重要的作用。
度量学习。
它的出现呢其实源自于数据概念的扩展。
从现在开始,倒推十年。
人们观念当中的数据呢还指着狭义上的这个数目字,只有将年龄、身、高血压这样的数字指标才能够被称为数据。
可是到今天,任何结构化的文本图像DNA序列,甚至于一些非结构化的序列都被纳入到数据的范畴当中。
那这些数据呢也就都需要利用学习算法来进行有效的分析和处理。
这种情况下,如何描述这些抽象数据的关系就成了一个大问题。
作为一个普通的人类读者啊,我可以不费吹灰之力的区分开金庸和古龙的这个小说。
但是这种区别又如何在计算机当中以数字指标来直观的呈现呢?所谓的度量学习,就是通过定义合适的距离、度量或者相似性的度量,来完成特定的分类或者回归任务。
好的距离度量固然要取决于具体问题,但它也要满足非负性对称性,还有三角不等式这样一些最基本的要求。
那么马氏距离就是这样的一种广义的距离。
点击文稿,你可以看到它的表达式,马持距离。
它的好处啊在于引入了可调节的参数,从而让距离呢可以通过对于数据的学习来加以改善。
因为在定义中,矩阵西格玛的逆矩阵,它是一个半正定的矩阵,所以呢可以写成g的转置乘以g的形式。
这样一来,对马氏距离的学习,实际上就是对变换g的学习。
一般来说,经过变换之后的这个GXI,它的维度会比原始数据XI的维度有所降低。
所以马氏距离的学习呢也可以看成是一类降维的操作。
它是将高维空间当中的马氏距离转换,成为低维空间中的欧式。
距离。
马氏距离学习是一类线性的度量学习方法。
如果要实现非线性度量学习的话,有两种主要的途径。
一种呢是通过核函数引入非线性的作用。
另外一种呢则是直接的定义出,非线性的距离度量。
那么它的作用范围既可以是全局,也可以是局部非线性度量。
学习的方法有很多,你可以根据自己的需要进一步查阅相关的原始文献,来进行进一步的深入了解和探索。
今天呢我是以k均值算法为例,和你分享了基于距离的学习方法,还简单的介绍了基于距离的学习和扩展,也就是度量学习。
今天的内容包含着以下四个要点,第一,聚类分析是一类描述模型,它将数据按照相似度分解成不同的醋。
第二k均值算法,根据距离来判定数据的聚类。
第三,从概率角度看,k均值算法是高斯混合模型的一个特例。
第四,度量学习的任务是构造出适用于给定问题的距离,度量或者相似性的度量。
度量学习。
它一般求解的呢是全局性的度量,但必要的时候也可以将局部特性引入到度量学习当中。
那这种方法呢通常被应用在抑制的数据集上。
也就是说我这个数据集里既有文本啊,又有图像。
这时呢我就可以使用局部的度量学习。
在特定的任务当中,局部度量学习的效果会优于全局度量学习。
但它先有的计算开销也会较大。
你可以查阅资料,了解局部度量学习的特点和方法,并在这里呢分享你的陷阱。