1. 简述机器学习项目的一般流程 ?
1 抽象成数学问题 机器学习的第一步:明确问题。 这里的抽象成数学问题,指的是明确我们可以获得什么样的数据,需要获得什么样的数据,明确目标是分类、回归、聚类等问题类型。
2 获取数据 机器学习结果的上限由数据决定,而算法只是尽可能逼近这个上限。 数据要有代表性,否则容易过拟合。 对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。 对数据的量级要有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。或者如果数据量实在太大,那就要考虑分布式了。
3 特征预处理与特征选择 良好的数据要能够提取出良好的特征才能真正发挥数据的效力。 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。 归一化、离散化、因子化、缺失值处理、去除共线性等数据处理手段,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。 筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。如奥卡姆剃刀定律所说,如无必要,勿增实体。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。
4 训练模型与调优 现在很多算法都能够封装成黑盒供人使用。 但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。
5 模型诊断 如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。 过拟合、欠拟合判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。 过拟合的基本调优思路是增加数据量,降低模型复杂度。 欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。 误差分析也是机器学习至关重要的步骤。通过观察误差样本,全面分析产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题…… 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。
6 模型融合/集成 一般来说,模型融合后都能使得效果有一定提升 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。
7 上线运行 这一部分内容主要跟工程实现的相关性比较大。 工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。
_____________________________________________________________________________________________
2. 哪些机器学习算法需要做特征归一化,哪些不需要?为什么?
1. Min-Max Scaling
对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对数据的等比例缩放。
𝑋𝑛𝑜𝑟𝑚 = 𝑋 −𝑋𝑚𝑖𝑛 /𝑋𝑚𝑎𝑥−𝑋𝑚𝑖𝑛
其中 𝑋𝑚𝑖𝑛,𝑋𝑚𝑎𝑥 分别为数据的最小值和最大值
2. Z-Score Normalization
将原始数据映射到均值为 0,标准差为 1 的分布上。
𝑋𝑛𝑜𝑟𝑚 =𝑋 − 𝜇/𝜎
其中
𝜇为原始特征的均值,而𝜎为原始特征的标准差。
在采用基于梯度更新的学习方法(包括线性回归,逻辑回归,支持向量机,神经网络
等)对模型求解的过程中,未归一化的数值特征在学习时,梯度下降较为抖动,模型
难以收敛(通常需要较长的时间模型才能收敛);而归一化之后的数值特征则可以使
梯度下降较为稳定,进而减少梯度计算的次数,也更容易收敛。下图中,左边为特征
未归一化时,模型的收敛过程;而右边是经过特征归一化之后模型的收敛过程。
其中𝐽(𝜃) 表示损失函数,
图中的圈代表损失函数的等值线;𝜃1, 𝜃2分别是模型的两个参数,𝑥
1, 𝑥2是这两个模型参数对应的特征值
_____________________________________________________________________________________________
3. One-hot的作用是什么?为什么不直接使用数字作为表示
注意:理解 One-hot 编码和数字编码的特点
One-hot 主要用来编码类别特征,即采用哑变量(dummy variables) 对类别进行编
码。它的作用是避免因将类别用数字作为表示而给函数带来抖动。直接使用数字会给
将人工误差而导致的假设引入到类别特征中,比如类别之间的大小关系,以及差异关
系等等
_____________________________________________________________________________________________
4. 什么是数据不平衡,如何解决?
数据不平衡主要指的是在有监督机器学习任务中,样本标签值的分布不均匀。这将使
得模型更倾向于将结果预测为样本标签分布较多的值,从而使得少数样本的预测性能
下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。
解决方法:
1. 重新采样训练集
a. 欠采样 –通过减少丰富类的大小来平衡数据集
b. 过采样 – 增加稀有样本,通过使用重复,自举或合成少数类
2. 设计使用不平衡数据集的模型
a. 在代价函数增大对稀有类别分类错误的惩罚权重
_____________________________________________________________________________________________
5. 请比较欧式距离与曼哈顿距离?
欧式距离,即欧几里得距离,表示两个空间点之间的直线距离。
曼哈顿距离,即所有维度距离绝对值之和。
在基于地图,导航等应用中,欧式距离表现得理想化和现实上的距离相差较大;而曼
哈顿距离就较为合适;另外欧式距离根据各个维度上的距离自动地给每个维度计算了
一个“贡献权重”,这个权重会因为各个维度上距离的变化而动态的发生变化;而曼
哈顿距离的每个维度对最终的距离都有同样的贡献权重。
为什么一些场景中使用余弦相似度而不是欧式距离
假设有 A 和 B 两个向量,其余弦相似度定义为 cos(𝐴, 𝐵) = ‖𝐴‖𝐴2∗‖𝐵𝐵‖2
, 即两个向量夹角
的余弦。它关注的是向量之间的角度关系,相对差异,而不关心它
们的绝对大小;
其
取值范围在[-1, 1]之间;两个向量相同时为 1,正交时为 0,相反时为-1. 即在取值
范围内,余弦距离值越大,两个向量越接近;余弦距离为向量之间的相似度量提供了
一个稳定的指标,无论向量的维度多与少;特征的取值范围大与小。余弦距离的取值
范围始终都能保持在[-1, 1]。余弦相似度广泛应用在文本,图像和视频领域。相比之
下欧氏距离则受到维度多少,取值范围大小以及可解释性的限制。当特征的取值以及
特征向量经过模长归一化之后,余弦距离和欧氏距离又存在以下的单调关系。