1、L1与L2正则化
他们都是可以防止过拟合,降低模型复杂度。
L1会趋向于产生少量的特征,而其他的特征都是0;L2会选择更多的特征,这些特征都会接近于0。L1在特征选择时非常有用,L2就只是一种规则化而已。
简单总结一下就是:
L1范数: 为x向量各个元素绝对值之和。
L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数 。
Lp范数: 为x向量各个元素绝对值p次方和的1/p次方。
在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征,即L1范数可以使权值稀疏,方便特征提取。
L2范数可以防止过拟合,提升模型的泛化能力。

L1和L2的差别,为什么一个让绝对值最小,一个让平方最小,会有那么大的差别呢?看导数一个是1一个是w便知, 在靠进零附近, L1以匀速下降到零, 而L2则完全停下来了. 这说明L1是将不重要的特征(或者说, 重要性不在一个数量级上)尽快剔除, L2则是把特征贡献尽量压缩最小但不至于为零. 两者一起作用, 就是把重要性在一个数量级(重要性最高的)的那些特征一起平等共事(简言之, 不养闲人也不要超人)。

2、归一化
能不归一化最好不归一化,之所以进行数据归一化是因为各维度的量纲不相同。而且需要看情况进行归一化。
归一化就是要把你需要处理的数据经过处理后限制在你需要的一定范围内。

  1. 归一化后加快了梯度下降求最优解的速度。等高线变得显得圆滑,能较快的收敛。不做归一化,梯度下降过程容易走之字,很难收敛甚至不能收敛;
  2. 把有量纲表达式变为无量纲表达式,
    有可能提高精度。一些分类器需要计算样本之间的距离,如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,而实际情况可能是值域范围小的特征更重要。

3、特征向量的归一化方法有哪些?
线性函数转换,表达式如下:y=(x-MinValue)/(MaxValue-MinValue)
对数函数转换,表达式如下:y=log10 (x)
反余切函数转换 ,表达式如下:y=arctan(x)*2/PI
减去均值,除以方差:y=(x-means)/ variance

4、怎么解释置信区间?
置信区间属于频率学派的范畴。真值要么在,要么不在。比如,95%置信区间,并不是真值在这个区间内的概率是95%,而是100次随机抽样中如果95次包含了参数真值,那么置信度为95%。

5、哪些机器学习算法不需要做归一化处理?
概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林。而像adaboost、gbdt、xgboost、svm、lr、KNN、KMeans之类的最优化问题就需要归一化。

6、标准化与归一化的区别?
标准化是依照特征矩阵的列处理数据,将样本的特征值转换到同一量纲下;归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。

7、为什么越小的参数说明模型越简单?
过拟合的,拟合会经过曲面的每个点,也就是说在较小的区间里面可能会有较大的曲率,这里的导数就是很大,线性模型里面的权值就是导数,所以越小的参数说明模型越简单。

8、过拟合和欠拟合产生的原因有哪些?

  1. 样本数据的问题
    a 样本数量太少
    b 抽样方法错误,抽出的样本数据不能足够代表业务场景。比如样本符合正态分布,却按均分分布抽样,或者样本数据不能代表整体数据的分布
    c 样本里的噪音数据干扰过大
  2. 模型问题
    a 模型复杂度高 、参数太多
    b 特征选择/特征降维
    c 权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征

欠拟合(underfiting / high bias)
训练误差和验证误差都很大,这种情况称为欠拟合。出现欠拟合的原因是模型尚未学习到数据的真实结构。因此,模拟在训练集和验证集上的性能都很差。

解决办法

  • 1 做特征工程,添加跟多的特征项。如果欠拟合是由于特征项不够,没有足够的信息支持模型做判断。
  • 2
    增加模型复杂度。如果模型太简单,不能够应对复杂的任务。可以使用更复杂的模型,减小正则化系数。比如说可以使用SVM的核函数,增加了模型复杂度,把低维不可分的数据映射到高维空间,就可以线性可分,减小欠拟合。还可以使用一些集成学习方法。
  • 3 集成学习方法boosting(如GBDT)能有效解决high bias

9、解决过拟合的方法有哪些?
过拟合是泛化的反面,好比乡下快活的刘姥姥进了大观园会各种不适应,但受过良好教育的林黛玉进贾府就不会大惊小怪。实际训练中, 降低过拟合的办法一般如下:

  1. 样本数据方面
    a 增加样本数量,对样本进行降维,添加验证数据
    b 抽样方法要符合业务场景
    c 清洗噪声数据
  2. 模型或训练问题
    a 控制模型复杂度,优先选择简单的模型,或者用模型融合技术。
    b 利用先验知识,添加正则项。L1正则更加容易产生稀疏解、L2正则倾向于让参数w趋向于0.
    c 交叉验证
    d 不要过度训练,最优化求解时,收敛之前停止迭代
    正则化(Regularization)

L2正则化:目标函数中增加所有权重w参数的平方之和, 逼迫所有w尽可能趋向零但不为零. 因为过拟合的时候, 拟合函数需要顾忌每一个点, 最终形成的拟合函数波动很大, 在某些很小的区间里, 函数值的变化很剧烈, 也就是某些w非常大. 为此, L2正则化的加入就惩罚了权重变大的趋势.
L1正则化:目标函数中增加所有权重w参数的绝对值之和, 逼迫更多w为零(也就是变稀疏. L2因为其导数也趋0, 奔向零的速度不如L1给力了). 大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的特征权重反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为0。
提前终止(early stopping)
理论上可能的局部极小值数量随参数的数量呈指数增长, 到达某个精确的最小值是不良泛化的一个来源. 实践表明, 追求细粒度极小值具有较高的泛化误差。这是直观的,因为我们通常会希望我们的误差函数是平滑的, 精确的最小值处所见相应误差曲面具有高度不规则性, 而我们的泛化要求减少精确度去获得平滑最小值, 所以很多训练方法都提出了提前终止策略. 典型的方法是根据交叉叉验证提前终止: 若每次训练前, 将训练数据划分为若干份, 取一份为测试集, 其他为训练集, 每次训练完立即拿此次选中的测试集自测. 因为每份都有一次机会当测试集, 所以此方法称之为交叉验证. 交叉验证的错误率最小时可以认为泛化性能最好, 这时候训练错误率虽然还在继续下降, 但也得终止继续训练了.

10、机器学习与数据挖掘的区别
答:机器学习是指在没有明确的程序指令的情况下,给予计算机学习能力,使它能自主的学习、设计和扩展相关算法。数据挖掘则是一种从数据里面提取知识或者未知的、人们感兴趣的规则。在这个过程中应用了机器学习算法。

11、有监督学习和无监督学习的区别

  • 有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。如LR,SVM,BP,RF,GBDT;
  • 无监督学习:对未标记的样本进行训练学习,发现这些样本中的结构知识。如聚类、降维。

12、什么是生成模型和判别模型

  • 生成模型:由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/
    P(X)。如朴素贝叶斯、Kmeans;生成模型可以还原联合概率分布p(X,Y),并有较快的学习收敛速度;
  • 判别模型:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。如k近邻、决策树、SVM直接面对预测,往往准确率较高。

13、线性分类器与非线性分类器的区别以及优劣
如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。

  • 常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归 常见的非线性分类器:决策树、RF、GBDT、多层感知机
  • SVM两种都有(看线性核还是高斯核)
  • 线性分类器速度快、编程方便,但是可能拟合效果不会很好 非线性分类器编程复杂,但是拟合能力强

14、对于维度很高(特征比数据量还大时)的特征,选择什么样的分类器
线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分。

15、对于维度极低的特征,你是选择线性还是非线性分类器
非线性分类器,低维空间可能很多特征都跑到一起了,导致线性不可分。
其他高人见解:

  1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
  2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
  3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

16、什么是偏差与方差?
泛化误差可以分解成偏差的平方加上方差加上噪声。

  • 偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力;
  • 方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响;噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。
  • 方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。通常在模型训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。
  • 偏差和方差一般称为bias和variance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。
    如左下角的“打靶图”,假设我们的目标是中心的红点,所有的预测值都偏离了目标位置,这就是偏差;
    在右上角的“打靶图”中,预测值围绕着红色中心周围,没有大的偏差,但是整体太分散了,不集中,这就是方差。
  • 低偏差,低方差:这是训练的理想模型,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
  • 低偏差,高方差:这是深度学习面临的最大问题,过拟合了。也就是模型太贴合训练数据了,导致其泛化(或通用)能力差,若遇到测试集,则准确度下降的厉害;
  • 高偏差,低方差:这往往是训练的初始阶段;
  • 高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。

17、模型误差
模型误差 = 偏差 + 方差 + 不可避免的误差(噪音)。一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小,见下图:
18、偏差方差产生的原因
一个模型有偏差,主要的原因可能是对问题本身的假设是不正确的,或者欠拟合。如:针对非线性的问题使用线性回归;或者采用的特征和问题完全没有关系,如用学生姓名预测考试成绩,就会导致高偏差。
方差表现为数据的一点点扰动就会较大地影响模型。即模型没有完全学习到问题的本质,而学习到很多噪音。通常原因可能是使用的模型太复杂,如:使用高阶多项式回归,也就是过拟合。
有一些算法天生就是高方差的算法,如kNN算法。非参数学习算法通常都是高方差,因为不对数据进行任何假设。
有一些算法天生就是高偏差算法,如线性回归。参数学习算法通常都是高偏差算法,因为对数据有迹象。

19、偏差与方差的权衡
我们要知道偏差和方差是无法完全避免的,只能尽量减少其影响。

  • 在避免偏差时,需尽量选择正确的模型,一个非线性问题而我们一直用线性模型去解决,那无论如何,高偏差是无法避免的。
  • 有了正确的模型,我们还要慎重选择数据集的大小,通常数据集越大越好,但大到数据集已经对整体所有数据有了一定的代表性后,再多的数据已经不能提升模型了,反而会带来计算量的增加。而训练数据太小一定是不好的,这会带来过拟合,模型复杂度太高,方差很大,不同数据集训练出来的模型变化非常大。
  • 最后,要选择合适的模型复杂度,复杂度高的模型通常对训练数据有很好的拟合能力。
  • 其实在机器学习领域,主要的挑战来自方差。处理高方差的手段有:
    降低模型复杂度
    减少数据维度;降噪
    增加样本数
    使用验证集

20、特征离散化
特征离散化

21、特征交叉
机器学习之特征组合、特征交叉
对于特征离散化,特征交叉,连续特征离散化非常经典的解释

22、样本类别不均衡
解决样本类别分布不均衡的问题

23、如何进行特征选择
特征选择是一个重要的数据预处理过程,
主要有两个原因:

  • 一是减少特征数量、降维,使模型泛化能力更强,减少过拟合;
  • 二是增强对特征和特征值之间的理解

常见的特征选择方式:

  1. 去除方差较小的特征
  2. 正则化。L1正则化能够生成稀疏的模型。L2正则化的表现更加稳定,由于有用的特征往往对应系数非零。
  3. 随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。
  4. 稳定性选择。是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。

24、数据预处理

  1. 缺失值,填充缺失值fillna:
    i. 离散:None,
    ii. 连续:均值。
    iii. 缺失值太多,则直接去除该列
  2. 连续值:离散化。有的模型(如决策树)需要离散值
  3. 对定量特征二值化。核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。如图像操作
  4. 皮尔逊相关系数,去除高度相关的列

25、缺失值处理的策略
一方面,缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。

另一方面缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:

  1. 把NaN直接作为一个特征,假设用0表示;
  2. 用均值填充;
  3. 用随机森林等算法预测填充。

26、衡量分类器的好坏
这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。
几种常用的指标:

  • 精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量)
  • 召回率 recall = TP/(TP+FN) = TP/ P
  • F1值: 2/F1 = 1/recall + 1/precision
  • ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true
    positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP/ N

27、什么是共线性, 跟过拟合有什么关联?
共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。
共线性会造成冗余,导致过拟合。
解决方法:排除变量的相关性/加入权重正则。

28.连续特征,既可以离散化,也可以做幅度缩放,那这两种处理方式分别适用于什么场景呢?
幅度缩放一般在计算型模型里会用到,比如LR DNN
离散化一般是线性模型会用到,比如LR。

如七月在线寒老师所说,离散化的目的有以下几个方面:
① 非线性!非线性!非线性!逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
离散特征的增加和减少都很容易,易于模型的快速迭代;

② 速度快!速度快!速度快!稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
③ 鲁棒性!鲁棒性!鲁棒性!离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

④ 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
⑤ 稳定性:特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
⑥ 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

29.交叉验证
交叉验证其实就是为了检查模型的泛化行和稳定性,让模型的输出更加可靠。因为当我们只将训练数据划分一次时,有可能划分的不好,所以模型的结果会有偏差,不可靠。所以,我们可以使用交叉验证。
基本思想:

将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。

交叉验证是一种模型选择的方法!(引自李航统计学习方法)可以分为以下三种:

  • 简单交叉验证。即将数据按照一定比例 比如73开,分为训练集和测试集。
  • S折交叉验证。将已给数据切分为S个互不相交、大小相同的子集,将S-1个子集的数据作为训练集来训练模型,剩余的一个测试模型,重复S次,选择S次中平均测试误差最小的模型。
  • 留一交叉验证。即S=n。往往在数据缺乏的时候使用。因为数据很少没法再分了!
    原文链接:https://blog.csdn.net/qq_27782503/article/details/90350086原文链接

机器学习面试题之机器学习基础(一)相关推荐

  1. 机器学习面试题 (一)

    机器学习面试题 1.机器学习项目流程详细 1.1定位数学问题 1.2获取数据 1.3特征预处理与特征选择 1.4训练模型与调优 1.5模型判定 1.6模型集成 1.7上线测试 2.有监督学习和无监督学 ...

  2. 机器学习笔试题精选(二)

    https://blog.csdn.net/red_stone1/article/details/81023976 上次 机器学习笔试题精选(一)中,我们详细解析了机器学习笔试 15 道题.今天,红色 ...

  3. 机器学习笔试题精选(五)

    https://blog.csdn.net/red_stone1/article/details/81296337 机器学习是一门理论性和实战性都比较强的技术学科.在应聘机器学习相关工作岗位时,我们常 ...

  4. 总结了200道经典的机器学习面试题 (附参考答案)

    作者丨qinjianhuang 链接 https://blog.csdn.net/sinat_35512245/article/details/78796328 刷题,是面试前的必备环节.本文作者总结 ...

  5. 机器学习面试题总结!!!!

    需要内推三七互娱的盆友萌,(9月5号截止)可以参考另一篇文章,或者内推QQ群:175423207 BAT机器学习面试系列 1.请简要介绍下SVM. SVM,全称是support vector mach ...

  6. 机器学习面试题总结(转)

    原文链接: https://blog.csdn.net/sinat_35512245/article/details/78796328 1.请简要介绍下SVM. SVM,全称是support vect ...

  7. 【机器学习】经典的机器学习200道面试题(附参考答案)

    来  源: https://blog.csdn.net/sinat_35512245/article/details/78796328 本文总结了往年BAT机器学习面试题,干货满满,值得收藏. 想要入 ...

  8. 机器学习面试题1~60

    原文链接: https://mp.weixin.qq.com/s?__biz=MzI4MTQ2NjU5NA==&mid=2247485444&idx=1&sn=adafa439 ...

  9. 史上最全的大厂机器学习面试题,赶紧收藏吧!(附详解答案)

    本文为大家总结了往年BAT机器学习面试题,干货满满,值得收藏. 刷题,是面试前的必备环节. 想要入职大厂可谓是千军万马过独木桥. 为了通过层层考验,刷题肯定是必不可少的.本文作者根据网络在线发布的BA ...

最新文章

  1. mybatis整合ehcache
  2. java --级联操作(查询/更新)
  3. MySQL 重要函数实例
  4. wdcp+定时运营php_wdcp设置计划任务
  5. 钢材规格解读的软件_万维软件ERP五金建材行业解决方案
  6. 被娱乐在线报道的“唐骏造假门事件”
  7. html5 自定义 datepicker,如何使用 React 构建自定义日期选择器(3)
  8. java利用子类求正方形_Java程序设计实验2011
  9. kafka manager 2.0 工具下载 已打包完成
  10. 醉了!吃着火锅哼着歌,男朋友强行给我科普什么是补码!
  11. 好程序员web前端分享常见html5语义化标签
  12. SQL关于数据库完整性
  13. Unity3D lable控件
  14. JavaScript基础--DOM部分01--李南江
  15. shell之数学运算
  16. 瑞吉外卖_短信验证bug
  17. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...
  18. OCP最新题库收集,052新加的考题及答案整理-19
  19. 京东云对话Cloudflare:畅谈更懂产业的云与未来科技趋势
  20. How MonoRail works

热门文章

  1. 圣思园——JAVA SE Lesson 1
  2. 毕业论文管理系统用例图和活动图
  3. matlab学习笔记 bsxfun函数
  4. Java UT用例实践记录
  5. 使用pyecharts绘制系统依赖关系图
  6. JavaWeb阶段JSP详情介绍(上)
  7. 关闭vscode链接检查,去掉VSCODE 编辑器的链接下划线
  8. linux下查看opencv安装路径以及版本号
  9. js+swiper实现视频上下滑动
  10. 计算机组成原理课程设计_微程序控制的运算器设计