机器学习笔试面试超详细总结(四)

文章目录

      • 151、Ridge回归、Lasso回归(坐标下降法求解)
      • 152、电影推荐系统是以下哪些的应用实例
      • 153、决策树是否可以用来聚类——可以
      • 154、什么方法最适合于在n维空间做异常点检测
      • 155、逻辑回归和多元回归分析的不同
      • 156、k折交叉验证中k的选择
      • 157、回归模型存在多重共线性,在不损失过多信息的情况下,可以进行什么操作
      • 158、评估模型之后,得出模型存在偏差,如何解决
      • 159、一个SVM存在欠拟合问题,如何提高模型性能
      • 159、模型对数据不平衡问题训练准确率很高,则要重新建一个模型
      • 160、反向传播思想
      • 162、无监督逐层训练
      • 163、DNN
      • 164、面试篇:
      • 165、KNN进行图像分类
      • 167、岭回归和Lasso回归和正则化
      • 168、归一化方法
      • 169、标准化
      • 170、欠拟合和过拟合详细解释
      • 171、集成学习
      • 172、SVM核函数的选择
      • 173、MAE和MSE的区别
      • 174、机器学习经典算法网上总结
      • 175、等频划分和等距划分
      • 176、截断均值
      • 177、机器学习算法链接
      • 178、面试问题链接
      • 179、softmax激活函数和sigmoid的联系

151、Ridge回归、Lasso回归(坐标下降法求解)

1. Ridge回归(岭回归)

可以看成是对最小二乘法的一种补充,岭回归通过对系数的大小施加惩罚来解决普通最小二乘法的一些问题。 它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和一个调节线性回归项和正则化项权重的系数α 。损失函数表达式如下:

这里写图片描述

其中α 为常数系数,需要进行调优。$||θ|| _2 $为L2范数。

Ridge回归的解法和一般线性回归大同小异。如果采用梯度下降法,则每一轮θ 迭代的表达式是:

这里写图片描述

其中β 为步长。 如果用最小二乘法,则θ 的结果是:

这里写图片描述

其中E为单位矩阵。
  
Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归模型变量多的缺点呢?有,这就是下面说的Lasso回归。

示例1:

假设用一个复杂回归模型拟合一个数据集,使用带固定参数lambda的Ridge回归来减小它的复杂度,下列哪项描述了偏差和方差与lambda的关系?

解析:

  • 对于非常大的lambda,偏差很大,方差很小;

  • Lambda很大表示模型没有那么复杂,这种情况下偏差大,方差小

  • Lambda很小表示模型复杂,这种情况下偏差小,方差大,模型会过拟合数据

  • lambda为0时,模型作用类似于线性回归模型,得到了最小的最小二乘解

  • 当lambda趋向无穷,会得到非常小,趋近0的相关系数

2. Lasso回归

Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下:
这里写图片描述

其中n为样本个数,α 为常数系数,需要进行调优。||θ|| 1 为L1范数。

Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。

但是Lasso回归有一个很大的问题,导致我们需要把它单独拎出来讲,就是它的损失函数不是连续可导的,由于L1范数用的是绝对值之和,导致损失函数有不可导的点。也就是说,我们的最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。那我们怎么才能求有这个L1范数的损失函数极小值呢?

Lasso不允许闭式解,L1-penalty使解为非线性的,所以需要近似解。

用坐标轴下降法求解Lasso回归:

求解步骤:

1.给定初始点(x 1 ,x 2 ,…,x n x1,x2,…,xn)

2.固定除xi以外其他维度的点,以x i 为自变量获取最小值

3.换个维度,重复2

机器学习笔试面试超详细总结(四)_第1张图片

可以看出,坐标下降法在每次迭代中在当前点处沿一个坐标方向进行一维搜索,固定其他的坐标方向,找到一个函数的局部极小值。

坐标下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度迭代。

gradient descent 方法是利用目标函数的导数(梯度)来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而coordinate descent方法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值,两者都是迭代方法,且每一轮迭代,都需要O(mn)的计算量(m为样本数,n为系数向量的维度)。

152、电影推荐系统是以下哪些的应用实例

1 分类 (√)
2 聚类 (√)
3 强化学习 (√)
4 回归 (×)

解析:

一般来说,电影推荐系统会基于用户过往的活动和资料,将用户聚集在有限数量的相似组中。然后,从根本上来说,对同一集群的用户进行相似的推荐。

在某些情况下,电影推荐系统也可以归为分类问题,将最适当的某类电影分配给特定用户组的用户。与此同时,电影推荐系统也可以视为增强学习问题,即通过先前的推荐来改进以后的电影推荐。

153、决策树是否可以用来聚类——可以

决策树还可以用在数据中的聚类分析,但是聚类常常生成自然集群,并且不依赖于任何目标函数。

154、什么方法最适合于在n维空间做异常点检测

马氏距离

马氏距离是是一种有效的计算两个未知样本集的相似度的多元计量方法,以卡方分布为基础,表示数据的协方差距离。

与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是关联的)。因此马氏距离常用于多元异常值检测。

155、逻辑回归和多元回归分析的不同

A. logistic回归预测某事件发生的概率
B. logistic回归有较高的拟合效果
C. logistic回归回归系数的评估

解析:

逻辑回归是用于分类问题,我们能计算出一个事件/样本的概率;

一般来说,逻辑回归对测试数据有着较好的拟合效果;

建立逻辑回归模型后,我们可以观察回归系数类标签(正类和负类)与独立变量间的关系。

156、k折交叉验证中k的选择

  • 较大的K并不总是好的,选择较大的K可能需要较长的时间来评估你的结果

  • 相对于期望误差来说,选择较大的K会导致低偏差(因为训练folds会变得与整个数据集相似)

  • 在交叉验证中通过最小化方差法来选择K值

解析:

较大的K意味着更小的偏差(因为训练folds的大小接近整个dataset)和更多的运行时间(极限情况是:留一交叉验证)。当选取K值的时候,我们需要考虑到k-folds 准确度的方差。

157、回归模型存在多重共线性,在不损失过多信息的情况下,可以进行什么操作

  • 移除共线的两个变量其中一个

  • 我们可以计算方差膨胀因子(variance inflation factor)来检查存在的多重共线性并采取相应的措施。

为了检查多重共线性,可以创建相关系数矩阵来辨别和移除相关系数大于75%的变量;

也可以使用VIF的方法来检查当前存在的共线变量,VIF<=4表明没有多种共线,VIF>=10表明有着严重的多重共线性。

最后,也可以使用公差(tolerance)作为评估指标。

  • 移除相关变量可能会导致信息的丢失,为了保留这些变量,我们可以使用岭回归(ridge)或lasso等回归方法对模型进行惩罚

158、评估模型之后,得出模型存在偏差,如何解决

向模型中增加更多的特征

高偏差意味这模型不够复杂(欠拟合),为了模型更加的强大,我们需要向特征空间中增加特征。增加样本能够降低方差。

159、一个SVM存在欠拟合问题,如何提高模型性能

增大惩罚参数C

C >0称为惩罚参数,是调和二者的系数,C值大时对误差分类的惩罚增大,当C越大,趋近无穷的时候,表示不允许分类误差的存在,margin越小,容易过拟合。

C值小时对误差分类的惩罚减小,当C趋于0时,表示我们不再关注分类是否正确,只要求margin越大,容易欠拟合。

159、模型对数据不平衡问题训练准确率很高,则要重新建一个模型

点击率的预测是一个数据比例不平衡问题(比如训练集中样本呈阴性的比例为99%,阳性的比例是1%),如果我们用这种数据建立模型并使得训练集的准确率高达99%。我们可以得出结论是:模型不好,我们应建一个更好的模型

解析:

对于失衡数据,模型的准确率不能作为衡量模型效果的标准。因为我们需要探索的是少数1%的数据,为更好的评估模型效果,可以用灵敏度、特异度、F measure来判断,如果样本数少的类别表现非常弱,我们会采取更多措施。

160、反向传播思想

计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。

(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。

162、无监督逐层训练

预训练:每次训练一层隐结点。训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入。在预训练结束后,再对整个网络进行微调训练。

163、DNN

指深度神经网络,与RNN循环神经网络、CNN卷积神经网络的区别就是,DNN特指全连接的神经元结构,并不包含卷积单元或时间上的关联。

一、DBN:(预训练+微调)

**思想:**整个网络看成是多个RBM的堆叠,在使用无监督逐层训练时,首先训练第一层,然后将第一层预训练好的隐结点视为第二层的输入节点,对第二层进行预训练,各层预训练完成后,再用BP算法对整个网络进行训练。

**整体解释:**预训练+微调 的做法可视为将大量参数分组,对每组先找到局部看起来比较好的位置,然后再基于这些局部较优的结果联合起来进行全局寻优。

**好处:**利用了模型大量参数所提供的自由度,有效的节省了训练开销。

**补充:**是一个概率生成模型,与传统的判别神经网络不同的是,生成模型建立了观察数据和标签之间的联合分布,而判别模型只评估了条件概率。

**DBN遇到的问题:**需要为训练提供一个有标签的样本集;学习过程较慢;不适当的参数选择导致学习收敛于局部最优解。

二、CNN:

局部感知+权共享机制:让一组神经元使用相同的连接权

**提出:**全连接的结构下会引起参数数量的膨胀,容易过拟合且局部最优。图像中有固有的局部模式可以利用,所以,提出了CNN,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内都是共享的,图像通过卷积操作后仍然保留原来的位置关系。

复合多个“卷积层”和“采样层”对输入信号进行加工,然后再连接层实现与输出目标之间的映射。

**多层的目的:**一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。

CNN两大神器:

**1、局部感知:**一般认为图像的空间联系是局部的像素联系比较密切,而距离较远的像素相关性较弱,因此,每个神经元没必要对全局图像进行感知,只要对局部进行感知,然后在更高层将局部的信息综合起来得到全局信息。

利用卷积层实现:(特征映射,每个特征映射是一个神经元阵列):从上一层通过局部卷积滤波器提取局部特征。卷积层紧跟着一个用来求局部平均与二次提取的计算层,这种二次特征提取结构减少了特征分辨率。

**2、参数共享:**在局部连接中,每个神经元的参数都是一样的,即:同一个卷积核在图像中都是共享的。(理解:卷积操作实际是在提取一个个局部信息,而局部信息的一些统计特性和其他部分是一样的,也就意味着这部分学到的特征也可以用到另一部分上。所以对图像上的所有位置,都能使用同样的学习特征。)

卷积核共享有个问题:提取特征不充分,可以通过增加多个卷积核来弥补,可以学习多种特征。

**3、采样(池化)层:**在通过卷积得到特征后,希望利用这些特征进行分类。基于局部相关性原理进行亚采样,在减少数据量的同时保留有用信息。

(压缩数据和参数的量,减少过拟合)(max-polling 和average-polling)

可用BP算法训练,训练中,无论是卷积层还是采样层,每一组神经元都是用相同的连接权。

优点:限制了参数的个数并挖掘了局部结构的这个特点,减少了复杂度。

CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;

再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

三、DBN与CNN两者异同:

异:

DBN:全连接,有pre-train过程;
CNN:局部连接,没有预训练过程,但加了卷积。

同:

无论是DBN还是CNN,这种多隐层堆叠,每层对上一层的输出进行处理的机制,可看作是在对输入信号进行逐层加工,从而把初始的、与输出目标之间联系不大的输入表示,转化成与输出目标联系密切的表示。

即:通过多层处理,逐渐将初始的低层特征表示转化成高层的特征表示后,用“简单模型”就可以完成复杂的分类等学习任务。

四、RNN:

提出:

DNN存在一个缺陷:无法对时间序列上的变化进行建模,然而,样本出现的时间顺序对于自然语言处理、语音识别等应用很重要;

RNN解决了样本的处理在各个时刻独立的问题,可以对时间序列上的变化进行建模,深度是时间上的长度。神经元的输出可以在下一个时间戳直接作用到自身。即,某一层某一时刻神经元的输入,除了上一层神经元在该时刻的输出外,还有本身在上一时刻的输出。

缺点:时间轴上的“梯度消失”,为解决这个问题——>长短时记忆单元LSTM:通过门的开关实现时间上记忆功能,防止梯度消失。

五、LSTM:

**核心:**模仿一种细胞状态,类似传送带思想,直接在整个链上运行,只有一些少量的线性交互,信息在上面保持不变。利用一种“门”的结构来去除或增加信息到细胞状态的能力,有三个门。门:让信息选择通过的方法,包括sigmoid神经网络层和一个点乘操作。

**第一步:**忘记门层:决定从细胞状态中丢弃什么信息。读取本层的输入和上一层的输出,输出一个0到1之间的数值给每个细胞状态。
**第二步:**确定什么样的信息被存放在细胞状态中,包含两个部分:1)sigmoid“输入门层”,决定什么值将要更新。2)tanh层,创建一个新的候选值向量。会被加到状态中。
**第三步:**更新细胞状态。基于细胞状态确定输出什么值

164、面试篇:

深度学习整体解释:
1)自下而上的非监督学习
2)自顶向下的监督学习

理解它们各自的参数代表什么,比较好的初始参数,BP的计算,以及常见超参数的调整策略。

如何优化模型 : 加速收敛, 避免overfit, 提升精度 …
– batch size effect;- learning rate effect;- weight initialization effect;- batch normalization
– drop-out;- model average;- fine-tuning;- data augmentation

CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?

几个不相关的问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。

CNN通过:局部感知、权值共享、池化操作、多层次结构抓住了这个共性。局部感知使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度;池化操作和多层次结构一起,实现了数据的降维,将低层次的特征组合成高层次的特征。

什么时候用local-conv?什么时候用全卷积(每一个点用同一个filter)?

当数据集具有全局的局部特征分布时,也就是说局部特征之间有较强的相关性,适合用全卷积。在不同的区域有不同的特征分布时,适合用local-Conv。

什么样的资料不适合用深度学习?

1)数据集太小,因为神经网络有效的关键就是大量的数据,有大量的参数需要训练,少量的数据不能充分训练参数。

2)数据集没有局部相关性。目前深度学习应用的领域主要是图像、语音、自然语言处理,这些领域的共性就是局部相关性。例如:图像中的像素组成物体,语音中的音位组成单词,文本数据中的单词组成句子,而深度学习的本质就是学习局部低层次的特征,然后组合低层次的特征成高层次的特征,得到不同特征之间的空间相关性。

何为共线性, 跟过拟合有啥关联?

共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。

共线性会造成冗余,导致过拟合。

解决方法:排除变量的相关性/加入权重正则。

为什么引入非线性激励函数?

因为如果不用非线性激励函数,每一层都是上一层的线性函数,无论神经网络多少层,输出都是输入的线性组合,与只有一个隐藏层效果一样。相当于多层感知机了。所以引入非线性激励函数,深层网络就变得有意义了,可以逼近任意函数。

什么造成梯度消失?推导?

许多激活函数将输出值挤压在很小的区间内,在激活函数两端较大范围的定义域内梯度为0,导致权重更新的缓慢训练难度增加,造成学习停止。(前面层上的梯度是来自后面的层上项的乘积,当层数过多时,随着乘积的累积,将越来越小。)

CNN常见的问题

1、梯度消失问题:过多的层数会导致梯度消失,解决手段:减少层数;增大学习率;用Relu代替sigmoid。
2、权重衰减:CNN的权重共享相当于自带某种正则项,所以代价函数里可不加正则
3、随机梯度下降的参数选择:
参考:
http://blog.csdn.net/fuwenyan/ … 14371

batch的选择决定了下降的方向:

如果数据集比较小,可以采用全数据集的形式,好处:全数据集确定的方向能够更好的代表样本总体;不同权重的梯度值差别巨大,因此选一个全局的学习率很困难,使用全数据集可以只基于梯度符号并且针对性单独更新各权值。

如果数据集比较大,全数据集不可行,内存限制;

由于各个batch采样的差异性,各次梯度修正值相互抵消,无法修正。另一个极端每次只训练一个样本,batch=1,每次修正方向以各自样本的梯度方向修正,难以达到收敛。

选择适中的batch? 批梯度下降法,

常用的激励函数:
http://blog.csdn.net/u01314674 … 86575

1)sigmoid:将输出实值压缩到0-1之间。 缺点:(输入非常大或非常小的时候)容易梯度消失;sigmoid函数是非0均值的,下一层的神经元将从上一层神经元得到的非0 均值的信号作为输入,再结合w计算梯度,始终都是正的。(可根据batch调节)

2)Tanh:是0均值的。

3)Relu(修正线性单元):好处:收敛快,求梯度简单。具有稀疏特性。
(相比于sigmoid:sigmoid反向传播求误差梯度时,求导计算量很大,而relu求导简单;对于深层网络,sigmoid反向传播时,在sigmoid接近饱和区时,变换太缓慢,导数趋0,从而无法完成深层网络的训练;Relu会使一部分神经元的输出为0,造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题。)

缺点:训练的时候很脆弱,一个非常大的梯度流过一个Relu神经元后,不会对其他数据有激活现象了,设置较小的学习率,这种情况会不那么频繁。

卷积计算层:

参数共享机制、一组固定的权重和不同窗口内数据做内积:卷积

CNN优缺点:

优点:共享卷积核、减少了网络自由参数的个数,对高维数据处理无压力;无需手动选取特征,训练好权重,即得特征。降低神经网络的复杂性。这种网络结构在有监督的方式下学习到了一些良好的性能:对平移、比例缩放、倾斜或其他形式的变形具有高度不变性。

缺点:需要调参,需要大量样本;

神经网络优势:

可以利用神经网络中某一层的输出当做是数据的另一种表达,从而可以将其认为是经过神经网络学习到的特征,基于这一特征,可以进行进一步的相似度比较等操作。

有效的关键是大规模的数据,每个DL都有众多的参数,少量数据无法将参数训练充分。

发展缺陷:

随着网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优,利用有限数据训练的深层网络,性能还不如浅层网络。

随着网络层数增加,梯度消失现象越来越严重,(一般指sigmoid函数,反向传播时,每传递一层,梯度衰减为原来的1/4。层数一多,梯度指数衰减后,底层基本接收不到有效的训练信号。

165、KNN进行图像分类

KNN在解决这个问题的时候,虽然实现起来非常简单,但是有很大的弊端:

  • 分类器必须记住全部的训练数据(因为要遍历找近邻啊!!),而在任何实际的图像训练集上,数据量很可能非常大,那么一次性载入内存,不管是速度还是对硬件的要求,都是一个极大的挑战。

  • 分类的时候要遍历所有的训练图片,这是一个相当相当相当耗时的过程。

167、岭回归和Lasso回归和正则化

机器学习笔试面试超详细总结(四)_第2张图片

机器学习笔试面试超详细总结(四)_第3张图片

机器学习笔试面试超详细总结(四)_第4张图片

机器学习笔试面试超详细总结(四)_第5张图片

168、归一化方法

这里写链接内容

169、标准化

**标准化 standardization :**对列做处理,对价格一列,统计价格的均值和方差,进行变化

这里写图片描述

该种归一化方式要求原始数据的分布可以近似为高斯分布,否标准化的效果会变得很糟糕。它们可以通过现有样本进行估计。在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。

均值为0有什么好处呢?它可以使数据以0为中心左右分布(这不是废话嘛),而数据以0为中心左右分布会带来很多便利。比如在去中心化的数据上做SVD分解等价于在原始数据上做PCA;机器学习中很多函数如Sigmoid、Tanh、Softmax等都以0为中心左右分布(不一定对称)。

**归一化 normalization:**对行做处理,即对整行的x 的平方和相加,开根号,作为分母,再去对数据处理。

这里写图片描述

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。

以上为两种比较普通但是常用的归一化技术,那这两种归一化的应用场景是怎么样的呢?什么时候第一种方法比较好、什么时候第二种方法比较好呢?下面做一个简要的分析概括:

1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

博客描述

170、欠拟合和过拟合详细解释

简单来说,欠拟合是指模型在训练集、验证集和测试集上均表现不佳的情况;过拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差。欠拟合和过拟合一直是机器学习训练中的难题,在进行模型训练的时候往往要对这二者进行权衡,使得模型不仅在训练集上表现良好,在验证集以及测试集上也要有出色的预测能力。下面对解决欠拟合和过拟合的一般方法作一总结,说明大致的处理方向,具体应用还得结合实际的任务、数据和算法模型等。

解决欠拟合(高偏差)的方法:

  1. 模型复杂化

对同一个算法复杂化。例如回归模型添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层数和隐藏单元数等
弃用原来的算法,使用一个更加复杂的算法或模型。例如用神经网络来替代线性回归,用随机森林来代替决策树等

  1. 增加更多的特征,使输入数据具有更强的表达能力

特征挖掘十分重要,尤其是具有强表达能力的特征,往往可以抵过大量的弱表达能力的特征
特征的数量往往并非重点,质量才是,总之强特最重要
能否挖掘出强特,还在于对数据本身以及具体应用场景的深刻理解,往往依赖于经验

  1. 调整参数和超参数

超参数包括:神经网络中的学习率、隐藏层数、隐藏层的单元数,随机森林的树数量,k-means中的cluster数,正则化参数(\lambda)等

  1. 增加训练数据往往没有用

欠拟合本来就是模型的学习能力不足,增加再多的数据给它训练它也没能力学习好

  1. 降低正则化约束

正则化约束是为了防止模型过拟合,如果模型压根不存在过拟合而是欠拟合了,那么就考虑是否降低正则化参数(\lambda)或者直接去除正则化项

解决过拟合(高方差)的方法:

  1. 增加训练数据数

发生过拟合最常见的现象就是数据量太少而模型太复杂
过拟合是由于模型学习到了数据的一些噪声特征导致,增加训练数据的量能够减少噪声的影响,让模型更多地学习数据的一般特征
增加数据量有时可能不是那么容易,需要花费一定的时间和精力去搜集处理数据
利用现有数据进行扩充或许也是一个好办法。例如在图像识别中,如果没有足够的图片训练,可以把已有的图片进行旋转,拉伸,镜像,对称等,这样就可以把数据量扩大好几倍而不需要额外补充数据
注意保证训练数据的分布和测试数据的分布要保持一致,二者要是分布完全不同,那模型预测真可谓是对牛弹琴了

  1. 使用正则化约束

在代价函数后面添加正则化项,可以避免训练出来的参数过大从而使模型过拟合。使用正则化缓解过拟合的手段广泛应用,不论是在线性回归还是在神经网络的梯度下降计算过程中,都应用到了正则化的方法。常用的正则化有(l1)正则和(l2)正则,具体使用哪个视具体情况而定,一般(l2)正则应用比较多

  1. 减少特征数

欠拟合需要增加特征数,那么过拟合自然就要减少特征数。去除那些非共性特征,可以提高模型的泛化能力

  1. 调整参数和超参数

不论什么情况,调参是必须的

  1. 降低模型的复杂度

欠拟合要增加模型的复杂度,那么过拟合正好反过来

  1. 使用Dropout

这一方法只适用于神经网络中,即按一定的比例去除隐藏层的神经单元,使神经网络的结构简单化

  1. 提前结束训练

即early stopping,在模型迭代训练时候记录训练精度(或损失)和验证精度(或损失),倘若模型训练的效果不再提高,比如训练误差一直在降低但是验证误差却不再降低甚至上升,这时候便可以结束模型训练了

171、集成学习

机器学习笔试面试超详细总结(四)_第6张图片

一、 集成学习的分类

机器学习笔试面试超详细总结(四)_第7张图片

1、Bagging

机器学习笔试面试超详细总结(四)_第8张图片
随机采样m个子样本集,每个样本集会重复(有放回),利用T组不同的子集训练T个弱学习器,利用投票的策略,统计哪个票数多,将它分为对应的类别

T个弱学习器之间是否有关?——彼此之间没有关系

机器学习笔试面试超详细总结(四)_第9张图片

2、Boosting

机器学习笔试面试超详细总结(四)_第10张图片

从上到下,从左到右进行

通过模型训练之后,对正负样本进行分类

第一步左下:将一个正的分为负的,两个负的分为了正的

每个样本初始化的时候都会赋予一个权值,将分错的样本的权重增大,分对的额样本的权重进行减小,对权值进行均衡,中上就是权值改变程度

第二步中下:将三个负的分错了

增大这三个负样本的权值

迭代完成直到分类准确

每个学习器都有依赖于上一个学习器的结果进行权重的更新,也是boosting和bagging的最大的不同。

机器学习笔试面试超详细总结(四)_第11张图片

bagging和boosting区别

  • bagging的T个分类器之间无联系,可以以并行的方式同时进行

  • boosting的分类器之间是相关的,迭代完成

3、stacking(堆叠)

机器学习笔试面试超详细总结(四)_第12张图片

根据原始的数据训练m个分类器,未进行抽取,训练都用的是原始的数据集,加上一些新的数据进行预测,最终达到一个较好的分类结果。

二、随机森林(Random Forest)

机器学习笔试面试超详细总结(四)_第13张图片

两个关键词:随机+森林

基学习器:决策树

机器学习笔试面试超详细总结(四)_第14张图片

多个决策树的集合,构成森林。

机器学习笔试面试超详细总结(四)_第15张图片

得到m个模型,进行投票统计,m个模型中投票为第k类的个数最多,则确定为第k类。

二分类问题,每个树都有自己的判断,判断为老鼠的树多于判断为松鼠的树多,则将其分为老鼠。

机器学习笔试面试超详细总结(四)_第16张图片

总结:

机器学习笔试面试超详细总结(四)_第17张图片

机器学习笔试面试超详细总结(四)_第18张图片

三、算法的评价

机器学习笔试面试超详细总结(四)_第19张图片

机器学习笔试面试超详细总结(四)_第20张图片

决策树:准确率分别为0.90/0.72/0.95

随机森林:准确率分别为0.95/0.78/0.97

优点:
机器学习笔试面试超详细总结(四)_第21张图片

缺点:

机器学习笔试面试超详细总结(四)_第22张图片

172、SVM核函数的选择

SVM核函数的选择对于其性能的表现有至关重要的作用,尤其是针对那些线性不可分的数据,因此核函数的选择在SVM算法中就显得至关重要。对于核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到一个高纬的特征空间内使得数据在特征空间内是可分的,我们定义这种映射为$ϕ(x) $,那么我们就可以把求解约束最优化问题变为

这里写图片描述

但是由于从输入空间到特征空间的这种映射会使得维度发生爆炸式的增长,因此上述约束问题中内积$ϕ_i ⋅ϕ_j $
的运算会非常的大以至于无法承受,因此通常我们会构造一个核函数
κ ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) κ(x_i,x_j)=ϕ(x_i)⋅ϕ(x_j) κ(xi,xj)=ϕ(xi)ϕ(xj)
从而避免了在特征空间内的运算,只需要在输入空间内就可以进行特征空间的内积运算。通过上面的描述我们知道要想构造核函数κ ,我们首先要确定输入空间到特征空间的映射,但是如果想要知道输入空间到映射空间的映射,我们需要明确输入空间内数据的分布情况,但大多数情况下,我们并不知道自己所处理的数据的具体分布,故一般很难构造出完全符合输入空间的核函数,因此我们常用如下几种常用的核函数来代替自己构造核函数:

  • 线性核函数
    k ( x , x i ) = x ⋅ x i k(x,x _i )=x⋅x _i k(x,xi)=xxi
    线性核,主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据,其分类效果很理想,因此我们通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再换别的

  • 多项式核函数
    k ( x , x i ) = ( ( x ⋅ x i ) + 1 ) d k(x,x_i)=((x⋅x_i)+1)d k(x,xi)=((xxi)+1)d

多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。

  • 高斯(RBF)核函数

k ( x , x i ) = e x p ( − ∣ ∣ x − x i ∣ ∣ δ 2 ) k(x,xi)=exp(\frac{−||x−x_i||}{δ^2}) k(x,xi)=exp(δ2xxi)
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。

  • sigmoid核函数

k ( x , x i ) = t a n h ( η < x , x i > + θ ) k(x,xi)=tanh(η<x,xi>+θ) k(x,xi)=tanh(η<x,xi>+θ)

采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。

因此,在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:

  • 如果特征的数量大,样本数量较少,则选用LR或者线性核的SVM;

样本少,但是特征数目大,表示特征空间维度很高,一般认为是线性可分的

  • 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;

特征少则疼我特征空间维度较低,可以用高斯核将其映射到高维空间

  • 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

机器学习笔试面试超详细总结(四)_第23张图片

交叉验证:先拿出来小的数据集应用不同的核来验证哪个核比较好,然后再应用在大数据集上去。

173、MAE和MSE的区别

MSE对离群点更敏感,

什么叫做离群点:和整体分布距离较远的点,不过没有绝对的数值定义,是一个概念,没有明确的定义说可以完全去掉离群点,不可能数据很干净,

机器学习笔试面试超详细总结(四)_第24张图片

174、机器学习经典算法网上总结

LR、SVM、决策树等
LR/SVM等
链接3

175、等频划分和等距划分

等频划分:把观察点均分为n等份,每份内包含的观察点数相同

3 5 6 8 9 11 24 46 57 $\implies$3 5 6 / 8 9 11 / 24 46 57

等距/等宽划分:把观察点均匀分成n等份,每份的间距相等。

1 2 3 5 6 11$\implies$1 2 3 5 / 6 11

176、截断均值

指定0和100之间的百分数p,丢弃高端和低端(p/2)%的数据,然后用常规的方法计算均值,所得的结果就是截断均值.

考虑值集{1、2、3、4、5、90},其截断均值(p=20%)是 (3.5)

按照公式,(p/2)%=20%,8*20%=1.6约等于2,那么应该截掉前两个数和后两个数,剩下{3,4},所以截断均值为(3+4)/2=3.5。

177、机器学习算法链接

LR/SVM等

178、面试问题链接

面试问题博客

链接2

连接3

179、softmax激活函数和sigmoid的联系

博客地址

你可能感兴趣的:(机器学习笔试面试总结)