1 策略
经验风险最小化:
经验风险即模型在训练数据集上的平均损失,最小化经验风险即让模型在训练集上最优,当模型是条件概率分布、损失函数是对数损失函数的时候,经验风险最小化就是极大似然估计。
结构风险最小化:
所谓结构,就是模型加上结构复杂度,加了正则项的模型在训练集上最小化误差即结构风险最小化
2 正则
正则化:L1 Lasso与L2 ridge正则
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
为了防止过拟合,模型选择的方法:正则化、交叉验证
正则化产生稀疏特征或使模型更简单。
交叉验证选择模型合适的结果与参数。
生成模型与判别模型
生成模型可以得出给定了输入X后产生输出Y的生成关系,典型的生成模型有朴素贝叶斯,隐形马尔科夫,LDA等(可见都和bayes相关)
附LDA的介绍:
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布
判别模型:直接学习模型的函数作为模型的预测输出,如LR,KNN,SVM,决策树等
分类评估 Precision,Recall,AUC
Precision:预测为正类的样本中真实也为正类的比例
Recall:全部正类样本中被预测为正类的比例
假设一个商品有3个中心词,通过分类算法预测了5个中心词,其中2个正确,则recall=2/3, precision=2/5
看重Recall:如推荐复购过滤,癌症检测(癌症为正类,Recall要求高,即要求检测出所有可能的癌症,而有一两个误诊关系不大)
看重Precision:如垃圾邮件检测(垃圾邮件为正类,Precision尽量要求高,即可以放过一些垃圾邮件没被识别,但不要把正常邮件当做spam给拦截)
KNN
knn k值越小则模型越复杂,越容易过拟合(偏差-方差分解?)
模型越复杂,方差越大,偏差越小
对于KNN算法,k值越大,表示模型的学习能力越弱,因为k越大,它越倾向于从“面”上考虑做出判断,而不是具体地考虑一个样本 近身的情况来做出判断,所以,它的偏差会越来越大。
KNN可以用交叉验证选择一个合适的K,模型的Total Error和K的大小的变化(如果K为横轴)也和黑线类似。
kd树:KNN的实现
朴素贝叶斯
缺失值处理
对于离散型缺失值:采取众数填充
对于连续型缺失值:采取平均数填充
xgboost中通过树模型对缺失值的学习
数据
如何处理类目不均衡问题:
在实际工作中可以采样:比如正负样本采样1比10,再对正样本进行一定程度加权
在推荐中,采样采取截断采样的方法,比如用户曝光了10个商品,点击了第5个,则对前5个样本进行截取,取前4个样本为负样本,第5个点击样本为正样本,丢弃后5个样本。
在实际训练中,对正样本进行加权
比如对于 负样本:点击正样本:订单正样本 赋予 1:10:50 或1:50:100的比重,这在训练xgboost时通过AUC看不出来,可以根据真实样本来评估clk和ord,或在线上AB测试来看CTR和订单的影响。(xgboost样本权重的实现原理?)
GBDT / RF bagging/boosting
GBDT在训练每棵树时候只能串行,不能并行,在确定分割节点和分割值的时候可以对多个特征进行并行
Random Forest可以并行
Bagging(RF):每次有放回的采样n个样本,采样K次形成K个数据集,训练每棵树,汇总在一起进行预测
Boosting : 每棵树(弱分类器)学习之前的残差,最后线性求和
Adaboost: 比较好的弱分类器权重更大,加权求和
GBDT由于学习残差,貌似没有加权,直接弱分类器regression结果想加
Bagging和Boosting的区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。