机器学习技巧笔记

2017-08-21  本文已影响0人  黄中一
一、简介
结构化数据和非结构化数据
监督学习:

(二)数据

1.常见抽样方法

(1)简单随机抽样:无放回抽样,有放回抽样

(2)分层抽样

2.类别样本不平衡的解决方法(假设负样本远远大于正样本数量)

(1)欠采样:对负样本进行欠采样;一般不单纯地进行欠采样,而是结合集成学习来进行欠采样;将负样本划分为若干个集合供不同分类器使用,这样对每个分类器来看都进行了欠采样,但在全局来看却不会丢失重要信息;

(2)重采样:对正样本进行重采样;一般不单纯地进行重采样,而是对正样本进行插值等来产生新的正样本;

(3)阈值移动:不是简单地将概率阈值0.5作为正负样本的区分界限,若负样本过多,那么正样本的阈值将往低于0.5方向调整;

3.处理数据缺失的常用方法:

(1)用平均值、中值、分位数、众数、随机值等替代;

(2)通过建模,使用其他变量来预测缺失值;

(3)将变量映射到高维空间:比如性别变量有男,女以及缺失3种情况,则映射为3个变量:是否男,是否女,是否缺失;

(4)整列删除

4.构造线下验证集的常用方法:

(1)hold-out-validation:将线下数据随机划分为一大一小两部分,大的为训练集,小的为验证集,重复若干次;(典型做法是三七分)

(2)cross-validation:将线下数据划分为k份,每次只用k-1份来训练,剩下的1份作为验证集,重复k次;(典型做法是k取10,k偏小则欠拟合,k偏大样本增多则过拟合)

(3)bootstrapping:从原始数据集D中有放回地采样,得到同样大小的D1,D1作为训练集,D-D1作为验证集;

PS:

1)训练集与验证集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似;如果从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”;

2)验证集较小时,评估结果的方差较大,过拟合;训练集较小时,评估结果的偏差较大,欠拟合;

3)leave-one-out是k-fold cross-validation的特殊例子,只留一个样本做验证集;评估结果往往比较准确,但是不适用于大样本数据;(训练的计算开销太大)

4)bootstrapping可以产生多个不同的训练集,适用于ensemble learning;同时,由于重复采样,所以会改变初始训练集的分布,造成样本泄露,因此一般适用于小样本,在数据量足够的情况下,常采用hold-out-validation或者cross-validation;

5.常见的离线评价指标:

(1)准确率(Accuracy)与平均准确率(Average Per-class Accuracy)

其中平均准确率是对各个类的准确率取平均值

(2)混淆矩阵:对二分类结果进行详细表述的一个矩阵

(3)ROC和PRC
怎么画出X轴Y轴
适用于/优点关注范围用一个值衡量的话?缺点
ROC
通过改变0.5这个阈值使得真阳性和假阳性变化假阳性真阳性排序质量单个集合AUC假设平衡PRCPercision/RecallPercisionRecall不平衡整体F1比较不平滑PS,平滑表示没有过拟合,对于ROC的变化能看出排序性能

6.常见的在线评价指标——A/B test

7.验证集和测试集的区别

验证集:用于调整子模型或者其超参数,做模型选择

测试集:用来评测多个最终模型

如果采用 k-折交叉验证等重采样方法,尤其当重采样方法已经被嵌套在模型验证中时,「验证数据集」和「测试数据集」的概念可能会淡化

(三)特征

1.冗余特征

(1)冗余特征指的是其所包含的信息能从其他特征中推演出来;

(2)去除冗余特征会减轻学习过程的负担,增加冗余特征会降低学习任务的难度;

2.特征选择:从给定的特征集合中选择出相关特征子集的过程称作“特征选择”;其中包括子集搜索问题与子集评价问题:

(1)子集搜索:前向搜索(逐渐往子集增加特征),后向搜索(逐渐往全集剔除特征)

(2)子集评价:信息增益,基尼指数

PS:

(1)子集搜索中的前后向搜索都是贪心策略,所以不一定是最优,这是不进行穷举搜索所无法避免的;

(2)将特征子集搜索机制与子集评价机制相结合,可以得到特征选择方法,例如前向搜索与信息熵结合,得到的是决策树的特征选择方法;

3.特征选择常见方法:过滤式(filter),包裹式(wrapper),嵌入式(embedding)

(1)过滤式 Filter

根据CHI,PCA等降维

先做特征选择,再训练学习器

优点: 快速, 只需要基础统计知识, 特征选择过程与后续的学习器的训练没有关系 。

缺点:特征之间的组合效应难以挖掘。

(2)包裹式 Wrapper

根据效果好的算法的结果搜索 “量身定做”的特征子集

优点: 直接面向算法优化,从最终学习性能来看,包裹式比过滤式更好,不需要太多知识。

缺点: 庞大的搜索空间, 需要定义启发式策略。

(3)嵌入式Embedded

将特征选择与学习器训练融为一体使用各种的稀疏和惩罚项

优点: 快速, 并且面向算法,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。

缺点: 需要调整结构和参数配置, 而这需要深入的知识和经验。


(四)模型

1.模型选择的常用方法:

(1)正则化

(2)交叉验证

PS:当假设空间含有不同的复杂度(例如,不同的参数个数)的模型时,就要面临模型选择的问题;

2.过拟合与欠拟合

(1)过拟合是模型的学习能力太强,把样本的噪声都学习进去;

(2)欠拟合是模型的学习能力太弱,连样本的一般特性都没有学习进去;

3.泛化能力与泛化误差上界

(1)泛化能力是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上最重要的性质;

(2)泛化误差上界:训练误差越小,泛化误差上界也越小;样本容量越大,泛化误差上界也越小;模型越复杂,泛化误差上界越大;

4.正则、归一和标准化: 标准化方法公式结果适用于应用z-scorey=(x-μ)/σ变换为正态分布最大最小未知/存在野点数据预处理,优化后用作Batch Norm小数定标 y=x/10^n移动小数的位置使得全部小于1

Logisticy=1/(1+e^(-x))
数据分布很远可导,广泛应用

5.常用的防止过拟合的方法:

(1)数据集扩增

(2)正则化:约束参数大小

6.bias与variance

(1)bias:结果和预测的偏差,拟合误差,表示模型的拟合能力,偏差越小,模型的拟合能力越强;(宽广网的DNN部分)

拟合误差表示是否已经把线偏差到指定位置

(2)variance:结果和预测的方差,泛化误差,表示模型的泛化能力,方差越小,模型的泛化能力越强;(宽广网的LR部分)

方差表示这根线有多符合这个验证集

(3)error = bias + variance

是个问题

7.调试性能较差的分类器

8.模型参数与超参数

(1)机器学习模型建立过程其实是一个参数学习与调优的过程,参数包括模型参数与超参数;

(2)模型参数使指通过模型训练中的学习算法而进行调整的,而模型超参数不是通过学习算法而来的,但是同样也需要进行调优,比如特征的维数等;

(3)常见的调参方法有:网格搜索,随机搜索,启发式搜索;

(4)调参是通过线下验证集进行的;

9.VC维(Vapnik-Chervonenkis Dimension):VC维是统计学习理论中的一个核心概念,它是目前为止对函数集学习性能的最好描述指标

(1)shatter(打散)概念:给定训练样本集合x1,x2,...,xn;,其中每个样本有两个可选的label(+1, -1),因此总共有2的n次方种不同的label组合;如果对于其中每一种组合,分类模型(函数集) F 都能够对其进行正确的划分,那么我们称 F 能够将训练样本集合打散(shatter);

上图共有3个样本,可以看到,对于样本的任意一种label组合,图中的直线都可以将正样本和负样本分开;这时我们称这条直线可以将这三个样本打散(shatter);


上图中显示了四个样本,如果只用一条直线,那么无论这条直线怎么划都不能将正负样本分开;

(2)VC维的概念:指函数集H能够打散的最大样本数称为H的VC维;

(3)对于一个模型来说,其VC维越大,则其模型复杂度越高,需要更多的训练数据,因此为了防止过拟合,加入正则项,其实也就是降低模型的VC维;

(4)一个机器学习模型想要取得好的效果,这个模型需要满足以下两个条件:

1. 模型在我们的训练数据上的表现要不错,也就是 trainning error 要足够小。
2. 模型的 vc-dimension 要低。换句话说,就是模型的自由度不能太大,以防overfit.

换句话说,模型的维度大的容易过拟合,而数据量小的容易过拟合


PS:线性SVM的VC维为d+1(任何线性分类器的VC维都是d+1);高斯核函数的VC维为无穷大;NN(Neural Networks )的VC维为参数量;树模型的vc维度很接近样本

10.集成学习(ensemble learning)的常用方法:

(1)bagging:训练不同的模型,对预测结果取均值或者投票等(减小variance,增强泛化);

(2)boosting:迭代算法,在上一次分类结果上进行迭代调整(减小bias,增强拟合);

(3)stacking/cascade:训练不同的模型,用每个模型的预测作为输入,训练新的模型;

11.多分类的常见方法(假设N个类)

(1)one vs rest:构建N个分类器,每个分类器依次将每个类做为正样本,剩余的类作为负样本

(2)one vs one:构建N*(N-1)/2个分类器,每个分类器选择两个类的样本进行训练

12.线性分类器与非线性分类器的区别以及优劣
13.维度和特征 维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分所以选择线性分类器
美团特征:
特征的生产流程
特征的统计部分的流程:
各个部分称为算子其中,特征的范式:针对某些统计对象(用户、商家)的一些维度(品类、下单额),基于某些度量值(点击、下单)做统计(比例/总和)。同一对象,可统计不同维度;同一维度,有不同的度量角度;同一度量角度,有不同的统计方式。

行为类别行为详情主动行为数据搜索、筛选、点击、收藏、下单、支付、评分UGC文本评价、上传图片负反馈数据左滑删除、取消收藏、取消订单、退款、负评、低评用户画像用户人口属性、美团DNA、品类偏好、消费水平、工作地与居住地

特征选择 dw topic
对于每个特征,加入子特征可以提高性能:能让模型更快地收敛

通用模型举隅

排序层

召回层【协同过滤去除不合适的,选取重要的】-----------------------------------用户画像层【回流到FFM那层】非线性映射层:全连接,wide【泛化】&deep【记忆】特征处理层:FFM特征组合,tfidf计算,降维层,语义提取embedding层
LR跟NB的区别:相同:都是特征的线性表达,都是求条件概率P(y|x)不同:NB是生成模型,直接在训练数据计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P(y|x)。LR是判别模型,通过最大化P(y|x)的函数产生。NB比较Naive。当数据集比较小的时候,应该选用Naive Bayes,为了能够取得很好的效果,数据的需求量为O(log n)。 当数据集比较大的时候,应该选用Logistic Regression,为了能够取得很好的效果,数据的需求量为O( n)


模型集成方法:

Bagging

【切分数据集,结果加权】Bagging试图在小样本集上实现相似的学习模块,然后对预测值求平均值。对于Bagging一般来说,你可以在不同数据集上使用不同学习模块。正如你所期望的那样,这样可以帮助我们减少方差,增强泛化。

Boosting

【误差梯度下降】Boosting是一项迭代技术,它在上一次分类的基础上调整观测值的权重。如果观测值被错误分类,它就会增加这个观测值的权重,反之亦然。Boosting一般会减少偏置误差然后构建强大的预测模型。但是,有些时候它们也会在训练数据上过拟合。

Stacking

【简单的blending】训练集中取子集,交叉训练基模型,再用总模型汇总。这样做可以减少偏置误差和方差(泛化误差)。

线性stacking:

用线性模型做最终模型,这样就能看见每个模型的权重

二次线性stacking:

把模型的输出和他们之间结果的组合一起作为最终模型的输入


Blending:不会信息泄露,融合一切模型和参数没有stacking的交叉验证的性能一般采用这种
如何选择要融合的模型的超参数:比如,标准化的时候选用三种: 另外,在特征选择和数据缺失值填补的时候使用不同参数
上一篇 下一篇

猜你喜欢

热点阅读