1.监督学习与无监督学习
监督学习:对具有标记的训练样本进行学习,以尽可能地对训练样本集之外的数据进行分类预测;(LR,SVM,RF,GBDT)
无监督学习:对未标记的样本进行训练学习,以发现这些样本中的知识结构。(KMeans,DL)
2.泛化能力:指模型对未知数据的预测能力
3.正则化:正则化是针对过拟合而提出的,在求解模型最优的是一般化最小的经验风险,现在在该经验风险上加入模型复杂度一样,并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变成了结构风险的最优化,可以防止训练模型过度复杂,有效地降低过拟合的风险。
4.过拟合:如果一味地去提高训练数据的预测能力,所选模型的复杂度往往会很高,这种现象称为过拟合。所表现的就是模型训练时候的误差很小,但是在测试的时候误差却很大。
产生的原因:
1.样本数据的问题:
样本数量太少;
抽样方法错误,抽出的样本数据不能有效足够代表业务逻辑或业务场景。比如样本符合正态分布,却按均匀分布抽 样,或者样本数据不能代表整体数据的分布;
样本里的噪音数据干扰过大。
2.模型问题:
模型复杂度太高、参数太多;
决策树没有剪枝;
权值学习迭代次数足够多,拟合了训练数据中的噪声和训练样例中没有代表性的特征。
解决方法:
1.样本数据方面:
增加样本数量,对样本进行降维,添加验证数据;
抽样方法要符合业务场景;
清洗噪声数据
2.模型或训练问题:
控制模型复杂度,优先选择简单的模型或者模型融合技术;
利用先验知识,添加正则项,L1正则更加容易产生稀疏解、L2正则倾向于让参数w趋向于0
交叉验证
不要过度训练数据,最优化求解时,收敛之前停止迭代
决策树模型没有进行剪枝
权值衰减
5.L1和L2正则的区别,如何选择L1和L2正则
他们都是防止过拟合,降低模型的复杂度
L1正则化是指权值向量
w
w
中各个元素的绝对值之和,通常为
L2正则化是指权值向量
w
w
中各个元素的平方和然后再求平方根
对于线性回归模型,使用L1正则haul的模型叫做Lasso回归,使用L2正则化的模型叫做岭回归。
L1正则可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。
L2正则化可以防止模型过拟合。
稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0.在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小,此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。
6.类别不平衡是怎么处理的?
类别不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。
解决方法:
过抽样:通过改变训练数据的分布来消除或减小数据的不平衡。过抽样方法通过增加少数类样本来提高少数类的分类性能,最简单的方法是复制少数类样本,缺点是可能导致过拟合,没有给少数类增加任何新的信息。改进的过抽样方法通过在少数类中加入随机高斯噪声或产生新的合成样本等方法。注意:好像对SVM没用。
欠抽样:欠抽样方法通过减少多数类样本来提高少数类的分类性能,最简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息,不能够充分利用已有的信息。
算法层面,采用代价敏感方法:重构训练集的方法,不改变已有算法,而是根据样本的不同错分代价给训练集中的每一个样本赋一个权值,接着按权值对原始样本集进行重构;引入代价敏感因子,设计出代价敏感的分类算法,通常对小样本赋予较高的代价,大样本赋予较小的代价,期望以此来平衡样本之间的数目差异。
特征选择:样本数量分布很不平衡时,特征的分布同样会不平衡。尤其是在文本分类问题中,在大类中经常出现的特征,也许在稀有类中根本不出现。因此,根据不平衡分类问题的特点,选取最具有区分能力的特征,有利于提高稀有类的识别率。
按照一个经验性的样本比例,挑选正负2个样本集,分别从中选择最能表示该类样本的特征集,然后将这些特征集合并作为最后挑选的特征。
7.SVM与LR的区别?
相同点:都是监督学习的分类算法;都是线性分类方法;都是判别模型
不同点
LR与Linear SVM本质不同来自于损失函数的不同
LR的损失函数:
SVM的损失函数式最大化间隔距离:
不同的损失函数代表了不同的假设前提,也就代表了不同的分类原理
LR方法基于概率理论,假设样本为0或者1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,或者从信息论的角度来看,其是让模型产生的分布P(Y|X) 尽可能接近训练数据的分布,相当于最小化KL距离
支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面
所以SVM只考虑分类面上的点,而LR考虑所有点,SVM中,在支持向量之外添加减少任何点都对结果没有影响,而LR则是每一个点都会影响决策。
Linear SVM不直接依赖于数据分布,分类平面不受一类点影响
LR则是受所有数据点的影响,所以受数据本身分布影响的,如果数据不同类别极度不平衡,一般需要先对数据做平衡处理。
SVM不能产生概率,LR可以产生概率
LR本身就是基于概率的,所以它产生的结果代表了分成某一类的概率,而SVM则因为优化的目标不含有概率因素,所以其不能直接产生概率。(某些工具包可以使SVM产生概率)
SVM依赖于数据的测度,而LR则不受影响
因为SVM是基于距离的,而LR是基于概率的,所以LR是不受数据不同维度测度不同的影响,而SVM因为要最小化
12||w||22
1
2
|
|
w
|
|
2
2
所以其依赖于不同维度测度的不同,如果差别较大需要做normalization 。
SVM自带结构风险最小化,LR则是经验风险最小化
因为SVM本身就是优化
12||w||2
1
2
|
|
w
|
|
2
最小化的,所以其优化的目标函数本身就含有结构风险最小化,所以不需要加正则项,而LR不加正则化的时候,其优化的目标是经验风险最小化,所以最后需要加入正则化,增强模型的泛化能力。
SVM会用核函数而LR一般不用核函数的原因
SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。 而LR则每个点都需要两两计算核函数,计算量太过庞大。
LR和SVM在实际应用的区别
根据经验来看,对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用
8.归一化?哪些算法需要归一化,哪些不需要?特征向量归一化方法?
归一化就是把需要处理的数据通过某种算法处理之后限制在一定的范围之内。
归一化后加快了梯度下降求最优解的速度。等高线变得明显圆滑,在梯度下降进行求解时能较快地收敛。如果不做归一化,梯度下降过程很容易走“之”字,很难收敛甚至不收敛。
把有量纲表达式变成无量纲表达式,可以提高精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖。
逻辑回归等模型先验假设数据服从正态分布。
概率模型不需要进行归一化,因为他们不关心变量的值,而是关心变量的分布和变量之间的条件概率。如决策树、rf。而像adaboost、gbdt、xgboost、svm、lr、KNN、KMeans之类的最优化问题就需要归一化。
特征向量的归一化方法
线性函数转换,表达式如下:y=(x-MinValue)/(MaxValue-MinValue)
对数函数转换,表达式如下:y=log10 (x)
反余切函数转换 ,表达式如下:y=arctan(x)*2/PI
减去均值,乘以方差:y=(x-means)/ variance
9.特征向量缺失值的处理
如果缺失值较多,直接舍弃该特征,否则可能反倒会带入较大的noise,对结果产生不良影响。
如果缺失值较少,其余的特征缺失值都在10%之内,可以进行如下处理:把NaN直接作为一个特征,用0表示;用均值填充;用随机森林等算法预测填充。
10.随机森林如何处理缺失值?
方法一:简单粗暴(na.roughfix),对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,则用中位数补上;
方法二:计算量较大(rfImpute),先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次。