数据挖掘复习笔记(四)

主成分分析简介

让我们来简单了解一下主成分分析(PCA)吧。

之前我们提到过,如果我们想要评价一个城市的等级,可以从人均GDP、人均消费水平、人均收入水平、用电量、用水量、绿化面积、就学人数、景点数量、空气质量、水源质量等多个方面对城市进行评价,每一个评价指标就构成了一类特征。

所以有些时候,我们会遇到这么一类问题,即我们感兴趣的指标实在是太多了,而且部分指标之间存在着较为显著的相关性。例如评价城市,只要愿意,可以找到许许多多的指标,绝不仅是上面提到的那几种。而且部分指标之间,如人均消费和人均收入,乃至和GDP,都会有一定的相关性,也就是存在着信息的重复。

当特征较多时,无论是分析问题,还是建立模型,都会相对比较复杂。一个泛化能力比较好的模型,往往不会有太高的复杂度。可想而知,当你不断引入新的特征,模型的复杂度就会慢慢提高,过拟合的现象也会越来越明显。例如对于线性回归来说,我们的评价指标是R^2,当我们不断引入新的变量,其R^2几乎是必然有所提升的。但我们用这个模型去预测新的样本,结果很可能并不如人意。

因此,能不能找到一种方法,既保留样本的大部分信息,又减小特征的数量,压缩数据量以方便进行处理呢?有的,这就是主成分分析(PCA)。

主成分分析通过采用几个综合因子来代表原来众多的特征,使这些综合因子尽可能地反映原始数据的信息,并且彼此之间相关性较弱,从而达到压缩数据、简化问题的目的。举个例子,当我们评价城市时,我们可以把之前提到的所有指标归结为几个大的综合性因子。GDP、消费水平、收入水平等全部视为经济因素,空气质量、水源质量、绿化面积可以视为环境因素,用电用水人口等可以视为发展因子,教育教学,人文景点等可以视为文化因素。这样,我们就可以把之前的众多指标归结为几个具有代表性,又包含了大部分原始信息的综合性指标。

上面关于城市评价指标的“降维”,是我们根据自己的了解去构造的。而PCA可以使用数学的方法,帮助我们得到一系列由原始特征线性组合而成,彼此之间相关性较弱且可以反映大部分原始信息的综合特征。

如果有N个样本,每个样本有p个指标(特征)x_1,x_2,...,x_p,经过主成分分析,将他们组合成p个综合指标,即
\begin{cases} y_1 =c_{11}x_1+c_{12}x_2+\cdot\cdot\cdot+c_{1p}x_p \\ y_2 =c_{21}x_1+c_{22}x_2+\cdot\cdot\cdot+c_{2p}x_p \\ \ \ \ \ \ \ \ \ldots \ \ \ \ \ldots \ \ \ \ldots \\ y_k =c_{k1}x_1+c_{k2}x_2+\cdot\cdot\cdot+c_{kp}x_p \end{cases}
且满足
c_{k1}^2+c_{k2}^2+\cdot\cdot\cdot+c_{kp}^2=1,k=1,2,...,p
到这里会存在一定的疑问,根据上述公式,综合而成的指标好像依然有p个,并没有达到作为降维的目的。在实际应用中,我们挑选的第一个主成分y_1x_1,x_2,...,x_p的一切满足c_{11}^2+c_{12}^2+\cdot\cdot\cdot+c_{1p}^2=1的线性组合中方差最大的;第二个主成分y_2是与y_1不相关的x_1,x_2,...,x_p线性组合中方差最大者;以此类推,第p个主成分y_p是与y_1,y_2,...y_{p-1}都不相关的x_1,x_2,...,x_p线性组合中方差最大者。

由上可知,各个综合变量在总方差中所占的比重是依次递减的,我们在选择时一般只会选择前几个方差较大的主成分,从而达到降维的目的。

那为什么要选择方差较大的呢?从某种角度来说,方差不仅代表着数据的波动程度,也在一定程度上表征着数据的信息量,如果方差为0,则是一个常数,其信息很少;如果方差较大,说明数据较为分散,也就代表着更多的信息。而我们正是希望,我们选择的几个主成分能更好地保留原始数据的信息。

以上只是一种通俗的理解,更加严谨的解释、以及到底选择几个主成分、如何实践等问题,这里暂且不提。感兴趣的朋友请自行查阅,或者等我有机会来更新hhh

因子分析简介

下面进入因子分析部分。

因子分析同样是一种数据简化、数据降维的技术。只不过主成分分析是通过外在特征的线性组合,得到主成分。而因子分析通过研究众多变量之间的内部依赖关系,探求观测数据的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几个假想变量能够反映原来众多变量的主要信息。原始变量是可以观测的显性变量,而假象变量是不可以直接观测到的潜在变量,称为因子。

例如运动会中的各个项目的成绩,包括100米、跳远、铅球、跳高、400米、110米跨栏、铁饼、撑杆跳、标枪、1500米等。毫无疑问,一个人同时参与这些项目的表现是具有相关性的,比如铅球和铁饼的成绩,跳高和跳远的成绩等等。这种相关性往往会反映在运动员的得分上,也是我们可以直接观察到的变量。

而通过因子分析,我们可以把其表现从四个角度进行解释,分别是短跑速度、爆发性臂力、爆发性腿力、耐力。这四个特征是无法直接观测的,但我们知道它切实存在,并且影响着运动员各个项目的得分。因子分析,就是希望找到这种潜在的因子,更加深入地解释事物发生的内在原因。

因子分析的一般模型为
\begin{cases} x_1=u_1+a_{11}f_1+a_{12}f_2+\ldots+a_{1m}f_m+\varepsilon_1 \\ x_2=u_2+a_{21}f_1+a_{22}f_2+\ldots+a_{2m}f_m+\varepsilon_2 \\ \ \ \ \ \ \ \ \ldots \ \ \ \ \ldots \ \ \ \ \ldots \\ x_p=u_p+a_{p1}f_1+a_{p2}f_2+\ldots+a_{pm}f_m+\varepsilon_p \\ \end{cases}

其中x_1,x_2,...,x_p为原始的p个指标,u_1,u_2,...,u_px_1,x_2,...,x_p的均值,f_1,f_2,...,f_m称之为公共因子,即反映了指标之间的共性。\varepsilon_1,\varepsilon_2,...,\varepsilon_p分别代表x_1,x_2,...,x_p的特殊因子,反映了每个指标的个性。无论是公共因子还是特殊因子,都是无法观测到的。而a_{ij}则是第i个特征x_i在因子f_j上的载荷,反映了某个因子对于特征外在表现的影响程度。

以上就是因子分析的基本概念啦。如果想要了解具体的实现过程以及实际应用,就先自行查阅吧~

SVM简介

下面进入支持向量机(SVM)的部分。

感知机

我们之前提到过,SVM是一种经典又强大的分类模型。不过在了解SVM之前,有必要先了解一下感知机模型。

感知机是一种用于二分类的线性分类模型,其输入为样本的特征向量,输出为实例的类别,一般取\{+1,-1\}。感知机模型对应于输入空间中将样本分为正负两类的线性超平面。如下图所示,对于二维平面上的正类点和负类点,我们可以找到一条直线将其有效分开。这条直线记为wx+b=0,训练样本中,所有正类点满足wx+b>0,负类点满足wx+b<0。于是,当一个新的样本的特征向量确定了,我们将其输入到wx+b中去,如果结果大于0,就预测它为正类;如果结果小于0,就预测它为负类。

一般而言,感知机模型可以用一个函数关系来表达,即y=sign(w\cdot x+b)

对于上述情况,可以想象,我们能求解出的感知机模型是无限数量的。


因为在这么一大片区域中,存在着无数条直线可以将正类和负类分开。那么问题来了,这么多感知机,我们选择哪一个作为我们的最终模型呢?

感知机模型所代表的是一个超平面,正类点和负类点分布在平面的两侧。可以想象,如果我们训练出的感知机模型距离某个样本点特别近,那么当出现一个新的样本点,恰巧在该样本点附近,感知机模型犯错的概率就会比较大。而如果训练得到的超平面距离所有的样本点都比较远,那么当训练样本周围再出现新的样本,其被分类错误的概率就大大降低了。

如下图所示,蓝色感知机代表的直线距离某两个样本十分接近,所以当这两个样本周围出现很多同类样本的时候,蓝色感知机很可能会将他们分错类。即正类的点跑到了直线的下面而负类的点跑到了线的上面。而对于红色感知机所代表的直线,由于它距离所有样本点都比较远,所以某些样本点周围出现的一圈新样本,都能够被正确的分类。

而根据统计学规律,当我们的训练样本数目足够多时,其分布往往呈现出正态分布的规律。因此新的样本有很大概率会出现在训练样本的周围,如果感知机代表的超平面距离所有的样本都比较远,那么它对于“周围”这一距离描述的容忍度就会比较大,即使出现了某些较“远”的样本,其分类的错误率也会比较低,模型的鲁棒性会更好。

所以,我们希望在所有的感知机模型中,找到模型容忍度最大的那一个。

对于每一个确定的超平面w\cdot x+b=0,都存在一个与他距离最近的样本点,可以记为mind(w,b),所以,我们的目标就变成了在所有的(w,b)中,找到mind(w,b)最大的一个,即(w^*,b^*)=argmax\ \ mind(w,b)。这样的一个感知机模型w^* \cdot x+b^*=0,就代表着容忍度最大的超平面,也是最简单的一种支持向量机,即线性支持向量机。

接下来推导一下线性可分支持向量机的策略函数。首先需要对间隔的大小作出度量。

函数间隔与几何间隔

上文提到,线性的SVM就是使得mind(w,b)最大的那一个感知机模型。所以我们有必要定义一下样本点与超平面之间的距离。

函数间隔:对于给定的超平面(w,b)和训练数据集T,定义超平面(w,b)关于样本点(x_i,y_i)的函数间隔为
\hat{\gamma_i}=y_i(w\cdot x_i+b)
定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本(x_i,y_i)的函数间隔的最小值,即
\hat{\gamma}=\mathop{min}\limits_{i=1,...,N}\hat{\gamma_i}
这里\hat{\gamma}就是我们上文提到的mind(w,b)

为什么y_i(w\cdot x_i+b)可以表达间隔的概念呢?

如果(x_i,y_i)在超平面(w,b)上,那么必然有w\cdot x+b=0。所以只要(x_i,y_i)不在平面上,w\cdot x+b就不等于0,也就是存在间隔。而当(x_i,y_i)为正类时,y_i=+1,w\cdot x_i+b>0,此时y_i(w\cdot x_i+b)是正的;而当(x_i,y_i)为负类时,y_i=-1,w\cdot x_i+b<0,此时y_i(w\cdot x_i+b)依然是正的。如果存在y_i(w\cdot x_i+b)小于0,则说明该超平面无法做到对所有训练样本都正确分类。此时,如果训练样本线性可分,那么继续训练模型使得它对于所有的样本都有y_i(w\cdot x_i+b)>0,如果训练样本线性不可分,那么就需要引入松弛量或者核函数到达完全分类的目的。

因此,对于正确分类的训练集,样本点越靠近超平面,其函数间隔就越小,最小是0,越远离超平面,其函数间隔就越大。

函数间隔的问题在于,如果我们把(w,b)变为(2w,2b),超平面w\cdot x+b=02w\cdot x+2b=0在空间中是一样的,而函数间隔却由y_i(w\cdot x_i+b)变为2y_i(w\cdot x_i+b),扩大了一倍。因此,我们有必要对函数间隔进行规范化处理,使其可以更加准确的度量距离,这就引入了几何间隔的概念。

几何间隔:对于给定的超平面(w,b)和训练数据集T,定义超平面(w,b)关于样本点(x_i,y_i)的几何间隔为
{\gamma_i}=y_i(\frac{w\cdot x_i+b}{||w||})
定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本(x_i,y_i)的几何间隔的最小值,即
{\gamma}=\mathop{min}\limits_{i=1,...,N}{\gamma_i}
当样本正确分类时,几何间隔就是数学中标准的点到平面距离公式。其中||w||是向量w的二范数。

因此函数间隔\hat{\gamma}与几何间隔\gamma的关系为
\gamma=\frac{\hat{\gamma} }{||w|| }

(w,b)成比例改变时,函数间隔也成比例改变,而几何间隔不变。

SVM模型

下面我们来正式推导线性可分SVM的模型。

在所有的(w,b)中,我们希望得到间隔最大的用于分离正负类的超平面,这里的间隔使用几何间隔衡量。

所以问题可以表示成以下的约束最优化问题:
\begin{align} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathop{max}\limits_{w,b}\ \ \ \gamma \\ & s.t. \ \ \ y_i(\frac{w\cdot x_i+b}{||w||}) \ge \gamma,i=1,2...,N \end{align}
考虑到几何间隔和函数间隔的关系,问题可以转化为:
\begin{align} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathop{max}\limits_{w,b}\ \ \ \frac{\hat{\gamma}}{ ||w|| } \\ & s.t. \ \ \ \ y_i(w\cdot x_i+b) \ge \hat{\gamma},i=1,2...,N \end{align}

对于上述问题,\hat{\gamma}的取值并不影响最优化问题的解。事实上,倘若我们把(w,b)同时变为原来的\lambda倍,函数间隔自然变为\lambda \hat{\gamma},不等式约束变为
y_i(\lambda w\cdot x_i+\lambda b) \ge \lambda \hat{\gamma}
实质上没有任何变化。

目标函数变为了
\mathop{max}\limits_{w,b}\ \ \frac{\lambda \hat{\gamma}}{\lambda ||w|| } =\frac{1}{ \lambda} \frac{\lambda \hat{\gamma}}{ ||w|| }
也没有实质性的变化。

因此,我们不妨设\hat{\gamma}=1,则问题变为了
\begin{align} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathop{max}\limits_{w,b}\ \ \ \frac{1}{ ||w|| } \\ & s.t. \ \ \ \ \ \ y_i(w\cdot x_i+b) \ge 1,i=1,2...,N \end{align}
\mathop{max}\limits_{w,b}\ \ \ \frac{1}{ ||w|| }\mathop{min}\limits_{w,b}\ \ \ \frac{1}{2}{||w||}^2是等价的,所以我们就得到了经典的SVM模型:
\begin{align} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathop{min}\limits_{w,b}\ \ \ \frac{1}{2}{ ||w||}^2 \\ & s.t. \ \ \ \ \ \ \ y_i(w\cdot x_i+b) \ge 1,i=1,2...,N \end{align}

支持向量

我们来看一个已经训练好的支持向量机模型。

如图所示,我们得到了使得间隔最大的线性超平面,左右两边各有一条最大间隔线。而在这条线上,刚好有三个样本,也就是距离超平面最近的三个样本。如果我们去掉其他所有样本,仅保留这三个样本作为我们的训练集,我们会发现得到的超平面与原训练集得到的超平面是完全一致的。这三个样本是训练集中真正有意义的样本,其他样本在训练中并没有发挥实际的作用。由于样本是由特征向量表示的,因此我们称其为“支持向量”。

对于线性支持向量机而言,支持向量就是距离超平面最近的样本点。而更加严谨的说法则是:从训练集中选择一组特征子集,使得对特征子集的线性划分等价于对整个数据集的线性划分。这组特征子集称之为支持向量。

也就是对于训练真正起到支撑作用的特征向量。

其他

关于支持向量机还有很多很多内容,毕竟是占领机器学习领域好多年的经典模型。比如如何求解这个模型,如何处理线性不可分情况,如何处理复杂的分类问题,核函数核方法等等。事实上,同神经网络一样,支持向量机也可以以任意精度逼近任何一个f(x),但是其计算开销要比神经网络大很多。

不过这些就暂且都不提了,大家有兴趣可以自己了解。如果有一天我可以一定程度上掌握这一工具了,再回来聊这个事情。

以上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容