机器学习基本算法总结
☞其他工具
代码在这,基于python3(原书代码是python2)
这里只是一个总结,原书已经讲解很清楚了,不清楚的直接看代码
目录
==========================
一、预测数值型数据:回归
1. PCA 相关描述
———————————————————————————————————-
优点:降低数据的复杂性,识别最重要的多个特征。
缺点:不一定需要, 且可能损失有用信息。
适用数据类型:数值型数据。
———————————————————————————————————-
1.1 降维
降维是对数据高维度特征的一种预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为了应用非常广泛的数据预处理方法。在降维中,我们对数据进行了预处理。之后,采用其他机器学习技术对其进行处理。
降维具有如下一些优点:
(1)使得数据集更易使用
(2)降低算法的计算开销
(3)去除噪声
(4)使得结果容易理解
1.2 PCA(主成分分析)
PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法。在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息
。第一个新坐标轴选择的是原始数据中方差最大的方法,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向
。重复该过程,重复次数为原始数据的特征维数
。实上,这样也就相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,也就实现了对数据特征的降维处理。
那么,我们如何得到这些包含最大差异性的主成分方向呢?事实上,通过计算数据矩阵的协方差矩阵
,然后得到协方差矩阵的特征值及特征向量
,选择特征值最大(也即包含方差最大)的N个特征所对应的特征向量组成的矩阵
,我们就可以将数据矩阵转换到新的空间当中,实现数据特征的降维(N维)
。首先看一下均值,方差和协方差的计算公式:
由上面的公式,我们可以得到一下两点区别:
(1)方差的计算公式,我们知道方差的计算是针对一维特征,即针对同一特征不同样本的取值来进行计算得到;而协方差则必须要求至少满足二维特征。可以说方差就是协方差的特殊情况。
(2)方差和协方差的除数是n-1,这样是为了得到方差和协方差的无偏估计。具体推导过程可以参见博文。
1.3 PCA实现
PCA算法实现:
去除平均值
计算协方差矩阵
计算协方差矩阵的特征值和特征向量
将特征值排序
保留前N个最大的特征值对应的特征向量
将数据转换到上面得到的N个特征向量构建的新空间中(实现了特征压缩)
上述降维过程,首先根据数据矩阵的协方差的特征值和特征向量,得到最大的N个特征值对应的特征向量组成的矩阵,可以称之为压缩矩阵
;得到了压缩矩阵之后,将去均值的数据矩阵乘以压缩矩阵,就实现了将原始数据特征转化为新的空间特征
,进而使数据特征得到了压缩处理。当然,我们也可以根据压缩矩阵和特征均值,反构得到原始数据矩阵,通过这样的方式可以用于调试和验证
。
2. PCA对半导体数据进行降维
- 数据缺失值的问题:
显然,数据集中可能会包含很多缺失值,这些缺失值是以NaN进行标识的。那么如何对待这些缺失值呢?如果存在大量的样本存在缺失值,显然选择将这些有缺失值得样本丢弃不可取;此外,由于并不知道这些值的意义,选择将缺失值替换为0也不是一个很好的决定
。所以,这里我们选择将数据集中的特征缺失值,用数据集中该维度所有非NaN特征的均值进行替换
。相比之下,采用均值替换的方法在这里是一个相对较好的选择。
PCA:如果确定需要保留哪些重要特征呢?PCA函数可以给出数据所包含的信息量,然后通过定量的计算数据中所包含的信息决定出保留特征的比例。
查看p249特征值结果,我们可以看到如下几个重要信息:
(1)里面有很多值都是0,这意味着这些特征都是其他特征的副本,都可以通过其他特征来表示,其本身没有提供额外的信息。
(2)可以看到最前面的15个特征值得数量级都大于105,而后面的特征值都变得非常小。这表明,所有特征中只有部分特征是重要特征。
下图示出了数据集前20个主成分占总方差的百分比:
可以看出,数据的绝大部分方差都包含在前面的几个主成分中,舍弃后面的主成分并不会损失太多的信息。如果只保留前面几个最重要的主成分,那么在保留了绝大部分信息的基础上,可以将数据集特征压缩到一个非常低的程度,显然大大提高了计算效率。
一旦通过特征值分析知道了需要保留的主成分个数,那么我们就可以通过pca函数,设定合适的N值,使得函数最终将数据特征降低到最佳的维度。
3. 总结
(1)降维是一种数据集预处理技术,往往在数据应用在其他算法之前使用,它可以去除掉数据的一些冗余信息和噪声,使数据变得更加简单高效,提高其他机器学习任务的计算效率。
(2)pca可以从数据中识别主要特征,通过将数据坐标轴旋转到数据角度上那些最重要的方向(方差最大);然后通过特征值分析,确定出需要保留的主成分个数,舍弃其他主成分,从而实现数据的降维。
===============================================================
二、利用SVD来简化数据
1. SVD
———————————————————————————————————-
奇异值分解:
优点:简化数据,去除嗓声,提高算法的结果。
缺点:数据的转换可能难以理解。
适用数据类型:数值型数据。
———————————————————————————————————-
1.1 SVDh和推荐系统
我们知道,在实际生活中,采集到的数据大部分信息都是无用的噪声和冗余信息,那么,我们如何才能剔除掉这些噪声和无用的信息,只保留包含绝大部分重要信息的数据特征呢?除了上一章提到的PCA方法,本次介绍另外一种方法,即SVD。SVD可以用于简化数据,提取出数据的重要特征,而剔除掉数据中的噪声和冗余信息
。SVD在现实中可以应用于推荐系统用于提升性能
,也可以用于图像压缩
,节省内存
。
我们称利用SVD的方法为隐性语义索引(LatentSemantic Indexing, LSI) 或隐性语义分析(LatentSemanticAnalysis, LSA)。这些奇异值代表了文档中的概念或主题
,这一特点可以用于更高效的文档搜索。两个不行:1.在词语拼写错误时,只基于词语存在与否
的简单搜索方法会遇到问题。2.简单搜索的另一个问题就是同义词
的使用。这就是说,当我们查找一个词时,其同义词所在的文档可能并不会匹配上。如果我们从上千篇相似的文档中抽取出概念,那么同义词就会映射为同一概念。
如何才能将原始数据变换到上述新空间中呢?下一节我们将会进一步详细地介绍SVD,届时将会了解到S V D是如何得到u和 vT v T 两个矩阵的。 vT v T 矩阵会将用户映射到BBQ/日式食品空间去。类似地,口矩阵会将餐馆的菜映射到BBQ/日式食品空间去。
1.2 矩阵分解
在很