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

文章目录

101、简述神经网络发展史

  • 1949年Hebb提出了神经心理学学习范式——Hebbian学习理论
  • 1952年,IBM的Arthur Samuel写出了西洋棋程序
  • 1957年,Rosenblatt的感知器算法是第二个有着神经系统科学背景的机器学习模型.
  • 3年之后,Widrow因发明Delta学习规则而载入ML史册,该规则马上就很好的应用到了感知器的训练中
  • 感知器的热度在1969被Minskey一盆冷水泼灭了。他提出了著名的XOR问题,论证了感知器在类似XOR问题的线性不可分数据的无力。
  • 尽管BP的思想在70年代就被Linnainmaa以“自动微分的翻转模式”被提出来,但直到1981年才被Werbos应用到多层感知器(MLP)中,NN新的大繁荣。
  • 1991年的Hochreiter和2001年的Hochreiter的工作,都表明在使用BP算法时,NN单元饱和之后会发生梯度损失。又发生停滞。
  • 时间终于走到了当下,随着计算资源的增长和数据量的增长。一个新的NN领域——深度学习出现了。
  • 简言之,MP模型+sgn—->单层感知机(只能线性)+sgn— Minsky 低谷 —>多层感知机+BP+sigmoid—- (低谷) —>深度学习+pre-training+ReLU/sigmoid

102、数据不平衡问题

  • 采样,对小样本加噪声采样,对大样本进行下采样

  • 数据生成,利用已知样本生成新的样本

  • 进行特殊的加权,如在Adaboost中或者SVM中

  • 采用对不平衡数据集不敏感的算法

  • 改变评价标准:用AUC/ROC来进行评价

  • 采用Bagging/Boosting/ensemble等方法

  • 在设计模型的时候考虑数据的先验分布

103、深度学习常用方法

现在在应用领域应用的做多的是DNN,CNN和RNN。

  • DNN是传统的全连接网络,可以用于广告点击率预估,推荐等。其使用embedding的方式将很多离散的特征编码到神经网络中,可以很大的提升结果。
  • CNN主要用于计算机视觉(Computer Vision)领域,CNN的出现主要解决了DNN在图像领域中参数过多的问题。同时,CNN特有的卷积、池化、batch normalization、Inception、ResNet、DeepNet等一系列的发展也使得在分类、物体检测、人脸识别、图像分割等众多领域有了长足的进步。同时,CNN不仅在图像上应用很多,在自然语言处理上也颇有进展,现在已经有基于CNN的语言模型能够达到比LSTM更好的效果。在最新的AlphaZero中,CNN中的ResNet也是两种基本算法之一。
  • GAN是一种应用在生成模型的训练方法,现在有很多在CV方面的应用,例如图像翻译,图像超清化、图像修复等等。
    RNN主要用于自然语言处理(Natural Language Processing)领域,用于处理序列到序列的问题。普通RNN会遇到梯度爆炸和梯度消失的问题。所以现在在NLP领域,一般会使用LSTM模型。在最近的机器翻译领域,Attention作为一种新的手段,也被引入进来。
  • 除了DNN、RNN和CNN外, 自动编码器(AutoEncoder)、稀疏编码(Sparse Coding)、深度信念网络(DBM)、限制玻尔兹曼机(RBM)也都有相应的研究。

104、深度学习常见问题汇总

  1. 模式识别、机器学习、深度学习的区别与联系

模式识别:过去、程序/机器做智能的事、决策树等
机器学习:热点领域、给数据+学习数据
深度学习:前言领域、强调模型

  1. 早年神经网络被淘汰的原因

耗时、局部最优、竞争对手、over-fitting、参数

  1. 深度学习的实质 及其 与浅层学习的区别

深度学习实质:多隐层+海量数据——>学习有用特征—–>提高分类或预测准确性
区别:(1)DL强调模型深度 (2)DL突出特征学习的重要性:特征变换+非人工

  1. 神经网络的发展(背景之类的)

MP模型+sgn—->单层感知机(只能线性)+sgn— Minsky 低谷 —>多层感知机+BP+sigmoid—- (低谷) —>深度学习+pre-training+ReLU/sigmoid

  1. DL解决过拟合的方法

数据扩容、dropout技术

  1. 介绍dropout技术

修改神经网络本身来避免过拟合、训练网络的一种trike。

步骤:repeat { 随机‘删除’+BP获权值}

为何会避免过拟合:训练多个“半数网络”,随着训练的进行,大部分正确,小部分错误(不影响)

  1. 推导BP算法
    http://blog.csdn.net/hungryof/article/details/50436231

  2. BP算法为什么不能适应于深度学习

BP为传统多层感知机的训练方法,<=5层
问题:(1)梯度越来越稀疏(梯度扩散<—-非凸目标函数) (2)局部最小 (3)一般,有标签

NOTE:解决其中局部最小值的方法:(1)多组不同随机参数,取最好参数 (2)启发式优化算法:模拟退火 或 遗传 (3)随机梯度下降

  1. 深度学习与传统神经网络之间的区别与联系

联系:分层结构

区别:训练机制(初始值)

  1. 介绍DNN(原理和应用)

DNN:深度神经网络,广义上包含CNN,DBN,RNN等
优点:层数多,抽象能力强,模拟更复杂模型
应用:图像处理、语音识别、文本分类。。。

  1. 什么是深度学习、深度学习的训练过程是什么

无监督预训练(Layerwise Pre-Training)+有监督微调(fine-tune)

过程:(1)自下而上非监督学习特征 (2)自顶向下有监督微调

  1. 深度学习常用方法

全连接DNN(相邻层相互连接、层内无连接):

AutoEncoder(尽可能还原输入)、Sparse Coding(在AE上加入L1规范)、RBM(解决概率问题)—–>特征探测器——>栈式叠加 贪心训练

RBM—->DBN

解决全连接DNN的全连接问题—–>CNN

解决全连接DNN的无法对时间序列上变化进行建模的问题—–>RNN—解决时间轴上的梯度消失问题——->LSTM

  1. RBM用途

(1)编码、降维
(2)得到权重矩阵和偏移量,供BP网络初始化训练
(3)可作为生成模型使用
(4)可作为判别模型使用

  1. 介绍DBN
    DBN是一个概率生成模型。
    组成:多个RBM+BP网络
    训练过程:(1)无监督训练每一层RBM网络、特征向量映射到不同特征空间、尽可能保留特征信息(贪心算法) (2)DBN最后一层设置为BP网络,有监督微调
    RBM训练可以看作对一个深层BP网络的网络权值参数的初始化—->克服容易局部最优+训练时间长
    优点:不用人工选取特征
    缺点:(1)有标签样本集 (2)学习过程慢 (3)参数不当可能导致局部最优
    公式推导:
    http://blog.csdn.net/app_12062011/article/details/54313082

  2. 介绍CNN

  • 重点:局部感受域、权值共享
  • 组成:卷基层、子采样层(池化层)
  • 训练过程:不同小随机数初始参数—->repeat{ 前向传播(特征提取层C层—->特征映射层S层) + 后向传播 }
  • 广义上的优点:(1)识别位移、缩放及其他形式扭曲不变性的二维图形 (2)隐式从训练数据中学习特征 (3)同一特征映射面的神经元权值相同—–>课并行学习 (4)局部权值共享—->在语音识别、图像处理方面有优势、更接近实际生物神经网络、降低网络复杂性、避免特征提取和分类过程中的数据重建复杂度
  • 较一般神经网络在图像处理方面的优点:(1)图像和网络拓扑更好吻合 (2)特征提取和模式分类同时进行,并同时在训练中产生 (3)权值共享—–>减少参数、结构简单、适应性更强
  • 应用:语音分析、图像识别等
  • 公式推导 之 inference:
    http://blog.csdn.net/lu597203933/article/details/46575871
    http://blog.csdn.net/zouxy09/article/details/9993371
    公式推导 之 BP:
    http://blog.csdn.net/walegahaha/article/details/51945421
  1. CNN卷基层和pooling层的作用

卷积层:特征提取

子采样层/池化层:缩减输入数据的规模

  1. CNN和DBN有什么区别

CNN是判别模型,DBN基于生成模型

CNN是局部连接,DBN是全连接

  1. 介绍RNN

概念:广义来说RNN是两种人工神经网络的总称:结构递归神经网络(Recursive Neural Network)和循环神经网络/时间递归神经网络(Recurrent Neural Network)。时间递归升降网络的神经元之间连接构成有向图,结构递归神经网络利用相似的神经网络结构递归构造更为复杂的网络结构,两者训练算法不同,但属于同一变体。
一般我们说的RNN是指时间递归神经网络

重点:同一个神经网络单元不停处理不同的输入值,而这些值是它自己产生的

缺点:长时间依赖问题,即时间距离较长时,会出现时间轴上的梯度消失现象,可以形象的理解为,比较容易忘事

应用:应为它老忘事,所以没有改进为LSTM的它并没有什么有价值的应用

  1. 介绍LSTM及其变体

是一种特殊的循环神经网络,具有能够学习的长期依赖能力

重点:cell

组成:Cell(state参数,用来记录),Input Gate, Output Gate, Forget Gate
训练过程:前向传播(Input Gate, Forget Gate, cell, output gate, cell output)+后向传播(cell output, output gates, states, cells, forget gates, input gates)
优点:能够解决长时间依赖问题
应用:自然语言处理、语音识别、手写识别等
推导:打印资料

  1. 深度学习的优化问题,及各种优化算法的区别

经典的:MBGD(小批量梯度算法)

改进梯度算法,使梯度更新更加灵活:Momentum,Nesterov
可以自适应学习率:Adagrad,Adadelta,RMSprop,Adam,Adamax,Nadam

  1. 深度学习在推荐系统上可能有怎样的发挥

推荐系统要解决:预测和推荐。深度学习可以用来做预测,(此处可以撤一点DL做预测的一般过程),YouTube已经开始使用了,他的推荐系统由2个神经网络组成,一个用来生成后选视频列表(协同过滤算法),另一个对输入的视频列表进行打分排名。

  1. 神经网络相比于LR、线性回归的优势
    包含DNN
    不包含DNN,即传统神经网络:特征提取抽象

  2. 梯度消失的原因
    (1)sigmoid求导<=1/4
    参考:http://blog.csdn.net/baidu_29782299/article/details/52742773
    (2)BP?

  3. DNN常用的激活函数有哪些,各有什么特点
    (1)sigmoid:易饱和(梯度消失),非0均值 (2)tanh,改进了sigmoid的第二个缺点,即它是0均值的 (3)ReLU,收敛快(不容易饱和),求梯度简单(没有指数计算,只需要阈值就可以),有稀疏特性。缺点是神经元容易坏死。
    参考:http://f.dataguru.cn/thread-712946-1-1.html

  4. 什么样的资料不适合用深度学习?
    (1)数据量小 (2)没有局部相关性

  5. 什么是共线性,跟过拟合有何关联?

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

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

相关—>冗余——>过拟合

解决:排除相关、加入权重正则

  1. CNN可应用与图像识别、语音识别、Alphago等,这些不相关问题的共性是什么?也就是说CNN为什么可以应用在这几个问题上?CNN又是通过什么手段抓住了这些共性?

共性:都存在局部与整体的关系(单词与句子,一步棋和整个棋局)。(我自己想的(1)可以用CNN,(2)CNN有优势)

CNN通过局部感知、权值共享、池化操作。越来越抽象。

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

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

一般的神经网络是卷积层(CNN)+全连接层(FC),全卷积网络没有全连接层(全连接层一会需要大量的参数,二会引起过拟合),这样的特点是:

  • 输入图片大小无限制

  • 空间信息有丢失

  • 参数更少,表达力更强

  • 不适合分类,适合做数据生成

全卷积网络FCN
卷积神经网络CNN笔记
29. Dropout相当于极端的Bagging,每个模型都在单独的数据上训练,同时,通过和其他模型对应参数的共享,从而实现模型参数的高度正则化。

105、简述神经网络发展史

  • sigmoid会饱和,造成梯度消失。于是有了ReLU。
  • ReLU负半轴是死区,造成梯度变0。于是有了LeakyReLU,PReLU。
  • 强调梯度和权值分布的稳定性,由此有了ELU,以及较新的SELU。
  • 太深了,梯度传不下去,于是有了highway。
  • 干脆连highway的参数都不要,直接变残差,于是有了ResNet。
  • 强行稳定参数的均值和方差,于是有了BatchNorm。
  • 在梯度流中增加噪声,于是有了 Dropout。
  • RNN梯度不稳定,于是加几个通路和门控,于是有了LSTM。
  • LSTM简化一下,有了GRU。
  • GAN的JS散度有问题,会导致梯度消失或无效,于是有了WGAN。
  • WGAN对梯度的clip有问题,于是有了WGAN-GP。

106、常见的分类算法有哪些?

SVM、神经网络、随机森林、逻辑回归、KNN、贝叶斯

107、常见的监督学习算法有哪些? 机器学习 ML基础 易

感知机、svm、人工神经网络、决策树、逻辑回归

  • 线性分类器有三大类:感知器准则函数、SVM、Fisher准则,而贝叶斯分类器不是线性分类器。
  • 感知准则函数 :准则函数以使错分类样本到分界面距离之和最小为原则。其优点是通过错分类样本提供的信息对分类器函数进行修正,这种准则是人工神经元网络多层感知器的基础。
  • 支持向量机 :基本思想是在两类线性可分条件下,所设计的分类器界面使两类之间的间隔为最大,它的基本出发点是使期望泛化风险尽可能小。(使用核函数可解决非线性问题)
  • Fisher 准则 :更广泛的称呼是线性判别分析(LDA),将所有样本投影到一条远点出发的直线,使得同类样本距离尽可能小,不同类样本距离尽可能大,具体为最大化“广义瑞利商”。
  • 根据两类样本一般类内密集,类间分离的特点,寻找线性分类器最佳的法线向量方向,使两类样本在该方向上的投影满足类内尽可能密集,类间尽可能分开。这种度量通过类内离散矩阵 Sw 和类间离散矩阵 Sb 实现。

基于二次准则函数的H-K算法较之于感知器算法的优点是(B D)?

A.计算量小
B.可以判别问题是否线性可分
C.其解完全适用于非线性可分的情况
D.其解的适应性更好

解析:

HK算法思想很朴实,就是在最小均方误差准则下求得权矢量.
他相对于感知器算法的优点在于,他适用于线性可分和非线性可分得情况,对于线性可分的情况,给出最优权矢量,对于非线性可分得情况,能够判别出来,以退出迭代过程.

108、SVM、AdaBoost、Boosting和Bagging

以下说法中正确的是(BD)

A.SVM对噪声(如来自其他分布的噪声样本)鲁棒
B.在AdaBoost算法中,所有被分错的样本的权重更新比例相同
C.Boosting和Bagging都是组合多个分类器投票的方法,二都是根据单个分类器的正确率决定其权重
D.给定n个数据点,如果其中一半用于训练,一般用于测试,则训练误差和测试误差之间的差别会随着n的增加而减少

解析:

A、SVM对噪声(如来自其他分布的噪声样本)鲁棒

SVM本身对噪声具有一定的鲁棒性,但实验证明,是当噪声率低于一定水平的噪声对SVM没有太大影响,但随着噪声率的不断增加,分类器的识别率会降低。

SVM解决的是结构风险最小, 经验风险处理较弱, 所以对数据噪声敏感.

B、在AdaBoost算法中所有被分错的样本的权重更新比例相同

AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被凸显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。以此类推,将所有的弱分类器重叠加起来,得到强分类器。

daBoost算法中, 每个迭代训练一个学习器并按其误分类率得到该学习器的权重alpha, 这个学习器的权重算出两个更新比例去修正全部样本的权重: 正样本是exp(-alpha), 负样本是exp(alpha). 所以所有被分错的样本的权重更新比例相同。

C、Boost和Bagging都是组合多个分类器投票的方法,二者均是根据单个分类器的正确率决定其权重。

bagging的学习器之间无权重不同, 简单取投票结果; Boosting的adaboost根据误分类率决定权重, boosting的gbdt则是固定小权重(也称学习率), 用逼近伪残差函数本身代替权重.

Bagging与Boosting的区别:
取样方式不同。
Bagging采用均匀取样,而Boosting根据错误率取样。
Bagging的各个预测函数没有权重,而Boosting是有权重的。
Bagging的各个预测函数可以并行生成,而Boosing的各个预测函数只能顺序生成。

D、根据中心极限定律, 随着n的增加, 训练误差和测试误差之间的差别必然减少 – 这就是大数据训练的由来

109、神经网络中激活函数的真正意义?一个激活函数需要具有哪些必要的属性?还有哪些属性是好的属性但不必要的?

  1. 非线性:即导数不是常数。这个条件前面很多答主都提到了,是多层神经网络的基础,保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。
  2. 几乎处处可微:可微性保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU,只满足几乎处处可微(即仅在有限个点处不可微)。对于SGD算法来说,由于几乎不可能收敛到梯度接近零的位置,有限的不可微点对于优化结果不会有很大影响[1]。
  3. 计算简单:正如题主所说,非线性函数有很多。极端的说,一个多层神经网络也可以作为一个非线性函数,类似于Network In Network[2]中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。(ReLU也会出现饱和,当输出为负的时候)
  4. 非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是Sigmoid,它的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU[3]和PReLU[4]的提出正是为了解决这一问题。
  5. 单调性(monotonic):即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
  6. 输出范围有限:有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主,如Sigmoid、TanH。但这导致了前面提到的梯度消失问题,而且强行让每一层的输出限制到固定范围会限制其表达能力。因此现在这类函数仅用于某些需要特定输出范围的场合,比如概率输出(此时loss函数中的log操作能够抵消其梯度消失的影响[1])、LSTM里的gate函数。
  7. 接近恒等变换(identity):即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。这个与非线性是有点矛盾的,因此激活函数基本只是部分满足这个条件,比如TanH只在原点附近有线性区(在原点为0且在原点的导数为1),而ReLU只在x>0时为线性。这个性质也让初始化参数范围的推导更为简单[5][4]。额外提一句,这种恒等变换的性质也被其他一些网络结构设计所借鉴,比如CNN中的ResNet[6]和RNN中的LSTM。
  8. 参数少:大部分激活函数都是没有参数的。像PReLU带单个参数会略微增加网络的大小。还有一个例外是Maxout[7],尽管本身没有参数,但在同样输出通道数下k路Maxout需要的输入通道数是其它函数的k倍,这意味着神经元数目也需要变为k倍;但如果不考虑维持输出通道数的情况下,该激活函数又能将参数个数减少为原来的k倍。
  9. 归一化(normalization):这个是最近才出来的概念,对应的激活函数是SELU[8],主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练。在这之前,这种归一化的思想也被用于网络结构的设计,比如Batch Normalization[9]。

110、对数几率回归(logistics regression)和一般回归分析有什么区别

  • A. 对数几率回归是设计用来预测事件可能性的
  • B. 对数几率回归可以用来度量模型拟合程度
  • C. 对数几率回归可以用来估计回归系数

解释:

A: 对数几率回归其实是设计用来解决分类问题的
B: 对数几率回归可以用来检验模型对数据的拟合度
C: 虽然对数几率回归是用来解决分类问题的,但是模型建立好后,就可以根据独立的特征,估计相关的回归系数。就我认为,这只是估计回归系数,不能直接用来做回归模型。

111、优化算法及其优缺点

简要概括:

1)随机梯度下降
优点:可以一定程度上解决局部最优解的问题
缺点:收敛速度较慢

2)批量梯度下降
优点:容易陷入局部最优解
缺点:收敛速度较快

3)mini_batch梯度下降
综合随机梯度下降和批量梯度下降的优缺点,提取的一个中和的方法。

4)牛顿法
牛顿法在迭代的时候,需要计算Hessian矩阵,当维度较高的时候,计算 Hessian矩阵比较困难。

5)拟牛顿法
拟牛顿法是为了改进牛顿法在迭代过程中,计算Hessian矩阵而提取的算法,它采用的方式是通过逼近Hessian的方式来进行求解。

具体分析:

1)从每个batch的数据来区分

  • 梯度下降:每次使用全部数据集进行训练
    优点:得到的是最优解
    缺点:运行速度慢,内存可能不够
  • 随机梯度下降:每次使用一个数据进行训练
    优点:训练速度快,无内存问题
    缺点:容易震荡,可能达不到最优解
  • Mini-batch梯度下降
    优点:训练速度快,无内存问题,震荡较少
    缺点:可能达不到最优解

2)从优化方法上来分:

  • 随机梯度下降(SGD)
    缺点
    选择合适的learning rate比较难
    对于所有的参数使用同样的learning rate
    容易收敛到局部最优
    可能困在saddle point
  • SGD+Momentum
    优点:
    积累动量,加速训练
    局部极值附近震荡时,由于动量,跳出陷阱
    梯度方向发生变化时,动量缓解动荡。
  • Nesterov Mementum
    与Mementum类似,优点:
    避免前进太快
    提高灵敏度
  • AdaGrad
    优点:
    控制学习率,每一个分量有各自不同的学习率
    适合稀疏数据
    缺点
    依赖一个全局学习率
    学习率设置太大,其影响过于敏感
    后期,调整学习率的分母积累的太大,导致学习率很低,提前结束训练。
  • RMSProp
    优点:
    解决了后期提前结束的问题。
    缺点:
    依然依赖全局学习率
  • Adam
    Adagrad和RMSProp的合体
    优点:
    结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
    为不同的参数计算不同的自适应学习率
    也适用于大多非凸优化 - 适用于大数据集和高维空间
  • 牛顿法
    牛顿法在迭代的时候,需要计算Hessian矩阵,当维度较高的时候,计算 Hessian矩阵比较困难
  • 拟牛顿法
    拟牛顿法是为了改进牛顿法在迭代过程中,计算Hessian矩阵而提取的算法,它采用的方式是通过逼近Hessian的方式来进行求解。

112、RF和GBDT的区别和联系

  • 相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。

  • 不同点:

a 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成
b 组成随机森林的树可以并行生成,而GBDT是串行生成
c 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
d 随机森林对异常值不敏感,而GBDT对异常值比较敏感
e 随机森林是减少模型的方差,而GBDT是减少模型的偏差
f 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化

113、序列模式挖掘算法

下面有关序列模式挖掘算法的描述,错误的是?(C)

  • A. AprioriAll算法和GSP算法都属于Apriori类算法,都要产生大量的候选序列
  • B. FreeSpan算法和PrefixSpan算法不生成大量的候选序列以及不需要反复扫描原数据库
  • C. 在时空的执行效率上,FreeSpan比PrefixSpan更优
  • D. 和AprioriAll相比,GSP的执行效率比较高

解析:

  1. Apriori算法 :关联分析原始算法,用于从候选项集中发现频繁项集。两个步骤:进行自连接、进行剪枝。缺点:无时序先后性。
    AprioriAll算法:AprioriAll算法与Apriori算法的执行过程是一样的,不同点在于候选集的产生,需要区分最后两个元素的前后。
    AprioriSome算法:可以看做是AprioriAll算法的改进
    AprioriAll算法和AprioriSome算法的比较:
    (1)AprioriAll用 去计算出所有的候选Ck,而AprioriSome会直接用 去计算所有的候选 ,因为 包含 ,所以AprioriSome会产生比较多的候选。
    (2)虽然AprioriSome跳跃式计算候选,但因为它所产生的候选比较多,可能在回溯阶段前就占满内存。
    (3)如果内存占满了,AprioriSome就会被迫去计算最后一组的候选。
    (4)对于较低的支持度,有较长的大序列,AprioriSome算法要好些。
  2. GPS算法:类Apriori算法。用于从候选项集中发现具有时序先后性的频繁项集。两个步骤:进行自连接、进行剪枝。缺点:每次计算支持度,都需要扫描全部数据集;对序列模式很长的情况,由于其对应的短的序列模式规模太大,算法很难处理。
  3. SPADE算法:改进的GPS算法,规避多次对数据集D进行全表扫描的问题。与GSP算法大体相同,多了一个ID_LIST记录,使得每一次的ID_LIST根据上一次的ID_LIST得到(从而得到支持度)。而ID_LIST的规模是随着剪枝的不断进行而缩小的。所以也就解决了GSP算法多次扫描数据集D问题。
  4. FreeSpan算法:即频繁模式投影的序列模式挖掘。核心思想是分治算法。基本思想为:利用频繁项递归地将序列数据库投影到更小的投影数据库集中,在每个投影数据库中生成子序列片断。这一过程对数据和待检验的频繁模式集进行了分割,并且将每一次检验限制在与其相符合的更小的投影数据库中。
    优点:减少产生候选序列所需的开销。缺点:可能会产生许多投影数据库,开销很大,会产生很多的
  5. PrefixSpan 算法:从FreeSpan中推导演化而来的。收缩速度比FreeSpan还要更快些。

114、BN算法概述

1)为什么BN算法强大:

近年来深度学习取得了惊人的效果,随机梯度下降法成了训练深度网络的主要方法,尽管随机梯度下降法对于深度网络简单高效,但是困难之处在于它需要我们人为地去选择参数,比如学习率、参数初始化、权值衰减系数、Dropout比例等等,这些参数的选择至关重要,以至于调参需要很强大的经验积累并且耗费的时间也很多。

BN算法强大的地方如下:

  • 可以选择较大的学习率,让训练速度很快,以前还需要慢慢调整学习率,甚至在网络训练到一半的时候,还需要经验去调整衰减比例,现在我们可以采用很大的学习率,然后其衰减速度也很大,因为这个算法的收敛很快,该算法就是选择了小的学习率,也会收敛的比以前快很多,因为其具有快速训练收敛的特性。

  • 可以不用理会过拟合中的dropout、L2正则项参数的选择问题,采用BN算法之后,可以移除这两个参数,或者可以选择更小的L2正则约束参数了,因为BN具有提高网络泛化能力的特性;

  • 再也不需要使用局部响应归一化层了,因为BN本身就是一个归一化层

  • 可以把训练数据彻底打乱,防止每批训练的时候某一个样本能够经常被挑选到。

为什么要归一化:

已知在神经网络训练开始之前,都要对数据做一个归一化处理,原因在于神经网络学习过程的本质就是为了学习数据分布,其一,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低,其二,一旦每批训练数据的分布各不相同,那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么需要对数据进行归一化的原因。

对于深度网络的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去,一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直发生变化,那么将会影响网络的训练速度。

2)什么是BN

BN也属于网络的一层,我们已知除了输出层以外,其他层因为低层网络在训练的时候更新了参数,而引起后面层输入数据分布的改变,但是我们可以给每一层输入的时候再加个预处理操作,比如将第二层输出数据归一化到均值为0,方差为1,然后再输入给第三层计算,这样就可以解决“Internal Covariate Shift”的问题了。

事实上,paper的算法本质原理就是这样:在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理,然后再进入网络的下一层。不过文献归一化层,可不像我们想象的那么简单,它是一个可学习、有参数的网络层。

  • Internal Covariate Shift:

最为直观的解释就是当你的训练集的样本分布和测试集的样本分布不一致的时候,你训练得到的模型是无法有很好的泛化 (Generalization) 能力的。

假设x是属于特征空间的某一样本点,y是标签。covariate这个词,其实就是指这里的x,那么covariate shift可以直接根据字面意思去理解:样本点x的变化。

假想你要为一种癌症疾病建立一个分类器,然后你收集了很多病人的材料,然后到学校里面鼓励学生贡献自己的血样作为自己的健康样本。好的,然后开始设计算法训练得到了一个预测准确率非常高的分类模型。但是注意,收集到的样本无法覆盖生活中不同人群,比如学生一般处于10-30岁之间,无酒鬼。为了测试训练得到的分类模型正真的效果,你将模型应用于医院的辅助医疗当中,你会发现到医院来看病的人群和你样本的人群完全不一样,这个就是训练样本的分布和目标样本的分布不一样的很好例子。这种现象在统计学里面也被称作 “Covariate Shift” 。

  • 我们讲的规范一点:

假设q1(x)是测试集中一个样本点的概率密度,q0(x)是训练集中一个样本点的概率密度。最终我们估计一个条件概率密度p(y|x,θ),它由x和一组参数θ={θ1,θ2…θm}所决定。对于一组参数来说,对应loss(θ)函数评估性能的好坏

综上,当我们找出在q0(x)分布上最优的一组θ’时,能否保证q1(x)上测试时也最好呢?

传统机器学习假设训练集和测试集是独立同分布的,即q0(x)=q1(x),所以可以推出最优θ’依然可以保证q1(x)最优。但现实当中这个假设往往不成立,伴随新数据产生,老数据会过时,当q0(x)不再等于q1(x)时,就被称作covariate shift 。

  • 如何解决covariate shift:

以上已经知道一个样本点分别在训练集和测试集上的概率密度q0(x)和q1(x),实际当中的解决方案是附加一个由x决定的权值 w ( x ) = q 1 ( x ) / q 0 ( x ) w(x)=q_1(x)/q_0(x) ,使得在训练过程当中对于q1(x)很大或者q0(x)很小的样本视作“重要”样本,这样的样本是有益于测试集预测的,我们应该尽量把它分类正确。而对于q1(x)很小或者q0(x)很大的样本,它只是被时代遗弃的“老数据”,这些样本对于模型训练的意义也是无关紧要了。

3)数据预处理操作

神经网络输入数据预处理最好的方法就是白化预处理,然而白化的计算量太大了,很不划算,还有就是白化不是处处可微的,所以在深度学习中,很少用到白化。

白化:去除数据冗余信息,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的,白化的目的就是降低输入的冗余性

白化之后的两个特性:① 特征的相关性较低;② 所有特征具有相同的方差,均值和方差归一化

如果数据特征维数较大,要进行PCA,也就是实现白化的第1个要求,是需要计算特征向量的,计算量很大,于是为了简化,作者忽略了第一个要求,仅仅使用下面的公式进行预处理,也就是近似白化预处理:

这里写图片描述
因此后面我们也将用这个公式,对某一个层网络的输入数据做一个归一化处理。需要注意的是,我们训练过程中采用batch 随机梯度下降,上面的E(xk)指的是每一批训练数据神经元xk的平均值;然后分母就是每一批数据神经元xk激活度的一个标准差了。

所谓的pca白化是指对上面的pca的新坐标X’,每一维的特征做一个标准差归一化处理。因为从上面我们看到在新的坐标空间中,(x1,x2)两个坐标轴方向的数据明显标准差不同,因此我们接着要对新的每一维坐标做一个标注差归一化处理:

这里写图片描述

4)BN算法实现

经过前面简单介绍,这个时候可能我们会想当然的以为:好像很简单的样子,不就是在网络中间层数据做一个归一化处理嘛,这么简单的想法,为什么之前没人用呢?然而其实实现起来并不是那么简单的。其实如果是仅仅使用上面的归一化公式,对网络某一层A的输出数据做归一化,然后送入网络下一层B,这样是会影响到本层网络A所学习到的特征的。打个比方,比如我网络中间某一层学习到特征数据本身就分布在S型激活函数的两侧,你强制把它给我归一化处理、标准差也限制在了1,把数据变换成分布于s函数的中间部分,这样就相当于我这一层网络所学习到的特征分布被你搞坏了,这可怎么办?于是文献使出了一招惊天地泣鬼神的招式:变换重构,引入了可学习参数γ、β,这就是算法关键之处:

这里写图片描述

每一个神经元xk都会有一对这样的参数γ、β。这样其实当:

这里写图片描述

是可以恢复出原始的某一层所学到的特征的。因此我们引入了这个可学习重构参数γ、β,让我们的网络可以学习恢复出原始网络所要学习的特征分布。最后Batch Normalization网络层的前向传导过程公式就是:
这里写图片描述

上面的公式中m指的是mini-batch size。

源码实现:

m = K.mean(X, axis=-1, keepdims=True)#计算均值
std = K.std(X, axis=-1, keepdims=True)#计算标准差
X_normed = (X - m) / (std + self.epsilon)#归一化
out = self.gamma * X_normed + self.beta#重构变换

115、什么是特征学习算法

神经网络会将数据转化为更适合解决目标问题的形式,我们把这种过程叫做特征学习。

k近邻、随机森林等都不属于特征学习算法。

116、ReLU替换为线性激活,神经网络还能模拟出同或吗

答案:不能

使用ReLU激活函数的神经网络是能够模拟出同或函数的。
但如果ReLU激活函数被线性函数所替代之后,神经网络将失去模拟非线性函数的能力。

117、dropout不会影响测试过程训练时间

假设我们有一个5层的神经网络,这个神经网络在使用一个4GB显存显卡时需要花费3个小时来完成训练。而在测试过程中,单个数据需要花费2秒的时间。 如果我们现在把架构变换一下,当评分是0.2和0.3时,分别在第2层和第4层添加Dropout,那么新架构的测试所用时间会变为多少?(仍然为2s)

在架构中添加Dropout这一改动仅会影响训练过程,而并不影响测试过程。

dropouth和正则化的关系:

高dropout率(保留一个神经元为激活状态的概率)意味着更多神经元是激活的,所以这亦为之正规化更少。

118、列的哪种方法可以用来降低深度学习模型的过拟合问题

1 增加更多的数据
2 使用数据扩增技术(data augmentation)
3 使用归纳性更好的架构
4 正规化数据
5 降低架构的复杂度

答案:所有的都可以

119、普通反向传播算法和随时间的反向传播算法(BPTT)的区别

解析:与普通反向传播不同的是,BPTT会在每个时间步长内叠加所有对应权重的梯度。

120、RNN中如何处理梯度爆炸

梯度爆炸问题是指在训练深度神经网络的时候,梯度变得过大而损失函数变为无穷。在RNN中,利用梯度裁剪,也就是让权重的梯度更新限制在一个合适的范围。

121、L-BFGS(拟牛顿法)和SGD

SGD:

优点:可收敛于一个极小值点。

缺点:收敛速度慢,在梯度值小时尤为明显。学习率miu需要依据经验赋值。

L-BFGS:

L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。

优点:精度高于梯度法。

缺点:H矩阵计算存储复杂,收敛性没法保证。

拟牛顿法:利用函数一阶导数(梯度)来近似递算和存储和存储二阶导数。

算法在参数的维度比较低(一般指小于10000维)时的效果要比SGD(随机梯度下降)和CG(共轭梯度下降)效果好,特别是带有convolution的模型。

共轭梯度法:

共轭梯度法也是一种近似的二阶方法,只需计算一阶导数,不需计算和存储二阶导数。

而针对高维的参数问题,CG的效果要比另2种好。也就是说一般情况下,SGD的效果要差一些,这种情况在使用GPU加速时情况一样,即在GPU上使用LBFGS和CG时,优化速度明显加快,而SGD算法优化速度提高很小。在单核处理器上,LBFGS的优势主要是利用参数之间的2阶近视特性来加速优化,而CG则得得益于参数之间的共轭信息,需要计算器Hessian矩阵。

场景1: 数据很稀疏
场景2: 神经网络的参数数量较少

上述两个场景下,都是L-BFGS的效果更好。

122、对非连续目标在深度神经网络的优化

拉格朗日松弛Subgradient method

优化算法无法作用于非连续目标。

123、Dropout和Dropconnect

判断:

Dropout对一个神经元随机屏蔽输入权重(×)
Dropconnect对一个神经元随机屏蔽输入和输出权重(×)

在dropout的过程中,神经元被失活,在dropconnect的过程中,失活的是神经元之间的连接。

所以dropout会使输入和输出权重都变为无效,而在dropconnect中,只有其 种会被失活。

124、图片修复的损失函数

图片修复是需要人类专家来进行修复的,这对于修复受损照片和视频非常有帮助。下图是一个图像修复的例子。

这里写图片描述

现在人们在研究如何用深度学习来解决图片修复的问题。对于这个问题,哪种损失函数适用于计算像素区域的修复?

A. 负对数似然度损失函数(Negative-log Likelihood loss)(√)
B. 欧式距离损失函数(Euclidean loss)(√)

125、反向传播算法一开始计算什么内容的梯度,之后将其反向传播?

解析:各个输出的平方差之和

126、Xavier初始化

Xavier初始化是最为常用的神经网络权重初始化方法,下图是初始化的公式。
这里写图片描述

Xavier初始化是用来帮助信号能够在神经网络中传递得更深,下面哪些叙述是对的?(全对)

1 如果权重一开始很小,信号到达最后也会很小(√)
2 如果权重一开始很大,信号到达最后也会很大(√)
3 Xavier初始化是由高斯发布引出的(√)
4 Xavier初始化可以帮助减少梯度弥散问题(√)

对于权值的分布:均值为0,方差为(1 / 输入的个数) 的 均匀分布。如果我们更注重前向传播的话,我们可以选择 fan_in,即正向传播的输入个数;如果更注重后向传播的话,我们选择 fan_out, 因为在反向传播的时候,fan_out就是神经元的输入个数;如果两者都考虑的话,就选 average = (fan_in + fan_out) /2。对于ReLU激活函数来说,XavierFiller初始化也是很适合。关于该初始化方法,具体可以参考文章1文章2,该方法假定激活函数是线性的。

“Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文《Understanding the difficulty of training deep feedforward neural networks》,可惜直到近两年,这个方法才逐渐得到更多人的应用和认可。

文章主要的目标就是使得每一层输出的方差应该尽量相等。

xavier诞生时并没有用relu做例子,但是实际效果中xavier还是和relu很搭配的。xavier是如何完成初始化工作的呢?它的初始化公式如下所示:

为了使得网络中信息更好的流动,每一层输出的方差应该尽量相等,即把参数初始化成下面范围内的均匀分布:

这里写图片描述

127、1x1的卷积核的作用

作用:

  1. 实现跨通道的交互和信息整合
  2. 进行卷积核通道数的降维和升维
  3. 对于单通道feature map 用单核卷积即为乘以一个参数,而一般情况都是多核卷积多通道,实现多个feature map的线性组合。
  4. 可以实现与全连接层等价的效果。如在faster-rcnn中用11m的卷积核卷积n(如512)个特征图的每一个位置(像素点),其实对于每一个位置的1*1卷积本质上都是对该位置上n个通道组成的n维vector的全连接操作。

以googlenet[3]中的inception模块为例,来说明1x1的卷积如何来减少模型参数。

这里写图片描述

左边是naive的inception模块,右边是加入1x1 convolution进行降维的inception。

按照上面的说法,我们的这层的模型参数与输入的特征维数(28x28x192),卷积核大小以及卷积通道数(包括三种卷积核,分别是1x1x64,3x3x128,5x5x32),右图中在3x3,5x5 convolution前新加入的1x1的卷积核为96和16通道的,在max pooling后加入的1x1卷积为32通道。

那么图a该层的参数为(1x1x192x64)+(3x3x192x128)+(5x5x192x32)

图b该层的参数为(1x1x192x64)+(1x1x192x96)+(1x1x192x16)+(3x3x96x128)+(5x5x16x32)+(1x1x192x32).

比较可知,模型参数减少了约1/3。

128、简单MLP隐藏层参数矩阵大小

在一个简单的MLP模型中,输入层有8个神经元,隐藏层有5个神经元,输出层有1个神经元。隐藏输出层和输入隐藏层之间的权重矩阵的大小是多少?

答案:[5×1],[8×5]

解析:任何层1和层2之间的权重的大小由[层1中的节点X 2层中的节点]

129、在输出层不能使用以下哪种激活函数来分类图像

A. sigmoid
B. Tanh
C. ReLU(×)
D. If(x> 5,1,0)

ReLU在0到无限的范围内提供连续输出。但是在输出层中,我们需要一个有限范围的值。

130、对于二元分类问题,架构的选择

下列两个架构都可以

这里写图片描述
这里写图片描述

我们可以使用一个神经元作为二值分类问题的输出或两个单独的神经元。

131、使用深度学习进行情感分类问题是多对一的问题

这是因为从一系列单词中,你必须预测情绪是积极的还是消极的。

132、CNN中,最大池不是总是能减少参数

如果我们将池大小的最大池层设置为1,则参数将保持不变。

133、多义现象可以被定义为在文本对象中一个单词或短语的多种含义共存,用什么方法可以解决。

CNN 是文本分类问题中比较受欢迎的选择,因为它们把上下文的文本当作特征来考虑,这样可以解决多义问题。

134、R-square

利用数据拟合一个模型,模型肯定是存在误差的,那么回归方程对观测值拟合的怎么样,就叫做拟合优度,这里的R-square,就是度量拟合优度的一个统计量,即常说的r方,它叫做可决系数,它的计算方法为

这里写图片描述

看这个式子式用1减去y对回归方程的方差(未解释离差)与y的总方差的比值,y减去y尖也就是残差,是拟合方程中不能解释的部分,用1减去不能解释的部分,那么剩下的就是解释的部分,也就是说自变量解释了因变量变动的百分比的多少,那么r方的值肯定是越大越好,意味着该模型把y的变动解释得好,R方的范围显然是0到1,在预测实践中,人们往往采纳R方最高的模型。

除此之外,拟合优度还有另一个测定指标是相关系数,相关系数的公式:

这里写图片描述

从公式里面可以看出,可决系数只是相关系数的平方,它们存在的目的是为了提供互相补充的信息。

两者的区别:

相关系数有正负,正意味着因变量随自变量递增,拟合直线从左到右上升,反之意味着递减,从左到右下降。相关系数的意义不像可决系数那样明显,但也有类似的意义,与可决系数同理,它越接近于+1或者-1,拟合程度越好。R-square是你以后很多数据模型都需要用到的统计量,计量模型什么的,还有回归系数显著性检验,F检验,德斌沃森统计量检验,

示例:

给线性回归模型添加一个不重要的特征可能会造成: R-square 增加

解析:在给特征空间添加了一个特征后,不论特征是重要还是不重要,R-square 通常会增加。

线性回归增加特征值对R方的影响:

在线性回归问题中,我们用“R方”来衡量拟合的好坏。在线性回归模型中增加特征值并再训练同一模型。则:

单单R方不能反映变量重要性,不能就此得出正确结论

解析:

单单R方不能表示变量显著性,因为每次加入一个特征值,R方都会上升或维持不变。但在“调整R方”的情况下这也有误(如果特征值显著的话,调整R方会上升)。

135、变量所有值增加一个常数给相关系数带来的影响

示例:

假设给定三个变量 X,Y,Z。(X, Y)、(Y, Z) 和 (X, Z) 的 Pearson 相关性系数分别为 C1、C2 和 C3。现在 X 的所有值加 2(即 X+2),Y 的全部值减 2(即 Y-2),Z 保持不变。那么运算之后的 (X, Y)、(Y, Z) 和 (X, Z) 相关性系数分别为 D1、D2 和 D3。

现在试问 D1、D2、D3 和 C1、C2、C3 之间的关系是什么?

**解答:D1 = C1, D2 = C2, D3 = C3 **

特征之间的相关性系数不会因为特征加或减去一个数而改变

136、不平衡类别的数据适合用什么标准来衡量分类准确率

假定你现在解决一个有着非常不平衡类别的分类问题,即主要类别占据了训练数据的 99%。现在你的模型在测试集上表现为 99% 的准确度。

那么:

1 . 准确度并不适合于衡量不平衡类别问题
2. 精确率和召回率适合于衡量不平衡类别问题

137、集成学习中的弱学习

1 他们经常不会过拟合
2 他们通常带有高偏差,所以其并不能解决复杂学习问题

**解析:**弱学习者是问题的特定部分。所以他们通常不会过拟合,这也就意味着弱学习者通常拥有低方差和高偏差。

138、PCA和SVD的区别

为了得到和 SVD 一样的投射(projection),你需要在 PCA 中将数据转换成零均值

当数据有一个 0 均值向量时,PCA 有与 SVD 一样的投射,否则在使用 SVD 之前,你必须将数据均值归 0。

139、person系数的比较

以下 7 副散点图(从左到右分别编号为 1-7),你需要比较每个散点图的变量之间的皮尔逊相关系数。下面正确的比较顺序是?

这里写图片描述

1>2>3>4>5>6>7

140、留一法交叉验证的均方差

假设有如下一组输入并输出一个实数的数据,则线性回归(Y = bX+c)的留一法交叉验证均方差为?(49/27)

这里写图片描述

解析:

需要计算每个交叉验证点的残差,拟合后得到两点连线和一点用于交叉验证。

这里写图片描述

留一法交叉验证均方差为(2^2 +(2/3)^2 +1^2) /3 = 49/27

141、极大似然估计(MLE)是否总是存在

  1. MLE并不总是存在,MLE可能不是一个转折点,即它可能不是一个似然函数的一阶导数消失的点

这里写图片描述

  1. 如果MLE存在,它可能不特异

这里写图片描述

142、回归分析的残差

回归的残差之和一定为零,故而平均值也为零

残差是指实际观察值与估计值(拟合值)之间的差。

“残差”蕴含了有关模型基本假设的重要信息。如果回归模型正确的话, 我们可以将残差看作误差的观测值。它应符合模型的假设条件,且具有误差的一些性质。利用残差所提供的信息,来考察模型假设的合理性及数据的可靠性称为残差分析。

残差示意图:

这里写图片描述

残差图是指以残差为纵坐标,以任何其他指定的量为横坐标的散点图。用普通最小二乘法(OLS)做回归分析的人都知道,回归分析后的结果一定要用残差图(residual plots)来检查,以验证你的模型。

从根本上说,随机性(randomness)和不可预测性(unpredictability)是任何回归模型的关键组成部分,如果你没有考虑到这两点,那么你的模型就不可信了,甚至说是无效的。

首先,对于一个有效的回归模型来说,可以细分定义出两个基本组成:

响应(Response) = 确定性(Deterministic) + 随机性(Stochastic)

确定性部分(The Deterministic Portion)

为了完整,先提一下Deterministic这部分。在预测模型中,该部分是由关于预测自变量的函数组成,其中包含了回归模型中所有可解释、可预测的信息。

随机误差(The Stochastic Error)

Stochastic 这个词很牛逼,其不仅蕴含着随机性(random),还有不可预测性(unpredictable)。这是很重要的两点,往往很多朋友都以为有随机性的特点就够了,其实不然。这两点放在一起,就是在告诉我们回归模型下的预测值和观测值之间的差异必须是随机不可预测的。换句话说,在误差(error)中不应该含有任何可解释、可预测的信息。

模型中的确定性部分应该是可以很好的解释或预测任何现实世界中固有的随机响应。如果你在随机误差中发现有可解释的、可预测的信息,那就说明你的预测模型缺少了些可预测信息。那么残差图(residual plots)就可以帮助你检查是否如此了!

小注:回归残差其实是真实误差(ture error)的估计,就好比回归系数是真实母体系数(ture population coefficients)的估计。

残差图(Residual Plots):

我们可以用残差图来估计观察或预测到的误差error(残差residuals)与随机误差(stochastic error)是否一致。

你不应该能够预测任何给定的观察或预测结果的错误(或者说差别)。你需要确定残差是否与随机误差相互呈现一致性,就像丢骰子一样,残差若整体呈现“很古怪”的模式,你就需要回头修改你的回归模型了。

首先,残差不应该成片的很高或很低,而是在拟合值的范围内,残差应该以0为中心。换句话说,模型的拟合应该平均散布在被拟合值点附近。而且,在OLS理论中,假设随机误差产生的是正态分布的残差。因此,残差应该是以对称的模式,并且在整个拟合范围内具有恒定均匀的扩散,

这里写图片描述

Valid residual plot

拟合的好,就是0均值的白噪声分布 N ( 0 , σ 2 ) N(0,\sigma^2) ,不含任何人为模态。

下面来看一个有问题的残差图。请一定要记住,残差不应该包含任何可预测的信息。

这里写图片描述

正确残差图不仅要体现出随机性(random),还要体现不可预测性(unpredictable)

143、导出线性回归参数时,要做出什么假定

1.因变量y和自变量x的真实关系是线性的
2.模型误差是统计独立的
3.误差通常服从一个平均值为零,标准差恒定的分布
4.自变量x是非随机的,无错的

144、线性回归可以用于预测因变量

逻辑回归被用于分类问题

145、假设你在训练一个线性回归模型,以下哪项是正确的

1.数据越少越易过拟合(√)

2.假设区间小则易过拟合(×)

解析:

1.小训练数据集更容易找到过拟合训练数据的假设

如果数据量越少,容易在假设空间找到一个模型对训练样本的拟合度很好,容易造成过拟合,该模型不具备良好的泛化能力。
2.从偏差和方差的权衡中可以看出,假设区间小,偏差更大,方差更小。所以在小假设区间的情况下,不太可能找到欠拟合数据的假设。

如果假设空间较小,包含的模型就越少,也就不太可能找到一个模型能够很好的拟合样本,容易造成高偏差,低方差,即欠拟合。

146、特征值大小改变对其保留程度的影响

假设我们用Lasso回归拟合一个有100个特征值(X1,X2…X100)的数据集,现在,我们重新调节其中一个值,将它乘10(将它视作X1),并再次拟合同一规则化参数。下列哪一项正确?

X1很可能被包含在模型内(√)

解析:

大特征值=⇒小相关系数=⇒更少lasso penalty =⇒更可能被保留

147、lasso回归和ridge回归的区别

关于Ridge和Lasso回归在特征值选择上的方法,一下哪项正确?

Lasso回归使用特征值的子集选择(√)

Ridge回归在最终模型中用到了所有自变量,然而Lasso回归可被用于特征值选择,因为相关系数可以为零。

148、正规方程

梯度下降:

在前面我们学习了使用梯度下降法来计算参数最优解,其过程是对代价函数相对于每个参数求偏导数,通过迭代算法一步一步进行同步更新,直到收敛到全局最小值,从而得到最优参数值。

正规方程:

而正规方程则是通过数学方法一次性求得最优解。

其主要思想是利用微积分的知识,我们知道对于一个简单的函数,我们可以对于其参数求导,并将其值置为0,这样就可以直接得到参数的值。就像就像下面这样:

这里写图片描述

但是现在的问题是现实的例子都是很多参数的,我们需要做的就是对于这些参数都求偏导数,从而就得到各个参数的最优解,也就是全局最优解,但是困难在于,如果按照上面这么做将会非常费时间,所以有更好的办法。

如何使用正规方程:

这里有四个训练样本,以及四个特征变量x1,x2,x3,x4,观测结果是y,还是像以前一样,我们在列代价函数的时候,需要加上一个末尾参数x0,如下:
这里写图片描述

将x和y分别组合为向量,可以通过下面的公式来得出参数 θ \theta 的最优解。

θ = ( X T X ) 1 X T y \theta=(X^TX)^{-1}X^Ty

注意:

正规方程由一个求逆的过程 ( X T X ) 1 (X^TX)^{-1} ,当矩阵不可逆时,可能有两种原因:

  1. 多余特征(线性相关)

**解释:**根据性质, r ( A T A ) = r ( A ) r(A^TA)=r(A) ,即 A T A A^TA 的可逆性转化为 A A 的可逆性。

有线性相关的特征的时候,实际上是有线性相关的列向量组,矩阵的秩<矩阵的维度,不可逆;

  1. 特征太多(也就是m<=n)(可以删除一些特征,或正则化)
  • m < n时,也就是维度小于向量个数,在这里也就是样本数小于特征数,线性相关
  • m=n时,当|A|=0时不可逆,|A|!=0时可逆

这里写图片描述

总结:

取决于特征向量的多少,可以将万作为一个界限,当数量小于10000时,直接选择正规方程,当大于10000时,就可以考虑是否换用梯度下降法或者后面的一些其他算法了。

149、自变量X和因变量Y的预期值的变化关系

Y的预期值是关于变量X(X1,X2….Xn)的线性函数,回归线定义为Y = β0 + β1 X1 + β2 X2……+ βn Xn,下列陈述哪项正确?

  1. 如果Xi的变化量为 ∆Xi,其它为常量,则Y的变化量为βi ∆Xi,常量βi可以为正数或负数(√)

  2. βi 的值都是一样的,除非是其它X的βi(√)

  3. X对Y预期值的总影响为每个分影响之和(√)

提示:特征值间相互独立,互不干扰

解析:

Y的预期值是关于X的线性函数,这表示:
如果Xi的变化量为 ∆Xi,其它变量不变,Y的预期值随β i ∆X i而变化,β i可以为正数或负数
βi 的值都是一样的,除非是其它X的βi
X对Y预期值的总影响为每个分影响之和

Y的未知变化独立于随机变量(特别之处,当随机变量为时间序列时,Y与随机变量不是自动关联的)
它们的方差一致(同方差性)
它们一般是分散的

150、评价一个简单的线性回归模型(单自变量),需要几个参数

答案:2个

在简单线性回归模型中,有一个自变量,需要两个参数(Y=a+bX)

发布了152 篇原创文章 · 获赞 716 · 访问量 69万+

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/80117924
今日推荐