【百面机器学习笔记】:第一章:特征工程+第二章:模型评估

0.序言

机器学习算法工程师的自我修养:
针对不同的实际应用,在不断地尝试新的方法,不断地实现新的算法。他们了解需求、收集数据、设计算法、反复实验并持续优化。

想要成为优秀的算法工程师,首先要拥有全面,有条理的知识储备,更重要的是一种j匠心精神,这种匠心精神可以概括为:发现问题的眼光、解决问题的探索精神、以及对问题究原竟委的执着追求。

第一章:特征工程

对于一个机器学习问题,数据和特征往往决定了结果的上限,而模型、算法的选择以及优化则是在逐步接近这个上限。

两种常用的数据特征:

1.结构化数据:数值型、类别型

2.非结构化数据:文本、音频、图像、视频

1.1. 特征归一化

1.为什么需要对数值类型的特征进行归一化?

为了消除数据不同特征下的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。

(1)归一化后加快了梯度下降求最优解的速度。
(2)归一化有可能提高精度(归一化是让不同维度之间的特征在数值上有一定的比较性)。

2.常见的归一化方法:

2.1 线性函数归一化(Min-Max Scaling)

原始数据等比例缩放:
  
Z = X − M i n M a x − M i n Z=\frac{X-Min}{Max-Min} Z=MaxMinXMin

2.2 零均值归一化(Z-Score Normalization)

将原始数据映射到均值为0,标准差为1的分布上:
   Z = x − μ σ Z=\frac{x-\mu }{\sigma } Z=σxμ

注意:实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、神经网络等模型。但对于决策树模型不需要,信息增益比与归一化无关。

2.3 什么时候使用零均值归一化

使用Max-Min标准化后,其协方差产生了倍数值得缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时由于量纲的存在,使用不同的量纲,距离的计算结果会不同。

在Z-score标准化(0均值标准化)中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差为1的正态分布,在计算距离的时候,每个维度 都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。

总的来说,在算法、后续计算中,涉及距离度量(聚类分析)或者协方差分析(PCA、LDA等)的,同时数据分布可以近似为状态分布,应当使用0均值化的归一方法。其它应用中,根据具体情况选用合适的归一化方法。[^1]

1.2 类别特征(categorical feature)

除决策树等少数模型能够处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别特征必须经过转换成数值特征才能正确工作。

1.2.1 三种类别特征转化成数值的征的类型

1.序号编码(Ordinal Encoding),也就是Id编号

2.独热编码(One-hot Encoding),也就是id编号大小的向量

1.在此基础上使用稀疏向量来节省空间
2.配合特征选择来降低维度

3.二进制编码(Binary Encoding),也就是id编号对应的二进制编码

3.高维组合特征的处理

为了提高复杂关系的拟合能力,在特征工程中经常把一阶离散特征两两组合,构成高阶组合特征。

问题:可能造成参数过多、过拟合

4.怎样有效地找到有意义的组合特征?

可以采用基于决策树的特征组合寻找方法

5.给定原始输入该如何有效地构造决策树呢?

可以采用梯度提升决策树该方法的思想是每次都在之前构建的决策树的参差上构建下一颗决策树。【再看×××××××××××××××】

第二章:模型评估

2.1 评估指标的局限性

2.1.1 准确率(Accuracy)

A = 预 测 正 确 的 样 本 总 样 本 的 个 数 A = \frac{预测正确的样本}{总样本的个数} A=

缺点:当不同样本的比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

所以可以使用平均准确率:每个类别下的样本准确率的算数平均。

遇到问题一步步排查:

1.评估指标是不是对
2.模型是否过拟合或欠拟合
3.测试集和训练集划分不合理
4.线下评估与线上测试的样本分布存在差异

2.1.2 精确率(Precision)和召回率(Recall)的权衡

精 确 率 = 正 确 预 测 为 正 全 部 预 测 为 正 精确率=\frac{正确预测为正}{全部预测为正} =
召 回 率 = 正 确 预 测 为 正 全 部 真 实 为 正 召回率=\frac{正确预测为正}{全部真实为正} =

P-R曲线充分说明:只用某个点对应的精确率和召回率是不能全面衡量模型的性能,只有通过P-R曲线的整体表现才能够对模型进行更为全面的评估。

F1-score也能综合反应一个排序模型的性能,F1-score是精准率和召回率的调和平均值:
F 1 = 2 × 精 准 率 × 召 回 率 精 准 率 + 召 回 率 F1=\frac{2×精准率×召回率}{精准率+召回率} F1=+2××

2.1.3 平方根误差(RMSE)

RMSE常用来衡量回归模型的好坏:
在这里插入图片描述
缺点:如果存在个别偏离程度非常大的离群点(Outlier),即使离群点非常少,也会让RMSE指标变得很差。

面对离群点需要做的:

1.看看是不是真的”噪声“,如果是,就在数据预处理的时候去除掉。
2.如果不是”噪声点“,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。
3.找一个合适的指标替代RMSE,就用平均绝对百分误差(MAPE),相当于将每一个点的误差进行了归一化,减小个别离群点带来的绝对误差的影响。
在这里插入图片描述

扩展:

面对单一评估指标,往往会比较片面或错误,只有通过一组互补的指标去评估模型,才能更好地发现模型问题。

2.2 ROC曲线

2.2.1 什么是ROC曲线?

ROC曲线(Receiver Operating Characteristic Curve)【受试者工作特征曲线】
横坐标是FPR(False Positive Rate)【假阳性率】,纵坐标是TPR(True Positive Rate)【真阳性率】,两者计算公式如下:

F P R = N 个 负 样 本 中 被 预 测 为 正 阳 本 的 数 量 N 个 负 样 本 FPR=\frac{N个负样本中被预测为正阳本的数量}{N个负样本} FPR=NN
T P R = P 个 正 阳 本 中 被 预 测 为 正 样 本 的 数 量 P 个 正 样 本 TPR=\frac{P个正阳本中被预测为正样本的数量}{P个正样本} TPR=PP

2.2.2 如何计算AUC?

AUC是指ROC曲线下的面积,AUC越大,说明分类器越可能把真正的样本排在前面,分类器性能越好。

2.2.3 ROC曲线相比P-R曲线有什么特点?

相比P-R曲线,ROC曲线有一个特点,当正样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线形状会发生剧烈变化,所以ROC式样场景很多:推荐、广告、排序等领域。

如果研究者更希望看到模型在特定数据集上的表现,P-R曲线能够更直观地反应其性能。

2.3 余弦距离的应用

分析两个特征向量的相似性时,常用余弦相似度来表示,余弦相似度的范围是【-1,1】

余弦距离=1-余弦相似度,范围是【0,2】

2.3.1 为什么使用余弦相似度而不使用欧式距离?

欧氏距离体现在数值上的绝对差异,而余弦相似度体现在方向的相对差异。

2.3.2 余弦距离不是一个严格定义的距离

因为不满足三条距离公理:正定性、对称性、三角不等式

此外还有常常被用来计算两个分布之间的差异的KL距离(相对熵)也不满足。

2.4 A/B测试的陷阱

2.4.1 为什么还要进行在线A/B测试?

1.离线评估无法完全消除模型过拟合的影响。
2.离线评估无法还原线上的工程环境。
3.线上的某些商业指标在离线评估中无法计算。

2.4.2 如何进行线上A/B测试?

1.用户分桶:分成实验组和对照组
2.实验组用户施以新模型,对照组用户施以旧模型
3.分桶过程中注意样本的独立性,和采样的无偏性

2.5 模型的评估方法

2.5.1 三种方法

Holdout方法

随机划分训练集和测试集

缺点:在验证集上计算的评估指标和原始分组有很大的关系。

交叉验证

k-fold交叉验证

1.将样本划分成k个大小相等的样本子集
2.依次遍历k个子集,把当前子集当做验证集,其余作为训练集,进行训练和评估
3.最后把k个评估指标平均值作为最终的评估指标

留一验证

样本数量比较小时,k可以等于样本数N,这样的k-fold交叉验证叫做留一验证

自助法

样本比较小时,为了维持训练集的样本规模。
1.对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集
2.n次抽样中,有的样本被重复抽样,有的没有,没有抽到的当做验证集,其余当做训练集

n趋于无穷大时,验证集为36.8%

2.6 超参数调优

2.6.1 超参数调优有哪些方法?

0.步骤

1.确定目标函数
2.搜索范围,即上限和下限
3.其他参数,如搜索步长

1.网格搜索

网格搜索法一般先使用较广的搜索范围和较大的搜索步长,来寻找全局最优的可能的位置;然后会逐渐缩小搜索范围和步长,寻找更精确的最优值。

缺点:消耗资源和时间

2.随机搜索

在搜索范围内随机选取样本,比较快。

3.贝叶斯优化

会充分利用先前搜索过的信息,将其当做先验分布。

2.7 过拟合与欠拟合

2.7.1 降低“过拟合”风险的方法

1.从数据入手,获取更多的数据
2.降低模型的复杂度
3.正则化方法
4.集成学习方法:将多个模型集合在一起,来降低模型的拟合风险,如Bagging方法

2.7.2 降低“欠拟合”风险的方法

1.添加新特征,如:挖掘“上下文特征”、“ID类特征”、“组合特征”等新的特征,方法有:因子分解机、梯度提升决策树、Deep-crossing等

2.增加模型复杂度

3.减小正则化系数

[^1]原文:https://blog.csdn.net/program_developer/article/details/78637711

写的特别好的机器学习面试笔记:

https://blog.csdn.net/weixin_42446330/article/details/84405362#commentBox

你可能感兴趣的:(百面机器学习笔记)