机器学习知识点总结

更新于2019.10.19

?一、SVM

原理:在特征空间上最大化分类间隔线性分类器,加上核函数可实现非线性分类(将低维特征映射到高维特征)。通常二分类。
为了实现非线性分类,其一,可通过采用松弛变量和惩罚因子对违反不等式约束的样本进行惩罚,得到对偶问题,求解对偶问题计算量大,采用SMO(sequential minimal optimization,顺序最小优化)算法可高效解决。虽然能线性可分,但是会存在误分。

多分类问题

  • 一对剩余方法:对于有k个类的分类问题,用k个分类器,一个分类器预测一个类,根据每个分类器输出的最大值,作为预测结果。
  • 一对一方法:对于有k个类的分类问题,用C(k,2)个分类器。每一个分类器依次判断属于i(1到k)类还是剩余的其余类,最终通过投票,最多的作为预测结果。

常用的核函数

  • 多项式核函数 ( polynomial kernel function )
  • 高斯核函数 ( Gaussian krenel function )
  • 字符串核函数 ( string kernel function )

优点:分类与回归都能用,泛化能力好适合小样本高维特征

?二、K-NN

原理:预测值根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。k 值的选择距离度量分类决策规则是 k 近邻法的三个基本要素。当 k=1 时称为最近邻算法。

策略

  • 距离:特征空间中两个实例点的距离是相似程度的反映,k 近邻算法一般使用欧氏距离,也可以使用更一般的 Lp 距离或 Minkowski距离。
  • k 值:k 值较小时,整体模型变得复杂,容易发生过拟合。k 值较大时,整体模型变得简单。在应用中 k 一般取较小的值,通过交叉验证法选取最优的 k通常k是不大于20的整数。
  • 分类决策规则:k 近邻中的分类决策规则往往是多数表决,多数表决规则等价于经验风险最小化

优点不需要训练。天然支持多分类。有非线性分类的能力。
缺点:当训练样本数大,特征向量维数很高时计算复杂度高。(每次预测都需要计算预测样本和每一个训练样本的距离,并且要对距离进行排序找到最优的那一个)。

K-NN模型过于简单怎么理解?:一个极端是k等于样本数m,则完全没有分类,此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单。

?三、K-means

原理:是无监督的聚类算法。思想是对于给定的样本集,按照样本之间的距离大小(通常采用欧氏距离)将样本集划分为 K 个簇,让簇内的点尽量紧密地连在一起,而让簇间的距离尽量的大。
优点: 算法简单易实现。
缺点: 需要事先指定类簇个数; 聚类结果对初始类簇中心的选取较为敏感(可能每次不一样); 容易陷入局部最优; 只能发现球形类簇。

?四、bayesian

原理:朴素贝叶斯(特征相互独立)是基于贝叶斯定理和特征条件独立假设的分类方法。首先学习输入/输出的联合概率分布,然后基于此模型,对给定的输入 x,利用贝叶斯定理求出后验概率最大的输出 y。属于生成模型。
现实中的变量多数近似服从正态分布。(正态贝叶斯)。
优点:属于生成模型,实现简单,计算量小速度快。(应用于:垃圾邮箱分类、文本分类、人脸识别、视频监控等)
缺点:由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。

?五、decision tree

原理:在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
特征选择:信息熵(熵是衡量随机变量不确定性的度量。熵越大,随机变量的不确定性就越大)、信息增益(表示得知特征 X 的信息而使得类 Y 的信息的不确定性减少的程度。)、信息增益算法(计算信息增益,选取信息增益最大的特征。)、信息增益比。
决策树的剪枝:为了解决过拟合。剪枝算法(剪去某一子结点,如果生成的新的整体树的损失函数值小于原树,则进行剪枝,直到不能继续为止。具体可以由动态规划实现。)

决策树的学习最耗时的一个步骤:就是对特征的值进行排序(因为要确定最佳分割点)
CART 算法(也就是分类回归树):既可以用于分类也可以用于回归。使用基尼指数和平方误差;
IC3算法采用信息增益;
C4.5算法为了克服信息增益中容易偏向取值较多的特征而采用信息增益比;
基尼指数:其值越大,样本集合的不确定性也就越大。

优点:可用于回归也可以用于分类,天然支持多分类,模型具有可读性,分类速度快。理论上可以对任意复杂度的数据进行拟合,因此,只要深度够深,可以将所有样本进行正确分类。(但是这样会出现维数灾难)

bagging和boosting的比较
  • bagging:三个臭皮匠的思想(互不影响)。(随机森林)每次训练样本的一部分。预测函数可以并行生成减少variance
  • boosting:通过改变训练样本的权重 ( 概率分布 ),学习多个弱分类器 ( 基本分类器),并将这些分类器线性组合来构成一个强分类器提高分类的性能。(adaboost),每次训练所有样本。预测函数只能顺序生成,因为这一次的训练受上一次的预测结果影响。减少bias

1)样本选择上:

  • Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
  • Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

  • Bagging:使用均匀取样,每个样例的权重相等
  • Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大

3)预测函数:

  • Bagging:所有预测函数的权重相等
  • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重

4)并行计算:

  • Bagging:各个预测函数可以并行生成
  • Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

5)总结

这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

  • 1)Bagging + 决策树 = 随机森林
  • 2)AdaBoost + 决策树 = 提升树
  • 3)Gradient Boosting + 决策树 = GBDT

?六、random forest(属于bagging)

原理:由多棵决策树组合,这些决策树由对训练样本随机抽样构成的样本集进行训练得到,对特征向量的分量也是随机抽样。
优点:因为随机性的存在,在一定程度上可以消除过拟合。运算量小、实现简单。
缺点:决策树的个数需要人工选择,可解释性不如决策树。

?七、adaboost(属于boosting)

原理:在训练过程中,给予错分样本更大的权值用于训练,得到一堆弱分类器组合成强分类器。并且在投票的时候,给与准确率高的分类器更大的权值。
优点:相对于随机森林而言,决策树规模更小、不需要对样本和特征进行随机采样。
缺点:标准的adaboost不能直接支持多分类与回归,需要用改进方法。

?八、GBDT(属于boosting)

原理:GBDT中的所有决策树都是回归树,调整后可用于分类(设定阈值,大于阈值为正例,小于阈值为反例)。主要由三个概念组成:Regression Decistion Tree、Gradient Boosting与Shrinkage

  • Regression Decistion Tree:
  • Gradient Boosting:这就是GBDT的核心所在:每一棵树所学习的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量(让损失函数沿着梯度方向的下降)。
  • Shrinkage:它的基本思想就是:每次走一小步逐渐逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合

对这个算法,一方面我们可以从残差的角度来理解,每一棵回归树都是在学习之前的树的残差;另一方面也可以从梯度的角度掌握算法,即每一棵回归树通过梯度下降法学习之前的树的梯度下降值。前者使用残差(残差是全局最优值),后者使用梯度(梯度是局部最优方向),简单一点来讲就是前者每一步都在试图向最终结果的方向优化,后者则每一步试图让当前结果更好一点。

优点

  • 预测精度高
  • 适合低维数据
  • 能处理非线性数据

缺点

  • 并行麻烦(因为上下两棵树有联系)
  • 如果数据维度较高时会加大算法的计算复杂度

所以相对于adaboost来说,最大的区别就是GBDT学习的是残差,目标让其最小化。

?九、XGboost(属于boosting)

原理:XGBoost是Gradient Boosting的高效实现。这个算法更好吧。

?十、lightGBM

原理:也是优化问题,使用histogram算法等。

?十一、逻辑回归(LR)与线性回归

逻辑回归(LR)原理:逻辑回归是一种用于二分类问题的分类算法。它是用一条直线,将实例分类。
线性回归原理:已知一些点的X,Y坐标,统计条件X与结果Y的关系,画一条直线,让直线离所有点都尽量地近(距离之和最小),用直线抽象地表达这些点,然后对新的X预测新的Y。具体实现一般使用最小二乘法。线性回归的优点是理解和计算都相对简单,缺点是无法解决非线性问题。

逻辑回归可以进行多分类操作,但由逻辑回归算法本身性质决定其更常用于二分类。线性回归可以预测连续值,但是不能解决分类问题,我们需要根据预测的结果判定其属于正类还是负类。所以逻辑回归就是将线性回归的(−∞,+∞)结果,通过sigmoid函数映射到(0,1)之间。

线性回归与逻辑回归(LR)的关系:
线性回归逻辑回归
目的预测分类
函数拟合函数预测函数
参数计算方式最小二乘最大似然估计
LR和SVM的关系:

相同点

  • 1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
  • 2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。

区别

  • 1、LR是参数模型,SVM是非参数模型。
  • 2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hingeloss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重
  • 3、SVM的处理方法是只考虑supportvectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
  • 4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
  • 5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了

?十二、聚类算法:参考

原理:给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性或特征,而不同组中的数据点应该具有高度不同的属性或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。

  • K-Means(K均值)聚类:参见三
  • 均值偏移(Mean shift)聚类算法:基于滑动窗口(sliding-window)的算法,它试图找到密集的数据点。而且,它还是一种基于中心的算法,它的目标是定位每一组群/类的中心点,通过更新中心点的候选点来实现滑动窗口中的点的平均值。相对于K-Means(K均值)聚类的优点:不需要选择聚类的数量。缺点是选择窗口大小/半径r是非常关键的。
  • DBSCAN聚类算法:类似于均值转移聚类算法。优点:它不需要一个预设定的聚类数量,它还将异常值识别为噪声,它还能很好地找到任意大小和任意形状的聚类,缺点是,当聚类具有不同的密度时,它的性能不像其他聚类算法那样好。
  • (EM)聚类:为了找到每个聚类的高斯分布的参数(例如平均值和标准差),使用高斯混合模型实现最大化聚类。

?十三、

?十四、

【分割线】
?1、XGboost和GDBT
  • GDBT在优化时只用到一阶导数信息,而XGBoost用的时泰勒展开,同时用到了一阶和二阶信息,并且可以自定义代价函数。损失函数更精确。
  • XGboost用到了正则项,为了防止过拟合。
  • XGboost每次迭代后都将叶子结点的权重乘上一个系数,削弱每棵树的影响。
  • XGboost列抽样。
  • XGboost在训练前对数据进行排序,保存为 block 结构,并行地对各个特征进行增益计算。
?2、数据不平衡问题如何解决

训练集层面:其一、训练集重采样 (re-sampling)方法(增加稀有类训练样本数的上采样 (up-sampling)和减少大类样本数的下采样(down-samplings)使不平衡的样本分布变得比较平衡)。其二、训练集划分方法(大类样本划分为小样本,与稀少样本组合训练,单独训练成多个分类器,最后结合多个这样的分类器)
学习算法层面:分类器集成(boost等) 、代价敏感学习(也就是权值如何分配的问题)和特征选择方法(样本不平衡、特征也会可能不平衡)。

?3、KNN 复杂度高,怎么解决?
  • K值较小,则模型复杂度较高,容易发生过拟合,学习的估计误差会增大预测结果对近邻的实例点非常敏感
  • K值较大可以减少学习的估计误差,但是学习的近似误差会增大,与输入实例较远的训练实例也会对预测起作用,使预测发生错误,k值增大模型的复杂度会下降
  • 在应用中,k值一般取一个比较小的值,通常采用交叉验证法来来选取最优的K值
?4、LR和SVM的异同点
相同点:
  • LR和SVM都是分类算法
  • 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
  • LR和SVM都是监督学习算法
  • LR和SVM都是判别模型
  • LR和SVM在学术界和工业界都广为人知并且应用广泛
不同点:
  • 本质上是其loss function不同,LR基于概率理论,SVM基于几何间隔最大化原理
  • 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)
  • 在解决非线性问题时,SVM采用核函数的机制,而LR通常不采用核函数的方法(每个点都参与计算,计算量太大)
  • ​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响
  • SVM的损失函数就自带正则,这就是为什么SVM是结构风险最小化算法(所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项)的原因!!而LR必须另外在损失函数上添加正则项
?5、机器学习的分类

按照输入的数据是否已被标定特定的标签将机器学习分为以下三类:
有监督学习:打标签。
无监督学习:无标签。包括聚类和强化。
半监督学习:一部分打标签,大部分不打。

?6、分类与回归

分类:预测房价等问题:线性回归(linear regression)、决策树(decision tree)、随机森林(random forest)、梯度提升决策树(gradient boosting tree)、神经网络(cnn)等。
回归:支付宝大盘积分预测“涨”还是“跌”的问题:逻辑回归(logistics regression)、决策树(decision tree)、随机森林(random forest)、梯度提升决策树(gradient boosting tree)、核函数支持向量机(kernel SVM)、朴素贝叶斯(naive bayes)、线性SVM、神经网络(CNN)等。

?7、经验风险最小化和结构风险最小化的区别

置信风险: 分类器对未知样本进行分类,得到的误差;*(测试集误差)
经验风险: 训练好的分类器,对训练样本重新分类得到的误差,即样本误差;(训练集误差)
结构风险置信风险 + 经验风险
VC维: 将N个点进行分类,如分成两类,那么可以有2^N 种分法, 即可以理解成有2^N个学习问题。 若存在一个假设H函数,能准确无误地将2^N种问题进行分类。那么这些点的数量N,就是H函数的VC维。(VC维:N)
VC置信范围(VC confidence):学习机器的VC维与训练样本数有关。 VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大)

经验风险最小化

  • 样本误差最小化;

结构风险最小化:(SVM)

  • 就是在保证分类精度(经验风险)的同时降低学习机器的 VC 维,可以使学习机器在整个样本集上的期望风险得到控制。
  • 传统机器学习方法中普遍采用的经验风险最小化原则在样本数目有限时是不合理的,因此,需要同时最小化经验风险和置信范围
  • 机器学习过程不但要使经验风险最小,还要使VC维尽量小以缩小置信范围,才能取得较小的实际风险,即对未来样本有较好的推广性。
  • 统计学习理论提出了一种新的策略,即把函数集构造为一个函数子集序列,使各个子集按照VC维的大小排列;在每个子集中寻找最小经验风险,在子集间折衷考虑经验风险和置信范围,取得实际风险的最小。这种思想称作结构风险最小化(Structural Risk Minimization),即SRM准则。
?8、机器学习归一化问题?
(1)、哪些机器学习不需要归一化及其原因?
  • 机器学习中树形结构的不需要归一化,因为它们不关心变量的值,而是关心变量分布和变量之间的条件概率,如决策树,随机森林,对于树形结构,它的数值缩放不影响分裂点的位置,对树模型的结构不造成影响。树模型的构造是通过寻找最优分裂点构成的,而且树模型不能进行梯度下降,因为树模型是阶跃的,阶跃是不可导的,并且求导没意义,也不需要归一化。
(2)、哪些机器学习需要归一化及其原因?
  • 机器学习中需要归一化的算法有SVM,逻辑回归,神经网络,KNN,线性回归;对于这些需要归一化的模型,主要是因为特征值相差很大时,运用梯度下降,损失等高线是椭圆形,需要进行多次迭代才能达到最优点,如果进行归一化了,那么等高线就是圆形的,促使SGD往原点迭代,从而导致需要迭代次数较少
(3)、归一化的方法?
  • 线性函数归一化:对原始数据进行线性变换,使结构映射到0,1范围内,归一化的公式是,Xnorm=X-Xmin/(Xmax-Xmin)
  • 0均值归一化:原始数据映射到均值为0,标准差为1的分布上,假设 均值为u,标准差为r,归一化的公式就是(x-u)/r
  • 对数函数转换:y=log10(x)
  • 反余切函数转换:y=arctan(x)*2/pi
(4)、归一化的目的?
  • 加快梯度下降求解最优解的速度
  • 归一化有可能提高精度
(5)、标准化和归一化的区别
  • 标准化:是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下(经过处理后的数据均值为0,标准差为1,输出范围是负无穷到正无穷)。标准化在于提高迭代速度,降低不同维度之间影响权重不一致的问题。(适合传统精确小数据场景。比如在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候。)
  • 归一化:依据特征矩阵的行处理数据,目的在于样本向量点乘运算或其他核函数计算相似性时,拥有统一的标准(把数据映射到[0,1]之间),也就是说转化为单位向量。(适合现代嘈杂大数据场景。在不涉及距离度量、协方差计算、数据不符合正太分布的时候,比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围)
?9、待续……
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值