00:01
3.4,降维特征提取与流行学习前面讨论过,利用无监督学习进行数据变换可能有很多种目的,最常见的目的就是可视化压缩数据,以及寻找信息量更大的数据表示以用于进一步处理。为了实现这些目的,最简单也最常用的一种算法就是主成分分析。我们也将学习另外两种算法,非负矩阵分解NMF和T。前者通常用于特征提取,后者通常用于二维散点图的可视化。3.4.1主成分分析主成分分析p component and analysis p CA是一种旋转数据集的方法,旋转后的特征在统计上不相关。在做完这种旋转之后。通常是根据新特征对解释数据的重要性来选择它的一个子集。下面的例子展示了PCA对一个二维模拟数据集的作用。
01:20
第一张图左上。也就是这么一张图,显示的是原始数据点,用不同颜色加以区分,算法首先找到方差最大的方向。将其标记为成分1COMPONENT1。这是数据中包含信息最多的方向,或者说向量。换句话说,沿着这个方向的特征之间最为相关。然后算法找到与第一个方向正交称直角且包含最多信息的方向。在二维空间中,只有一个称直角的方向,但在更高维空间中,会有无穷多的呈直角方向。虽然这两个成分都化成箭头,但其头尾位置并不重要。我们也可以将第一个主成分化成从中心指向左上,而不是指向右下。利用这一过程找到的方向被称为主成分principleinci component,因为他们是数据方差的主要方向。一般来说,主成分的个数与原始特征相同。
02:33
第二张图右上显示的是同样的数据,但现在将其旋转,使得第一组成分与X轴平行,第二组成分与Y轴平行。在旋转之前,从数据中减去平均值,使得变化后的数据以零为中心。在PCA找到的旋转表示中,两个坐标轴是不相关的。也就是说对于这种数据表示除了对角线,相关矩阵全部为零。也就是。
03:00
它的斜方差矩阵除了对角线以外的位置全部为零。我们可以通过仅保留一部分主成分来使用PCA进行降维。在这个例子中,我们可以仅保留第一个主成分。正如第三张图所示。这将数据从二维数据集降为一维数据集,但要注意,我们没有保留原始特征之一,而是找到了最有趣的方向。第一张图中从左上到右下,并保留这一方向及第一组成分。最后我们可以反向旋转,并将平均值重新加到数据中,这样会得到。最后一张图的数据,这些数据位于原始特征空间中,但我们仅保留了第一组成分中包含的信息。这种变换有时用于去除数据中的噪声的影响,或者将主成分中保留的那部分信息进行可视化。
04:01
主成分分析。它的过程大家也有一个大致的了解,但是还是有一些细节问题。这两个方向是怎么找出来的?在讲这两个方向怎么找出来之前。我们首先。来想一下主成分分析,怎么旋转数据集。因为主成分分析是一种旋转数据集的方法,所以必然是进行一个正交变换。那么需要进行正交变换的时,对称矩阵是哪一个矩阵呢?又因为旋转后的特征在统计上不相关,所以我们需要对原始数据的斜方差矩阵进行正交变化,也就是合同对角化。把新表示的斜放大矩阵除了对角线以外,其余位置全部是零。
05:03
下面来举个例子,假设一组二维数据的斜方差矩阵是A等于二负一,负一二,我们需要对其进行正交变换,先求特征值。在我这地方求特征值使用了一个技巧,而没有使用老方法A减去莱姆达E的行列式等于零的方式。在我这地方使用的是。首先是求两个特征值的平均值,也就是1/2的p raa的G等于1/2的莱达,一加莱达等于二。然后是A的行列式等于M,不能一乘上来。也就等于三。根据第一个方程。我可以发现特征值可以这么写,写成莱等于二加减D。然后代入第二个方程。我就有二加D乘上二减D等于四减D方等于三。解出来,D等于正负一。
06:00
因为算法首先选择方差最大的方向。所以我需要对特征值进行降序排序,莱一等于三,兰二等于一,接着求出对应的特征向量。A减莱达一一乘上E进行初等变换,1100 a减莱二乘上E进行初等变化,一负100。所以莱不达一等于三对应的特征向量阿尔法一等于一负一的转置,兰不二等于一对应的特征向尔法等于一一的转置。显然,两个特征向量正交,如果不正交,需要进行正交化,现在直接进行单位化。伽马一等于一除以根号二,逗号负一除以根号二的转置,伽马二等于一除根号一除根号的转置。0Q等于伽马一伽马,此时有Q的转置乘上AQ等于。
07:00
3001。表示什么意思?表示变换之后。第一个主成分的方差是三,第二个主成分的方差是一。这两个位置非对角线位置。数据为零,说明变化后的两个特征。不相关。这是主成分分析的一种情况,不进行降维,也是纯粹的旋转。下面我们只保留一个主成分,也就是进行价位,此时只需要第一个特征值和对应的单位化的特征向量,令Q等于伽马1Q的转置乘上AQ,算一下等于三一个一个矩阵。里面只有一个数。那么。从这里变到这里是怎么变的?从第一幅图变到第二幅图是怎么变的?是这么来的。
08:01
把这个方向作为X轴,这个方向作为Y轴。依旧是以上面的这样一个写方法矩阵为例,假设数据的原始坐标。有比如说这么一点。原始左边是X0 Y0。变换之后的坐标是XY。原始正交基底阿尔法一等于一零,阿尔法二等于零一变化后的正交基底贝塔一等于伽法一,贝塔二等于伽马二零,A等于阿尔法一,阿尔法B等于贝塔一贝塔,此时就有A乘上X0 Y0,原始坐标也就等于是B乘上XY。两边同时做成B的力可得。
09:00
XY等于B的力乘上。A再乘上X0 Y0 a。实际上就是单位矩阵可以忽略。上述过程是不进行降为单纯进行坐标变化。也就是这一幅图变到这一幅图。如果要进行降维,只需保留变换之后的前几个坐标值,在这里只可能是第一个,一共是二维数据。进行降维,就是从这一幅图先变到这一幅,然后再变到这一幅。我们接下来看看怎么将PC应用及勘测数据集并可视化。PC最常见的应用之一就是将高维数据集可视化。正如第一章中所说,对于有两个以上特征的数据,很难绘制三点图,对于is原有化数据集,我们可以创建三点图矩阵。通过展示特征所有的可能的两两组合来展示数据的局部图像。但如果我们想查看乳腺癌的数据集,即便用散点图矩阵也很困难。
10:13
这个数据集包含30个特征。这就导致需要绘制30乘以14等于420张三点图。我们永远不可能仔细观察所有这些图像,更不用说试图理解他们了。不过我们可以使用一种更简单的可视化方法。对每个特征分别计算类别良性肿瘤和恶性肿瘤的直方图。
14:41
我们先看一下这个函数。浪派点his toram。对一组数据计算对应的柱状图数组,返回两个数组,一个计数数组。一个其中元素升序排序的区间数组。
15:00
参数A一个类似数组的这输入数组柱状图数组通过先展平该数组再计算的方式进行计算。并死整数标量序列、整数或者浮点数序列字符串三选一可选参数。如果并死是一个整数,并且未指定参数range,那么把输入数据的最小值和最大值均匀的分成并份,如果指定了参数range,那么必须将RANGE0到R1均匀的划分成并分,此时区间数组的长度是并加一。如果是一个序列,其中元素必须升序排序,此时区间数组就是。如果是一个字符串,它必须是auto fd do Scott right surgeon sqt7选对应的区间个数。区间数组长度等于区间个数加一和优缺点可以建下面两张表。
16:00
B等于auto,对于少量数据等价于B等。得,对于大量数据等价于B等于FD,通常情况下,切换点数组元素个数等于约等于1000。B等于FD,假设A有N个数,四分位范围IQA等于A的较大四分位数减去A的较小四分位数,那么。参数认证维持默认情况下区间个数时,A的最大值减去A的最小值除以H,向上去乘其中H等于两倍的iqr除以等于的1/3次方。Bo假设A有N个数,平均值为谬,标准差为西格玛。那么参数运维持默认极宽的区间个数是。一加上LOG2点,再加上logo2.1加G1的绝对值除以西格玛G1G1等于X减谬除以西格玛三次方的平均值西格玛记一等于根号下。
17:00
六倍的N减二除以N加一乘以N加三。Scott。假设A有个数,标准差为西格玛。那么参数运为持默认情况下的区间个数是。A的最大值减去A的最小值除以H,向上去乘,其中H等于C,根法乘上三次根号下24倍根号派除以A。并等于rise,假设A有N个数,参数运减位是默认情况的区间,个数是两倍的N乘上1/3两倍的N的1/3次方向上取整。并等于TIN4假设A有一个数,那么参数认为成默认情况的区间个数是。Loge奥迪N加一向上去整。B等于SQRT,假设A有个数参数运转维持默认情况下的区间个数是根号N向上取整。优缺点。等于auto可以提供良好的性能FD。
18:03
见状的估计,其他能够是以异常值,不仅考虑数据的变化,还考虑数据量。Dones等于stences的升级版,对非正态数据有较好的估计,这一估计器试图考虑一边倒的数据。优缺点,对少量数据太过保守,对大量数据表现相当的好标准差,对异常值不是很健壮,在缺乏异常值的时候和B等于FD非常相似。往往会高估区间的个数,不考虑数据的变化。Sur假设数据是正态分布。对大型非正态数据太保守。SQRT最简单,性能最好,只考虑输入数组的元素个数。Live。这里总共有三个例子。我分别用注释标出来了,首先是注释一处的执行过程,也就是这一个函数这一块,它是怎么执行的。
19:10
首先是区间数组。也就是第二个数组。它是怎么来表示区间的?1248,很显然,这可以表示一个区间,两个区间,三个区间。一到二是一个区间,二到四是一个区间,四到八是一个区间,注意。除了最后一个以外,其他地方全部都是前闭后开。一到A中元素有几个落入对应的区间,很明显就一个一一花,不包含。二到四有几个非重元素,有几个落入对应区间?
20:01
二和三数一下一二有两个。四到八是七个,大家可以自己数一下,那么计数数组。第一个返回值。把这一行数据往下抄就行了。注释二处的执行过程。这个时候。B等于二。因为并等于二,其他参数默认,所以需要把区间a.minimum逗号a.max等于负二到二均匀的划成两个空间,显然划分之后两个小区间是负二,逗号零到和零到二,此时区间数组就是负202。计算它的过程。计数数组,也就是第一个数组,它是怎么算出来的?可以看一下表,首先算A中元素有几个落入对应的区间。大家可以自己数一下,计数数组。
21:02
就是这一行内容往下抄一下就行了。注释三处的执行过程,因为并等于rise,所以区间个数等于两倍的N乘上两倍的N的1/3次方向上去值也就等于是减二乘以十的1/3次方等于4.30,后面我就不读了。向上取整得五,此时要进行划分的区间是。A点面高a.max也,这是A的最大值,最小值到最大值,我们需要把该区间均匀的划分成五个区间,显然这五个小区间是。大家自己看一下,我就不读了。所以区间数组。取B的这一块区域,负二,负1.2负0.40.41.22。写下来就行了,区间数组就出来了。计数数组的计算过程可以看一下表。首先也是跟上面一样,算A中元素有几个落入对应的区间。
22:05
写出来之后,然后计数,数组照着抄一下就行了。参数range升序排序的浮点数二元组可选参数区间数组的范围默认a.minimum到a.max也就是A的最小值到A的最大值。如果提供会剔除在该范围之外的数据,该参数也会影响区间的计算。当小区间的长度通过基于范围内的真实数据进行计算,小区间会填充整个范围,哪怕没有一个输入数据落入对应的小区间。注意,如果提供该参数,此时参数并最好支序整数。如果并是一个序列,指定range根本没有用。如果B是一个合理的字符串,也就是上面的那七个字符串区间数组会出现意想不到的结果。这两个例子很符合我们的预期输出。
23:02
接下来就可能有点不符合了。这一个。因为12481到八是包含在负十到十中间了。这个也没有毛病,那么。下面这一个呢。我指定范围是负五到五,可是区间数组却可以取到八。是不是意想不到?更奇怪的地方是这里。指定范围负一到一区间数组还是能取到八。而且指定的范围。并没有把A中超出范围的给剔除掉。最后,这个例子是更加不可思议。A。里面有十个数。
24:00
N等于十。Rise的情况我们带进去看一下。区间个数算出来是五,可是在这地方,因为我是把范围给扩大了,导致它的区间个数是四。四五二十20加三二十三二十三再减去一等于22个区间。五个区间就因为范围扩大变成22个区间。我也不知道它是怎么变的。参数,Which。一个类似数组的对象可选参数,如果该数组必须和输入数组形状相同,在进行计数的时候把对应的权重相加,而不是加一。如果density等于true,此时位里面的元素必须全部同号,要么全正,要么全负。如果出现异号,可能会导致位点sum等等于零,也就会导致。进行规范化的时候,除以零会把该参数,但如果等等于Q会把该参数进行规范化,也就是该参数中所有元素的和为一。下面来看一个例子。
25:11
就一个例子,它的执行过程先可以先看一下表,首先写出A和V。放在一张表中。区间数组是怎么出来的?上面也讲过了,所以我就省略掉了。看一下落入对应区间,也就是这个区间A中的元素依次写下来。然后再把对应的权重。也给写下来。权重就是为此,比如说这里负二一,负二,负二落入对应的区间,那么负二对应的权重是二。这里一落入负一落入对应的区间,它对应的权重是负二,负二落入对应的区间,它对应的权重是二。
26:03
对应的权重这样一个数组对其进行求和,二加负二再加二等于二。这一块和它同理,计数数组就是把对应的权重之和这一行往下一抄就行了。For类型可选参数默认false,如果是false,就只会进行简单的加和,如果是处,就会把简单的加和改成对应的概率密度,一个区间的概率密度等于区间的长度除以区间的概率除以区间的长度。这里依旧是四个例子。我们首先来看注释一处的执行过程。区间数组怎么来的?参考上面的,参考上面所讲的过程就行了。我这里省略。直接看。A中元素有几个落入对应的区间,然后看落入对应区间的概率。
27:02
紧接着是区间的长度。区间长度。零减负二等于202减零也等于二。区间概率的密度。概率除以区间长度,0.3除以二等于0.15。0.7除以等于0.35计数数组。就是区间概率密度往下一抄就完事了。注释二处的执行过程。首先,我们需要去计算为此的求和等于32。大家可以自己算一下。然后写,先写。两个数组,然后再写上。为此,权重数组除以。三是要进行规范化后的权重数组。规范化后的权重数组,就是把权重数组除以。权中数组求和。
28:01
这样一个新数组。往下抄一遍就行了。接下来是索引区间,这个区间怎么来的?看一下区间数组就行了。落入对应区间A中的元素抄一下,然后再把对应的权重给写下来,对应的规范化权重给写下来,接下来再去把对应的规范权重做个求和。对应规范权重做求和之后。往下抄一门,它就得于区间概率,此时区间的长度。还都是。那么区间的概率密度就是把区间的概率除以区间的长度。计数数组就是把区间概率密度往下抄。就完事了。注释三处的执行过程。这地方需要注意,我指定了一个范围。首先。
29:04
我们把A先原封不动的给写下来,写在一张表中,然后把A中位于负一到1B区间内的这个范围内的元素依次保留。这个负一到1B区间是怎么来的,看这个参数。其余的都剔除掉。维持原顺序不变。剔除的少。变成了这样一个A变成这样一个数组。接下来还是算。这个区间怎么来的,我也不详细说了。上面讲过,A中元素有几个落入对应的区间呢?写下来A中元素落入对应的区间的概率。写下来区间的长度。区间的概率密度等于概率除以区间长度。一就是写的计数数组。把区间概率密度。往下抄就完事了。注释四处的执行过程。
30:01
需要注意的是,我这地方。既指定了范围,又指定了权重。首先也是把A中位于负一到一这个B区间内的范围的元素依次保留,其余的剔除掉,位置也跟着A变对应位置,该留的留,该走的走。上面这个表。进行这样的操作,变成下面这个表。然后我们可以发现,为此进行求和是19。接下来写出A和对应的规范化后的位置。然后接下来去计算。落入对应区间的A中的元素写下来。依次写下就行,对应的规范化权重也依次写下来,对应的规范化权重进行求和。
31:07
区间的概率。往下抄就行了,区间的长度两个都是一,区间的概率密度等于区间的概率除以区间的长度。写下来,算好之后写下,然后计数数组。区间概率密度往下誊抄就行。返回值计数数组,如果等CD等于two,计算对应的概率密度。并A第二个返回值,也就是区间数组,假设该数组有N加一个元素,那么它就可以表示N个区间对任意的I属于零一,得到N减一范围。Di个元素到DI加一的元素表示一个区间,为了防止多计算或者少计算,当I不等于I加一零,减一的时候,也就是当I没有跳到最后的时候,对应的区间就是。丙hi到丙hi加一前闭后开。
32:03
当A等于A减一,就是跳到最后一个的时候,对应的区间就是BA减I到BA减I加一,这是一个B区间。我们回到书本上。看到。这些图。这里我们为每个特征创建了一个直方图。计算具有某一特征的数据点在特定范围内叫做B的出现频率。每张图都包含两个直方图,一个是良性类别的所有点。在这里是绿色的,一个是恶性类别的,所有点在这里是紫色的。这样我们可以了解每个特征在两个类别中的分布情况,也可以猜测哪些特征能够更好的区分良性样本和恶性样本。进入smoothness a特征。
33:04
也就是。对应这样一幅图。它似乎没有什么信息量,因为两个直方图大部分都重叠在了一起。而worst concave points。也就是对应这样一幅直方图。特征,看起来信息量相当的大。因为两个直方图的交集很小。如果我这里看不清,大家可以看一下书上的110页图三-四。但是这种图无法向我们展示变量之间的相互作用,以及这种相互作用与类别之间的联系。利用PC,我们可以获取到主要的相互作用,并得到稍微完整的图像。我们可以找到前两个主成分,并在这个新的二维空间中用三点图将数据进行可视化。在应用PCA之前,我们利用standard scale缩放数据,使每个特征的方差均为一。
34:59
学习并应用PCA变换与应用预处理变换一样简单。我们将PCA对象实例化,调用fit方法找到主成分,然后调用transform来旋转并降为。默认情况下,PCA仅做旋转并移动数据,但保留所有的主成分。为了降低数据的维度,我们需要创建在创建PC对象时指定想要保留的主成分个数。
35:56
通过在PC。类的构造函数中指定这个参数n components。
36:05
来设置保留的主成分个数。
37:45
通过输出的结果,我们可以发现确实进行了降维,原本30维的数据变成了二维的数据。现在我们可以对前两个主成分作图。
40:02
重要的是要注意,PCA是一种无监督方法,在寻找旋转方向时没有用到任何类别信息,它只是观察数据中的相关性。对于这里所示的三点图,我们绘制的第一组成分与第二组成分的关系,然后利用类别信息对数据点进行着色。你可以看到。在这个二维空间中,两个类别被很好的分离,这让我们相信即使是线性分类器在这个空间中学习一条直线,也可以在区分这两个类别时表现的相当不错。我们还可以看到恶性点比良性点更加的分散。这一点也可以在。书上110页图三-四的直方图,也就是在我这地方,是这上面的直方图中也可以看得出来。PCA的一个缺点在于通常不容易对图中的两个轴做出解释。主成分对应于原始数据中的方向,所以它们是原始特征的一个组合。但这些组合往往非常复杂,这一点我们很快就会看到。
41:08
在拟合过程中,主成分被保存在PCA对象的components下划线属性中。Components下划线这个属性中,每一行对应一个主成分,也就对应一个方向,它们按特重重要性排序。
42:00
第一主成分排在首位,以此类推,列对应于PCA的原始特征属性。在这个例子中。就是。Mean radius mean texture等,我们来看一下components下划线的它的内容。当然,我们可以利用热图。将系数进行可视化,这可能更容易理解。
44:59
你可以看到在第一个主成分中。
45:03
所有特征的符号相同。均为正。但前面我们提到过,箭头指向哪个方向无关紧要。这意味着所有特征之间存在普遍的相关性。如果一个测量值较大的话,其他测量值可能也较大。第二个主成分的符号有正有负,而且两个主成分都包含30个特征。这种所有特征的混合。是的。解释这个坐标轴。变得十分的困难。
我来说两句