一天1个机器学习知识点(一)

陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步!
每天都在更新中,记得收藏,每天进步一点点!!

一天1个机器学习知识点(一)(决策树,有无监督学习,SVM,梯度下降法,逻辑回归,NB)
一天1个机器学习知识点(二)(KNN,Kmeans,偏差方差,参数非参数模型,生成模型判别模型,正则化,概率,牛顿法,熵)
一天1个机器学习知识点(三)(损失函数,生成模型和判别模型,DBSCAN,OPTICS,准确率,精确率,召回率,ROC等)
一天1个机器学习知识点(四)这部分主要更新集成学习的内容(RF,adaboost,GBDT,XGBoost等)
一天1个机器学习知识点(五)(特征工程相关,PCA,LDA等)

穿越---->深度学习知识点!!

目录

  • 1.决策树
    • 1.1几个问题
      • 1)决策树是干什么用的?
      • 2)学习策略
      • 3)决策树学习步骤
    • 1.2.决策树的原理
    • 1.3.为什么所有决策树都没有定义出损失函数没有求其最小值?
    • 1.4.特征选择
    • 1.5.信息增益
    • 1.6启发函数
      • 1.6.1.ID3算法
      • 1.6.2.C4.5算法
      • 1.6.3.CART算法
      • 1.6.4.不同启发函数的差异
    • 1.7.过拟合的原因及如何防止
    • 1.8.剪枝
      • 1.8.1.预剪枝
      • 1.8.2.后剪枝
    • 1.9.决策树的优点
    • 1.10.决策树的缺点
  • 2.监督学习,无监督学习
    • 2.1监督学习
      • 2.1.1监督学习如何使用聚类的方法?
    • 2.2.无监督学习
      • 2.2.1无监督聚类
      • 2.2.2无监督降维
      • 2.2.3Apriori(关联分析算法),一种无监督学习算法
  • 3.半监督学习
  • 4.SVM
    • 4.1.SVM基本原理
    • 4.2.SVM为什么要转到对偶问题(要自己会推导)
      • 4.2.1转为对偶问题
      • 4.2.2引入对偶问题的目的
    • 4.3.为什么要松弛向量与软间隔最大化
    • 4.4.SVM引入核函数
      • 4.4.1.SVM中什么时候用线性核什么时候用高斯核?
      • 4.4.2SVM核函数的选择
      • 4.4.3.为什么高斯核能够拟合无穷维度?
    • 4.5.SVM做多分类
    • 4.6.SVM在大数据情况下怎么办
    • 4.7.SVM的物理意义
    • 4.8.SVM和局部数据有关还是和全部数据有关?
    • 4.9.支持向量回归(Support Vector Regression,SVR)
    • 4.10.SVM和LR的异同点
  • 5.梯度下降法
    • 5.1.梯度下降公式
    • 5.2.SGD、BGD、Mini-batchGD
      • 5.2.1.小批量梯度下降需要注意什么?
    • 5.3.梯度下降方向一定是速度最快的方向吗?
    • 5.4.改进版梯度下降法Adagrad、RMSprop、Momentum、Adam
      • 5.4.1.Adagrad法
      • 5.4.2:RMSprop法
      • 5.4.3:Momentum(动量)法
      • 5.4.4:Adam(Adaptive moment estimation)法
    • 5.5.梯度下降的算法调优
  • 6.逻辑回归
    • 6.1.基本假设
    • 6.2.损失函数
    • 6.3求解方法
    • 6.4.逻辑回归的目的
    • 6.5.逻辑回归如何让做到二分类
    • 6.6.逻辑回归为什么要使用最大似然函数作为损失函数
    • 6.7.逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?
    • 6.8.为什么我们还是会在训练的过程当中将高度相关的特征去掉?
    • 6.9.逻辑回归的优点
    • 6.10.逻辑回归的缺点
    • 6.11.逻辑回归与线性回归的区别与联系?
  • 7.朴素贝叶斯算法
    • 7.1.NB原理
    • 7.2拉普拉斯平滑
    • 7.3.朴素贝叶斯与LR的区别?
    • 7.4.朴素贝叶斯“朴素”在哪里?
    • 7.5.朴素贝叶斯的优缺点
    • 7.6.为什么引入条件独立假设
    • 7.7.为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?

1.决策树

关于决策树的几个算法看机器学习面试题系列第四章。

1.1几个问题

1)决策树是干什么用的?

一种最基本的分类与回归方法,因为实际应用中基本上全是用来分类,所以重点讨论分类决策树。

2)学习策略

根据损失函数最小化原则建立决策树模型

3)决策树学习步骤

决策树学习通常包括3个步骤:特征选择、决策树生长和决策树的修剪

1.2.决策树的原理

其本质就是一颗树,由结点(node)和有向边(directed edge)组成,结点分为内部结点和叶子结点,内部结点表示一个特征(其实是一个集合,该集合中的样本在该结点的父节点上的属性取值相同,有点绕),叶子结点表示一个类
用决策树进行分类,从根节点开始,对实例的某个特征进行测试(每个结点都会内部维护一个特征的字段),根据测试结果,将实例分配到其子节点;此时,每一个子节点对应着该特征的一个取值,如此递归的对实例进行测试并分配,直到到达叶子结点,最后将实例分到叶子结点代表的类中。

1.3.为什么所有决策树都没有定义出损失函数没有求其最小值?

因为从所有可能的决策树中选取最优决策树,这是一个NP完全问题,很难在多项式时间内求解(或者根本不存在这样的解)
所以现实中决策树学习算法采用启发式方法,近似求解这一最优化问题。所谓的启发式方法就是递归的选择最优特征,并根据该特征对训练数据进行分割。(启发函数见1.6)

1.4.特征选择

这里的特征选择不是传统说的对特征进行过滤,而是说决策树选择什么特征进行分裂。特征选择是决定用哪个特征来划分特征空间 。通常训练数据集的样本会有多个特征,feature1、feature2……feature n,在每一步划分的过程中,各个特征的分类能力是不同的,在划分的时候一般选取分类能力强的特征进行划分训练集

1.5.信息增益

关于信息的相关总结看这里
表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。可以很好的判断各个特征划分数据集的能力。
经验熵或经验熵:也叫香农熵,信息熵其实是信息量的期望。表示随机变量的不确定性。变量不确定性越高,熵越高。
下式中|Ck|表示属于第k类的样本子集个数。

条件熵:在特征A条件下事件D的经验熵。
下式中|Di|表示特征A取第i个值的样本子集个数。|Dik|表示特征A中取第i个值时第k类的样本子集个数。

特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D/A)之差,即 g(D,A)=H(D)-H(D|A)
一天1个机器学习知识点(一)_第1张图片

1.6启发函数

可以看这篇文章补充。
主要是ID3算法,C4.5算法和CART算法,其中ID3算法的评价指标是信息增益最大,C4.5算法的评价指标是信息增益率最大,CART算法的评价指标是基尼系数最小

1.6.1.ID3算法

ID3算法利用信息增益进行特征的选择,信息增益反映的是给定条件后不确定性减少的程度。每一次对决策树进行分叉选取属性的时候,我们会选取信息增益最高的属性来作为分裂属性,只有这样,决策树的不纯度才会降低的越快。

信息增益的理解
对于待划分的数据集D,其 entroy(前)是一定的,但是划分之后的熵 entroy(后)是不定的,entroy(后)越小说明使用此特征划分得到的子集的不确定性越小(也就是纯度越高),因此 entroy(前) - entroy(后)差异越大,说明使用当前特征划分数据集D的话,其纯度上升的更快。而我们在构建最优的决策树的时候总希望能更快速到达纯度更高的集合,这一点可以参考优化算法中的梯度下降算法,每一步沿着负梯度方法最小化损失函数的原因就是负梯度方向是函数值减小最快的方向。同理:在决策树构建的过程中我们总是希望集合往最快到达纯度更高的子集合方向发展,因此我们总是选择使得信息增益最大的特征来划分当前数据集D。
缺点:信息增益偏向取值较多的特征
原因:当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益比较 偏向取值较多的特征。
所以要用到下面的信息增益比。

1.6.2.C4.5算法

C4.5算法与ID3相似,局部进行 了改进,C4.5算法在决策树生成的过程中,用信息增益比来选择特征。
信息增益比:信息增益比 = 惩罚参数 * 信息增益
信息增益比本质: 是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缺点:信息增益比偏向取值较少的特征
原因: 当特征取值较少时HA(D)的值较小,因此其倒数较大,因而信息增益比较大。因而偏向取值较少的特征。
使用信息增益比:基于以上缺点,并不是直接选择信息增益率最大的特征,而是先在候选特征中找出信息增益高于平均水平的特征,然后在这些特征中再选择信息增益率最高的特征

1.6.3.CART算法

定义:基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。
注意: Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率
在这里插入图片描述
说明:

  1. pk表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-pk)

  2. 样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和

  3. 当为二分类是,Gini§ = 2p(1-p)

样本集合D的Gini指数 : 假设集合中有K个类别,则:
在这里插入图片描述
一天1个机器学习知识点(一)_第2张图片

因而对于一个具有多个取值(超过2个)的特征,需要计算以每一个取值作为划分点,对样本D划分之后子集的纯度Gini(D,Ai),(其中Ai 表示特征A的可能取值)
然后从所有的可能划分的Gini(D,Ai)中找出Gini指数最小的划分,这个划分的划分点,便是使用特征A对样本集合D进行划分的最佳划分点。

基尼指描述的是数据的纯度。通过基尼系数来进行特征选择(对于每一个特征A,对于A的每一个取值a,计算数据集中特征A等于a和不等于a的两个数据集的基尼系数,选择基尼系数最小的特征和特征取值)。但与ID3,C4.5不同的是,CART是一颗二叉树,采用二元切割法,每一步都将特征的取值分成两份,分别进行左右子树

缺失值处理:
决策树中针对缺失值,需要解决以下2个问题:
1)如何在属性值缺失的情况下进行划分属性选择?
2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

1.6.4.不同启发函数的差异

  • ID3算法利用信息增益进行特征的选择,信息增益反映的是给定条件后不确定性减少的程度,特征取值越多就以为这确定性更高,所以这种方法存在优先选择取值较多的特征的趋势,泛化性差。
  • C4.5算法利用信息增益比进行特征的选择,一定程度上对取值较多的特征进行惩罚,但存在优先选择取值较少的特征的趋势。
  • ID3只能处理离散型变量,另外两种都可以处理连续性变量。C4.5处理连续变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转为布尔型,从而将连续性变量转换多个取值空间的离散型变脸。CART由于其构建时都会对特征进行二值划分也就是二值切割法,因此可以很好的适用于连续型变量。
  • ID3和C4.5可以在每个节点上产生出多叉分支,且每个特征在层级之间不会复用,而CART每个节点只会产生两个分支因此最后会形成一棵二叉树,且每个特征可以被重复使用
  • ID3和C4.5通过剪枝来权衡树的准确性和泛化能力,CART直接利用全部数据发现所有可能的树结构进行对比
  • ID3和C4.5只能用于分类,CART也可以用于回归(回归树使用最小平方误差准则)

1.7.过拟合的原因及如何防止

对于过拟合现象产生的原因,有以下几个方面,

  • 第一:在决策树构建的过程中,对决策树的生长没有进行合理的限制(剪枝)
  • 第二:在建模过程中使用了较多的输出变量,变量较多也容易产生过拟合;
  • 第三:样本中有一些噪声数据,噪声数据对决策树的构建的干扰很多,没有对噪声数据进行有效的剔除。

对于过拟合现象的预防措施,有以下一些方法,

  • 第一:选择合理的参数进行剪枝,可以分为预剪枝后剪枝,我们一般用后剪枝的方法来做;
  • 第二:K-folds交叉验证,将训练集分为K份,然后进行K次的交叉验证,每次使用K-1份作为训练样本数据集,另外的一份作为测试集合(作者说反了,应该是份作为测试集,其余k-1份作为训练集);
  • 第三:减少特征,计算每一个特征和相应变量的相关性,常见的为皮尔逊相关系数,将相关性较小的变量剔除,当然还有一些其他的方法来进行特征筛选,比如基于决策树的特征筛选,通过正则化的方式来进行特征选取等。

1.8.剪枝

决策树剪枝的基本策略有:预剪枝 和 后剪枝

1.8.1.预剪枝

是指在决策树的生成过程中,对每个结点在划分前后进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶结点
几种方法:

  • 1)当树到达一定深度停止树的生长
  • 2)当到达当前节点的样本数量小于某个阈值
  • 3)计算每次分裂对测试集的准确度的提升,当小于某个阈值时停止生长

优点:不仅降低了过拟合的风险,还显著的减少了决策树训练时间的开销和测试时间的开销

缺点: 有些分支的当前划分不会提升泛化性能、甚至可能导致返回性能的暂时降低,但在其基础上进行的后序划分却又可能导致性能的显著提高。
产生这种问题的原因是,预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。

1.8.2.后剪枝

先从训练集生成一颗完整的决策树,然后自底向上的对非叶子结点考察,若将该结点对应的子树替换成叶子结点能决策树泛化性能的提升,则将该子树替换成叶结点。

优点: 相对于预剪枝来说:后剪枝通常比预剪枝决策树保留了更多的分支。一般情况下后剪枝决策树的欠拟合风险较小,泛化性能往往优于预剪枝决策树。

缺点: 因为是在完全生成决策树的以后,再从低到上的对树中的所有非叶子结点进行逐一考察,因此其训练时间开销比未剪枝和预剪枝决策树大很多。

1.9.决策树的优点

  • 1)决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。
  • 2)对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
  • 3)准确性高: 挖掘出来的分类规则准确性高, 便于理解, 决策树可以清晰的显示哪些字段比较重要, 即可以生成可以理解的规则.
  • 4)适合处理有缺失属性的样本,对缺失值不敏感

1.10.决策树的缺点

  • 1)容易发生过拟合(剪枝 随机森林)
  • 2)分类过程中每一步都依据单一特征,忽视了特征之间的关联性,在处理特征关联性强的数据时表现不好
  • 3)对于样本不均衡的数据集表现不好,欠拟合。在特征选择时ID3算法偏好于选取可取值数目较多的属性,C4.5算法偏向选取可取值数目较少的属性(实际中是在算法中采用启发式原则,先从候选属性中选出信息增益高于平均水平的属性,再从中选择增益率最高的属性

2.监督学习,无监督学习

有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBDT,KNN)
无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)

2.1监督学习

2.1.1监督学习如何使用聚类的方法?

  • 我们可以先创建聚类类别, 然后在每个类别上用监督学习分别进行学习
  • 我们可以使用聚类“类别id”作为一个新的特征项(能够有效的总结数据特征), 然后再用监督学习分别进行学习

2.2.无监督学习

无监督学习最常应用的场景是聚类(clustering)和降维(DimensionReduction)

2.2.1无监督聚类

一天1个机器学习知识点(一)_第3张图片

2.2.2无监督降维

降维就是在保证数据所具有的代表性特征或分布的情况下, 将高维数据转化为低维数据的过程。
PCA,自编码器

2.2.3Apriori(关联分析算法),一种无监督学习算法

一天1个机器学习知识点(一)_第4张图片

3.半监督学习

单独拿出来讲,因为比较特殊。
放几篇文章:
文章1
文章2
文章3
(1)半监督分类 (Semi-Supervised Classification)
在无类标签的样例的帮助下训练有类标 签的样本,获得比只用有类标签的样本训练得到的分类器性能更优的分类器,弥补有类标签的样本不足的缺陷,其中类标签yi取有限离散值
(2)半监督回归(Semi-Supervised Regression)
在无输出的输入的帮助下训练有输出的输入,获得比只用有输出的输入训练得到的回归器性能更好的回归器,其中输出yi 取连续值 yi∈R。
(3)半监督聚类(Semi-Supervised Clustering)
在有类标签的样本的信息帮助下获得比只用无类标 签的样例得到的结果更好的簇,提高聚类方法的精度。
(4)半监督降维(Semi-Supervised Dimensionality Reduction)
在有类标签的样本的信息帮助下找到高维输入数据的低维结构,同时保持原始高维数据和成对约束(Pair-Wise Constraints)的结构不变,即在高维空间中满足正约束(Must-Link Constraints)的样例在低维空间中相距很近,在高维空间中满足负约束(Cannot-Link Constraints)的样例在低维空间中距离很远。
一天1个机器学习知识点(一)_第5张图片

4.SVM

4.1.SVM基本原理

基本思想:SVM的目标在数据特征空间寻找一个最优超平面将数据分成两类,这个最优化超平面使得离其最近的点到其的距离最大化,这些点被称为支持向量。SVM可以用于解决二分类或者多分类问题。

几何间隔:点到超平面的距离。
在这里插入图片描述
注意到几何间隔与||w||是成反比的,因此最大化几何间隔与最小化||w||完全是一回事。而我们常用的方法并不是固定||w||的大小而寻求最大几何间隔,而是固定间隔(例如固定为1),寻找最小的||w||。
目标函数:一个寻优问题最重要的部分是目标函数。例如我们想寻找最小的||w||这件事,就可以用下面的式子表示:

在这里插入图片描述
但实际上对于这个目标,我们常常使用另一个完全等价的目标函数来代替,那就是:
在这里插入图片描述
以下参考文章
一天1个机器学习知识点(一)_第6张图片
根据以上定义,SVM模型的求解最大分割超平面问题可以表示为约束最优化问题。
SVM的约束条件就是所有点到超平面的距离都要大于最小几何间隔
一天1个机器学习知识点(一)_第7张图片
一天1个机器学习知识点(一)_第8张图片

4.2.SVM为什么要转到对偶问题(要自己会推导)

4.2.1转为对偶问题

参考1,参考2
对于拉格朗日乘子,对偶问题,KTT条件参考

上面SVM的目标函数是一个含有不等式约束的凸二次规划问题,我们可以将该凸二次规划问题通过拉格朗日对偶性来解决。

一句话就是通过拉格朗日算子使带约束的优化目标转为不带约束的优化函数,使得W和b的偏导数等于零,带入原来的式子,再通过转成对偶问题。
一天1个机器学习知识点(一)_第9张图片

一天1个机器学习知识点(一)_第10张图片

一天1个机器学习知识点(一)_第11张图片

4.2.2引入对偶问题的目的

目的有两个:

  • 一是方便核函数的引入
  • 二是原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关复杂度降低。由于SVM的变量个数为支持向量的个数,相较于特征位数较少,因此转对偶问题。

4.3.为什么要松弛向量与软间隔最大化

原因:在现实任务中很难找到一个超平面将不同类别的样本完全划分开,即很难找到合适的核函数使得训练样本在特征空间中线性可分。退一步说,即使找到了一个可以使训练集在特征空间中完全分开的核函数,也很难确定这个线性可分的结果是不是由于过拟合导致的。有可能一些离群点或者噪声点影响分界面。

解决方法:允许某些样本不满足约束
一天1个机器学习知识点(一)_第12张图片
解释:引入松弛变量后,就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。C是离群点的权重,值越大说明离群点对目标函数影响越大,这时候间隔就会很小。

4.4.SVM引入核函数

原因:原始空间线性不可分,可以使用一个非线性映射将原始数据x变换到另一个高维特征空间,在这个空间中,样本变得线性可分。

解决方法:常用的一般是径向基RBF函数(线性核,高斯核,拉普拉斯核等)。

优点:避免了高维空间的计算,计算核函数的复杂度和计算原始样本内积的复杂度没有实质性的增加。

一天1个机器学习知识点(一)_第13张图片

4.4.1.SVM中什么时候用线性核什么时候用高斯核?

当数据的特征提取的较好, 所包含的信息量足够大, 很多问题是线性可分的那么可以采用线性核
特征数较少, 样本数适中, 对于时间不敏感,遇到的问题是线性不可分的时候可以使用高斯核映射到一个线性可分的特征空间来达到更好的效果。

4.4.2SVM核函数的选择

当样本的特征很多且维数很高时可考虑用SVM的线性核函数。当样本的数量较多,特征较少时,一般手动进行特征的组合再使用SVM的线性核函数。当样本维度不高且数量较少时, 且不知道该用什么核函数时一般优先使用高斯核函数, 因为高斯核函数为一种局部性较强的核函数, 无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较少的参数。

4.4.3.为什么高斯核能够拟合无穷维度?

因为将泰勒展开式代入高斯核,将会得到一个无穷维度的映射。

4.5.SVM做多分类

参考1
参考2
方法:

  1. 一对多方法:每一次把某个样本定为正样本,其余样本作为负样本。
    优点:每个优化问题规模小,分类器少,分类速度快;
    缺点:因为训练集是1:M,这种情况下存在biased.因而不是很实用。可以在抽取数据集的时候,从完整的负集中再抽取三分之一作为训练负集。
  2. 一对一方法:每次选一个类的样本作正类样本,负类样本则变成只选一个类。
    优点:不会出现分类重叠现象。
    缺点:这种方法虽然好,但是当类别很多的时候,model的个数是n*(n-1)/2,代价还是相当大的。
  3. 层次支持向量机(H-SVMs)。层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止。

4.6.SVM在大数据情况下怎么办

答:
一天1个机器学习知识点(一)_第14张图片

4.7.SVM的物理意义

对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据记性分类。即,不仅将正负实例例点分开,而且对最难分的实例例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例例有很好的分类预测能力

4.8.SVM和局部数据有关还是和全部数据有关?

SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关。

4.9.支持向量回归(Support Vector Regression,SVR)

4.10.SVM和LR的异同点

参考
相同点:

  1. SVM和LR都属于分类算法
  2. 不使用核函数的时候都是线性分类器
  3. 都是监督学习算法
  4. 都是判别模型

不同点:

  1. 最大的区别是损失函数的不同(SVM:最大化支持向量的几何间隔;LR:极大化似然估计)
  2. 考虑数据的不同(SVM:只考虑超平面附近的支持向量;LR:考虑全部数据)
  3. 对于非线性问题(SVM:核函数;LR:不使用核函数)
  4. 数据标准化(SVM:因为要计算距离,所以需要;LR:不需要)
  5. 正则项(SVM:自带正则项;LR:需要另外加正则项),这就是为什么SVM是结构风险最小化算法的原因!所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。

5.梯度下降法

5.1.梯度下降公式

在这里插入图片描述

5.2.SGD、BGD、Mini-batchGD

如果N=1,此时为SGD,计算代价函数梯度的时候只考虑一个样本;
如果N=样本容量,此时为BGD,计算代价函数梯度的时候考虑全部样本;
如果N=m,1Mini-batchGD,计算代价函数梯度的时候考虑一小批样本。

SGD计算根据随机一个样本构造出来的代价函数的梯度,这与计算根据全部样本构造出来的代价函数的梯度会有偏差,也许是一个不好的梯度方向,下降时候并不沿着最优的方向下降,但是优点是可以快速的计算一个近似梯度,因为计算量缩减到原来的1/N。
BGD计算根据全部样本的构造出来的代价函数的梯度,方向肯定是沿着当前最优的下降方向,但是计算代价较高,当数据集较大时,相当耗时
Mini-batchGD是前两者的折中。

5.2.1.小批量梯度下降需要注意什么?

  • 如何选择m?一般m取2的幂次方能充分利用矩阵运算操作
  • 如何挑选m个训练数据?为了避免数据的特定顺序给算法收敛带来影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按照顺序挑选m个训练集数据直至遍历完所有的数据。
  • 如何选学习率α

5.3.梯度下降方向一定是速度最快的方向吗?

梯度下降法并不是下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。

牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到Superlinear的收敛速度。梯度下降类的算法的收敛速度一般是Linear甚至Sublinear的(在某些带复杂约束的问题)。

5.4.改进版梯度下降法Adagrad、RMSprop、Momentum、Adam

一天1个机器学习知识点(一)_第15张图片
有一些自动调学习率的方法。一般来说,随着迭代次数的增加,学习率应该越来越小,因为迭代次数增加后,得到的解应该比较靠近最优解,所以要缩小步长η,那么有什么公式吗?比如:在这里插入图片描述
但是这样做后,所有参数更新时仍都采用同一个学习率,即学习率不能适应所有的参数更新。解决方案是:给不同的参数不同的学习率

5.4.1.Adagrad法

一天1个机器学习知识点(一)_第16张图片
特点:
前期除的那一坨较小的时候, regularizer较大,能够放大梯度
后期除的那一坨较大的时候,regularizer较小,能够约束梯度
适合处理稀疏梯度

缺点:

  • 由公式可以看出,仍依赖于人工设置一个全局学习率
  • 学习率设置过大的话,会使regularizer过于敏感,对梯度的调节太大
  • 中后期,分母上梯度平方的累加将会越来越大,使gradient趋于0,使得训练提前结束

5.4.2:RMSprop法

AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。为了解决这一问题,RMSprop算法对Adagrad算法做了一点小小的修改,RMSprop使用指数衰减只保留过去给定窗口大小的梯度,使其能够在找到凸碗状结构后快速收敛。

假设N元函数f(x),针对一个自变量研究RMSprop梯度下降的迭代过程,
一天1个机器学习知识点(一)_第17张图片
可以看出分母不再是一味的增加,它会重点考虑距离他较近的梯度(指数衰减的效果),也就不会出现Adagrad到后期收敛缓慢的问题。对于adagrad,上式的ρ跟(1-ρ)都是1,也就是不进行衰减。

5.4.3:Momentum(动量)法

如果使用的是没有动量的梯度下降法,则可能会停到第一个次优解(局部最优解)。
假设N元函数f(x),针对一个自变量研究Momentum梯度下降的迭代过程,
一天1个机器学习知识点(一)_第18张图片
v表示动量,初始v=0,α是一个接近于1的数,一般设置为0.9,也就是把之前的动量缩减到0.9倍,η是学习率

5.4.4:Adam(Adaptive moment estimation)法

Adam实际上是把momentum和RMSprop结合起来的一种算法
假设N元函数f(x),针对一个自变量研究Adam梯度下降的迭代过程,一天1个机器学习知识点(一)_第19张图片
下面依次解释这五个式子:
①式中,注意m(n)是反向的动量与梯度的和(而在Momentum中是正向动量与负梯度的和,因此⑤式对应的是减号)
②式中,借鉴的是RMSprop的指数衰减
③和④式目的是纠正偏差
⑤式进行梯度更新

一天1个机器学习知识点(一)_第20张图片
该算法更新梯度的指数移动均值(mt)和平方梯度(vt),而参数 β1、β2 ∈ [0, 1) 控制了这些移动均值(moving average)指数衰减率。移动均值本身使用梯度的一阶矩(均值)和二阶原始矩(有偏方差)进行估计。然而因为这些移动均值初始化为 0 向量,所以矩估计值会偏差向 0,特别是在初始时间步中和衰减率非常小(即β接近于 1)的情况下是这样的。但好消息是,初始化偏差很容易抵消,因此我们可以得到偏差修正(bias-corrected)的估计 mt hat 和 vt hat。

5.5.梯度下降的算法调优

在使用梯度下降时,需要进行调优。哪些地方需要调优呢?

  1. 算法的步长选择(即学习率选择)。步长取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。
  2. 算法参数的初始值选择(即全局最优和局部最优)。初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。
  3. 归一化(将不同特征转换到一样的范围空间)。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化。

6.逻辑回归

参考
用一句话概括:逻辑回归假设数据服从伯努利分布, 通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

这里面其实包含了5个点 1:逻辑回归的假设,2:逻辑回归的损失函数,3:逻辑回归的求解方法,4:逻辑回归的目的,5:逻辑回归如何分类。这些问题是考核你对逻辑回归的基本了解。

6.1.基本假设

在这里插入图片描述
一天1个机器学习知识点(一)_第21张图片

6.2.损失函数

一天1个机器学习知识点(一)_第22张图片
h是σ函数,是0-1的概率值,其中h’=h(1-h),梯度下降法求解的时候会用到

6.3求解方法

逻辑回归的梯度下降法推导过程见这篇文章
一天1个机器学习知识点(一)_第23张图片

6.4.逻辑回归的目的

提高二分类的效率

6.5.逻辑回归如何让做到二分类

逻辑回归作为一个回归(也就是y值是连续的),如何应用到分类上去呢。y值确实是一个连续的变量。逻辑回归的做法是划定一个阈值,y值大于这个阈值的是一类,y值小于这个阈值的是另外一类。阈值具体如何调整根据实际情况选择。一般会选择0.5做为阈值来划分。

6.6.逻辑回归为什么要使用最大似然函数作为损失函数

交叉熵损失函数的好处是可以克服方差代价函数更新权重过慢的问题(针对激活函数是sigmoid的情况)。

原因是其梯度里面不在包含对sigmoid函数的导数。
一天1个机器学习知识点(一)_第24张图片

6.7.逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?

答:如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果
但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一
如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了

6.8.为什么我们还是会在训练的过程当中将高度相关的特征去掉?

去掉高度相关的特征会让模型的可解释性更好
可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

6.9.逻辑回归的优点

答:1.形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
2.模型效果不错。在工程上是可以接受的(作为baseline),如果特征工程做的好,效果不会太差,并且特征工程可以大家并行开发,大大加快开发的速度。
3.训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
4.资源占用小,尤其是内存。因为只需要存储各个维度的特征值
5.方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。

6.10.逻辑回归的缺点

答:1.准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布
2.很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
3.处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题
4.逻辑回归本身无法筛选特征。有时候,我们会用GBDT来筛选特征,然后再上逻辑回归。

6.11.逻辑回归与线性回归的区别与联系?

关系:
可以认为逻辑回归的输入是线性回归的输出,将逻辑斯蒂函数(Sigmoid曲线)作用于线性回归的输出得到输出结果。线性回归y = ax + b, 其中a和b是待求参数;

逻辑回归p = S(ax + b), 其中a和b是待求参数, S是逻辑斯蒂函数,然后根据p与1-p的大小确定输出的值,通常阈值取0.5,若p大于0.5则归为1这类。
线性回归y = ax + b, 其中a和b是待求参数。

区别,即损失函数的区别:
线性回归中使用的是最小化平方误差损失函数,对偏离真实值越远的数据惩罚越严重。这样做会有什么问题呢?假如使用线性回归对{0,1}二分类问题做预测,则一个真值为1的样本,其预测值为50,那么将会对其产生很大的惩罚,这也和实际情况不符合,更大的预测值说明为1的可能性越大,而不应该惩罚的越严重。

逻辑回归使用对数似然函数进行参数估计,使用交叉熵作为损失函数,对预测错误的惩罚是随着输出的增大,逐渐逼近一个常数,这就不存在上述问题了。

7.朴素贝叶斯算法

附上个人写的基于垃圾邮件分类理解NB的文章https://blog.csdn.net/qq_22613769/article/details/100035103

7.1.NB原理

朴素贝叶斯算法是基于①贝叶斯定理,②特征条件独立假设的分类方法。对于给定的待分类项x ,通过学习到的模型计算后验概率分布进行分类,即:在此项出现的条件下各个目标类别出现的概率,将后验概率最大的类作为x 所属的类别。
一天1个机器学习知识点(一)_第25张图片

7.2拉普拉斯平滑

一天1个机器学习知识点(一)_第26张图片

7.3.朴素贝叶斯与LR的区别?

(1)简单来说:

  • 朴素贝叶斯是生成模型,根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),进而求出联合分布概率P(XY),最后利用贝叶斯定理求解P(Y|X), 而LR是判别模型,根据极大化对数似然函数直接求出条件概率P(Y|X);
  • 朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),而LR则对此没有要求;
  • 朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集

(2)进一步说明:前者是生成式模型,后者是判别式模型,二者的区别就是生成式模型与判别式模型的区别。

首先,Navie Bayes通过已知样本求得先验概率P(Y), 及条件概率P(X|Y), 对于给定的实例,计算联合概率,进而求出后验概率。也就是说,它尝试去找到底这个数据是怎么生成的(产生的),然后再进行分类。哪个类别最有可能产生这个信号,就属于那个类别。
优点: 样本容量增加时,收敛更快;隐变量存在时也可适用。
缺点:时间长;需要样本多;浪费计算资源
相比之下,Logistic回归不关心样本中类别的比例及类别下出现特征的概率,它直接给出预测模型的式子。设每个特征都有一个权重,训练样本数据更新权重w,得出最终表达式
优点:直接预测往往准确率更高;简化问题;可以反应数据的分布情况,类别的差异特征;适用于较多类别的识别。
收敛慢;不适用于有隐变量的情况。

7.4.朴素贝叶斯“朴素”在哪里?

简单来说:利用贝叶斯定理求解联合概率P(XY)时,需要计算条件概率P(X|Y)。在计算P(X|Y)时,朴素贝叶斯做了一个很强的条件独立假设(当Y确定时,X的各个分量取值之间相互独立,即各个特征之间相互独立毫无关系可言),即P(X1=x1,X2=x2,…Xj=xj|Y=yk) = P(X1=x1|Y=yk)P(X2=x2|Y=yk)…*P(Xj=xj|Y=yk)。但这个假设在现实生活中很不真实,因此很“朴素”。

7.5.朴素贝叶斯的优缺点

朴素贝叶斯的主要优点有:
1)朴素贝叶斯模型有稳定的分类效率
2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
朴素贝叶斯的主要缺点有:   
1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
4)对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)

7.6.为什么引入条件独立假设

一天1个机器学习知识点(一)_第27张图片

7.7.为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍能取得较好的效果?

人们在使用分类器之前,首先做的第一步(也是最重要的一步)往往是特征选择,这个过程的目的就是为了排除特征之间的共线性、选择相对较为独立的特征;
对于与分类任务来说,只要各类别的条件概率排序正确,无需精准概率值就可以导致正确分类;
如果属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算复杂度的同时不会对性能产生负面影响。

你可能感兴趣的:(机器学习,面试,机器学习,算法,面试)