CVTE-机器学习基础问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SHERO_M/article/details/81364162

2018.7.27

机器学习基础

1、回归 分类 聚类的区别

classification (分类):分类技术预测的数据对象是离散值。

 regression (回归):回归技术预测的数据对象是连续值。回归模型包括一元回归和多元回归,线性回归和非线性回归。

 clustering (聚类):聚类算法用于在数据中寻找隐藏的模式或分组。聚类算法构成分组或类,类中的数据具有更高的相似度。聚类建模的相似度衡量可以通过欧几里得距离、概率距离或其他指标进行定义。

给定一个样本特征 , 我们希望预测其对应的属性值 , 如果是离散的, 那么这就是一个分类问题,反之,如果是连续的实数, 这就是一个回归问题。

分类问题最常用的学习算法包括 SVM (支持向量机) , SGD (随机梯度下降算法), Bayes (贝叶斯估计), Ensemble, KNN 等。

在分类问题中用到的学习算法,在回归问题中也能使用。回归问题也能使用 SVR, SGD, Ensemble 等,和其它线性回归算法。

扫描二维码关注公众号,回复: 2973841 查看本文章

如果给定一组样本特征 , 我们没有对应的属性值 , 而是想发掘这组样本在空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。而常用的算法包括 k-means (K-均值), GMM (高斯混合模型) 等。

支持向量机(SVM)

SVM 在小样本、非线性及高维数据分类中具有很强的优势。

2、特征降维的方法有哪些?PCA原理?

 dimensionality reduction (降维):如果我们想用维数更低的子空间来表示原来高维的特征空间, 那么这就是降维问题。特征的维数过高, 会增加训练的负担与存储空间, 降维就是希望去除特征的冗余,用更加少的维数来表示特征。降维算法最基础的就是PCA了, 后面的很多算法都是以PCA为基础演化而来。

机器学习中我个人认为有两种途径可以来对特征进行降维,一种是特征抽取,其代表性的方法是PCA,SVD降维等,另外一个途径就是特征选择。无论是特征抽取还是特征选择,都有信息的丢失,但是他们都是丢失一些相对来说不重要的信息,保留他们认为重要的信息。

特征抽取是对所有特征进行了组合,或者说是线性变换,或者说是投影,选择出最好的或者是效果最好的几个投影方向(变换方式),既保证了信息最大程度的保留,又使维度降低了。而特征选择只是单纯的根据某个标准,对特征的重要程度进行了计算,保留最靠前的,最重要的一些特征,剔除剩下的不重要的特征。

PCA降维

由一系列特征组成的多维向量,其中某些元素本身没有区分性,我们的目的是找到那些变化大的元素,即方差大的维,去除掉那些变化不大的维。使用PCA的好处是,可以对新求出的“主元”向量的重要性进行排序。根据需要取前面最重要的部分,将后面的维数省去,从而达到降维、简化模型或对数据进行压缩的效果。

PCA通过将主成分分析的问题转化为求解协方差矩阵的特征值和特征向量来计算。其目的是寻找r个新变量,使他们反应事物的主要特征,压缩原有数据矩阵的规模,每个新变量是原有变量的线性组合,体现原有变量的综合效果,这r个新变量称为“主成分”,并且这些变量是互不相关的,也是正交的。


主成分分析(PCA)

  • 原理

    PCA(Principal Component Analysis):数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们可以忽 略余下的坐标轴,即对数据进行了降维处理。 
    因子分析(Factor Analysis):假设在观察数据的生成中有一些观察不到的隐变量(latent variable)。假设观察数据是这些隐变量和某些噪声的线性组合。那么隐变量的数据可能比观察数据的数目少,也就是说通过找到隐变量就可以实现数据的降维。 
    独立成分分析(Independent Component Analysis,ICA):假设数据是从N个数据源生成的,这一点和因子分析有些类似。假设数据为多个数据源的混合观察结果,这些数据源之间在统计上是相互独立的,而在PCA中只假设数据是不相关的。同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维过程。

  • 优缺点

    优点:降低数据的复杂性,识别最重要的多个特征。 
    缺点:不一定需要,且可能损失有用信息。 
    适用数据范围:数值型。

奇异值分解(SVD)

  • 原理

    SVD(Singular Value Decomposition):从原始数据集中抽取信息的方法。 
    利用SVD实现,我们能够用小得多的数据集来表示原始数据集。这样做,实际上是去除了噪声和冗余信息。 
    矩阵分解可以将原始矩阵表示成新的易于处理的形式,这种新形式是两个或多个矩阵的乘积。SVD将原始的数据矩阵Data分解成三个矩阵UU、ΣΣ、VTVT。如果原始矩阵Data是m行n列,那么UU、ΣΣ和VTVT就分别是m行m列、m行n列、n行n列。ΣΣ矩阵只有对角元素,其他元素均为0。 

    Datam∗n=Um∗mΣm∗nVTn∗nDatam∗n=Um∗mΣm∗nVn∗nT

  • 优缺点

    优点:简化数据,去除噪声,提高算法的结果。 
    缺点:数据的转换可能难以理解。 
    适用数据范围:数值型。


特征选择的方法:

过滤型

变量排序就是一种典型的过滤式方法,该方法独立于后续要使用的模型。这种方法的关键就是找到一种能度量特征重要性的方法,比如pearson相关系数,信息论理论中的互信息等。

其主要思想是:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。 主要的方法有:Chi-squared test(卡方检验),information gain(信息增益),correlation coefficient scores(相关系数)

变量排序方法的主要问题在于忽略了特征之间可能存在的相互依赖关系。一方面,即便排序靠前的特征,如果相关性较强,则引入了冗余的特征;另一方面,排序靠后的特征,虽然独立来看作用不明显,但可能与其它特征组合起来,就有很好的预测作用,如此就损失了有价值的特征。

包裹型

这类方法的核心思想在于,给定了某种模型,及预测效果评价的方法,然后针对特征空间中的不同子集,计算每个子集的预测效果,效果最好的,即作为最终被挑选出来的特征子集。注意集合的子集是一个指数的量级,故此类方法计算量较大。

其中有一种简单有效的方法叫贪婪搜索策略,包括前向选择与后向删除。在前向选择方法中,初始化一个空的特征集合,逐步向其中添加新的特征,如果该特征能提高预测效果,即得以保留,否则就扔掉。后向删除即是说从所有特征构成的集合开始,逐步删除特征,只要删除后模型预测效果提升,即说明删除动作有效,否则就还是保留原特征。要注意到,包裹式方法要求针对每一个特征子集重新训练模型,因此计算量还是较大的。

嵌入式

嵌入式方法将特征选择融合在模型训练的过程中,比如决策树在分枝的过程中,就是使用的嵌入式特征选择方法,其内在还是根据某个度量指标对特征进行排序。

3、分类器集成方法

Bagging:基于数据随机重抽样的分类器构建方法

bagging方法,也称自举汇聚法(bootstrap aggregating),是对原始数据集进行随机重抽样(有放回的抽样)得到若干个与原数据集同样大小的新数据集的一种技术。 
在得到S个数据集后,最简单的方法就是用某个学习算法分别作用于每个数据集得到S个分类器。最后汇总S个分类器的分类结果,通过多数表决的投票法得到最终的分类结果。 还有一些更先进的bagging方法,比如随机森林(random forest)。

Boosting:基于数据权重调整串行训练的分类器构建方法

boosting方法通过改变训练样本的权重,串行训练多个分类器,并将这些分类器进行线性组合来构建强分类器。 
boosting构建分类器的过程中,每个新分类器都是根据已训练出的分类器的性能来进行训练的,即将被已有分类器错分的那些数据的权重增大,而被正确分类的数据权重减小。最终在训练得到m个分类器后,依据各分类器的分类性能给予相应的权重,并组合得到最终的分类器。

Bagging和Boosting比较

集成方法 bagging boosting
训练实例构建 随机重抽样 根据已训练出的分类器性能调整权重
子分类器构建 基于重抽样的数据集构建,相互独立 根据权重调整后的数据集构建,串行,相互依赖
产生最终分类器 多数表决的投票法 权重依赖子分类器性能的加权组合

猜你喜欢

转载自blog.csdn.net/SHERO_M/article/details/81364162