机器学习面试笔试之特征工程、优化方法、降维、模型评估1

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 机器学习面试笔试之特征工程、优化方法、降维、模型评估

一、特征工程有哪些?

特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

主要讨论以下两种常用的数据类型。

  1. 结构化数据。结构化数据类型可以看作关系型数据库的一张表,每列都有清晰的定义,包含了数值型、类别型两种基本类型;每一行数据表示一个样本的信息。
  2. 非结构化数据。非结构化数据主要包括文本、图像、音频、视频数据, 其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每条数据的大小各不相同。

1.特征归一化

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化 (Normalization)处理,使各指标处于同一数值量级,以便进行分析。

对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。

  • 线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对原始数据的等比缩放。归一化公式如下,其中X为原始数据,xmaxxmin 分别为数据最大值和最小值。

1698841305941.png

  • 零均值归一化(Z-Score Normalization)。它会将原始数据映射到均值为 0、标准差为1的分布上。具体来说,假设原始特征的均值为μ、标准差为σ,那么归一化公式定义为

1698841324451.png

优点:训练数据归一化后,容易更快地通过梯度下降找到最优解。

1698841344229.jpg


当然,数据归一化并不是万能的。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但对于决策树模型则并不适用。

2.类别型特征

类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、 AB、O)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

  • 序号编码

序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低、中、高三档,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID,例如高表示为3、中表示为2、低表示为1,转换后依然保留了大小关系。

  • 独热编码(one-hot)

独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有4个取值(A型血、B型血、AB型血、O型血),独热编码会把血型变成一个4维稀疏向量,A型血表示为(1, 0, 0, 0),B型血表示为(0, 1, 0, 0),AB型表示为(0, 0, 1, 0),O型血表示为(0, 0, 0, 1)。对于类别取值较多的情况下使用独热编码。

  • 二进制编码

二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。以A、B、AB、O血型为例,下图是二进制编码的过程。A型血的ID为1,二进制表示为001;B型血的ID为2,二进制表示为 010;以此类推可以得到AB型血和O型血的二进制表示。

1698841365870.jpg

3.高维组合特征的处理

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征,第一张图是语言和类型对点击的影响。为了提高拟合能力,语言和类型可以组成二阶特征,第二张图是语言和类型的组合特征对点击的影响。

1698841377113.jpg

4.文本表示模型

文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领域的一个重要研究方向。

  • 词袋模型和N-gram模型

最基础的文本表示模型是词袋模型。顾名思义,就是将每篇文章看成一袋子词,并忽略每个词出现的顺序。具体地说,就是将整段文本以词为单位切分开, 然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章中的重要程度。常用TF-IDF来计算权重。

  • 主题模型

主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且能够计算出每篇文章的主题分布。

  • 词嵌入与深度学习模型

词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维空间(通常K=50~300维)上的一个稠密向量(Dense Vector)。K维空间的每一维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。

5.其它特征工程

  1. 如果某个特征当中有缺失值,缺失比较少的话,可以使用该特征的平均值或者其它比较靠谱的数据进行填充;缺失比较多的话可以考虑删除该特征。
  2. 可以分析特征与结果的相关性,把相关性小的特征去掉。
  3. 当用户使用稀疏特征进行训练时,对于离散特征缺省值应该如何处理效果较好(对缺省值赋给一个全新值来标记

6.特征工程脑图

1698841388467.jpg

二、机器学习优化方法(优化算法)

  • 损失函数:是定义在单个样本上的,算的是一个样本的误差
  • 代价函数:是定义在整个训练集上的,是所有样本误差的平均,即损失函数的平均
  • 目标函数:最终要优化的函数,等于经验风险+结构风险,对于目标函数来说,再有约束条件下的最小化就是损失函数

优化是应用数学的一个分支,也是机器学习的核心组成部分。实际上,机器学习算法 = 模型表征 + 模型评估 + 优化算法。其中,优化算法所做的事情就是在模型表征空间中找到模型评估指标最好的模型。不同的优化算法对应的模型表征和评估指标不尽相同。

机器学习算法的关键一环是模型评估, 而损失函数定义了模型的评估指标。

1.机器学习常用损失函数

损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。常见的损失函数如下:

  • 平方损失函数

1698841401019.jpg


Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和。而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:

1698841417870.png

该损失函数一般使用在线性回归当中。

  • log损失函数

1698841431546.jpg

该损失函数一般使用在逻辑回归中。

  • Hinge损失函数

1698841449493.png

SVM采用的就是Hinge Loss,用于“最大间隔(max-margin)”分类。

2.什么是凸优化(对于凸优化问题,所有的局部极小值都是全局最小值)

凸函数的严格定义为,函数L(·) 是凸函数当且仅当对定义域中的任意两点x,y和任意实数λ∈[0,1]总有:

1698841464650.png

凸优化问题的例子包括支持向量机、线性回归等线性模型,非凸优化问题的例子包括低秩模型(如矩阵分解)、深度神经网络模型等。

主成分分析对应的优化问题是非凸优化问题,但可以借助SVD(奇异值分解)直接得到主成分分析的全局极小值。

3.正则化项

为什么希望模型参数具有稀疏性呢?稀疏性,说白了就是模型的很多参数是0 。这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低过拟合的可能。

从概率角度出发,L1正则和L2正则分别是假设参数服从laplace分布/高斯分布

4.常见的几种最优化方法

  • 梯度下降法

梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的搜索迭代示意图如下图所示:

1698841477660.jpg


缺点:靠近极小值时收敛速度减慢;直线搜索时可能会产生一些问题;可能会“之字形”地下降。

  • 牛顿法

牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。牛顿法最大的特点就在于它的收敛速度很快。具体步骤:

  • 首先,选择一个接近函数 f(x)零点的 x0,计算相应的f(x0)和切线斜率f'(x0)(这里f'表示函数f的导数)。
  • 然后我们计算穿过点(x0, f(x0))并且斜率为f'(x0)的直线和x轴的交点的x坐标,也就是求如下方程的解:

  • 我们将新求得的点的x坐标命名为x1,通常x1会比x0更接近方程f(x)=0的解。因此我们现在可以利用x1开始下一轮迭代。

由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"。牛顿法搜索动态示例图:

1698841505576.jpg

从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。缺点:

  • 牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。
  • 在高维情况下这个矩阵非常大,计算和存储都是问题。
  • 在小批量的情况下,牛顿法对于二阶导数的估计噪声太大。
  • 目标函数非凸的时候,牛顿法容易受到鞍点或者最大值点的吸引。
  • 拟牛顿法

拟牛顿法是求解非线性优化问题最有效的方法之一,本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和梯度下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于梯度下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。

  • 共轭梯度法

共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。

下图为共轭梯度法和梯度下降法搜索最优解的路径对比示意图:

1698841517344.jpg


当训练数据量特别大肘,经典的梯度下降法存在什么问题,需要做如何改进?

经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。

随机梯度下降并没有引入非线性

AdaGrad 使用的是一阶导数;L-BFGS 使用的是二阶导数

为了解决该问题,随机梯度下降法( Stochastic Gradient Descent,SGD )用单个训练样本的损失来近似平均损失。随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率。该方法也非常适用于数据源源不断到来的在线更新场景。

为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据, 该方法被称为小批量梯度下降法( Mini-Batch Gradient Descent )

  • Mini-batch比随机梯度下降噪声更小
  • Mini-batch的梯度下降单次iteration速度比批梯度下降快
  • 不同的Mini-Batch训练出来的BN参数是不相同的
  • Batch Gradient Descent(BGD)对所有函数不可收敛到全局极小值
相关文章
|
4天前
|
机器学习/深度学习 存储 数据采集
利用机器学习优化数据中心冷却系统
【4月更文挑战第26天】 在数据中心管理和运营中,冷却系统的能效是关键成本因素之一。随着能源价格的上涨和对环境可持续性的关注增加,开发智能、高效的冷却策略显得尤为重要。本文将探讨如何应用机器学习(ML)技术来优化数据中心的冷却系统。通过收集和分析温度、湿度、服务器负载等多维数据,我们构建了预测模型来动态调整冷却需求,实现节能并保持最佳的操作条件。实验结果表明,使用ML优化后的冷却系统能够在不牺牲性能的前提下显著降低能耗。
|
22天前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的五大技巧
【4月更文挑战第7天】 在数据科学迅猛发展的今天,机器学习已成为解决复杂问题的重要工具。然而,构建一个既精确又高效的机器学习模型并非易事。本文将分享五种提升机器学习模型性能的有效技巧,包括数据预处理、特征工程、模型选择、超参数调优以及交叉验证。这些方法不仅能帮助初学者快速提高模型准确度,也为经验丰富的数据科学家提供了进一步提升模型性能的思路。
|
22天前
|
机器学习/深度学习 自然语言处理 搜索推荐
【机器学习】揭秘!机器学习如何助力我们高效优化文本?
【机器学习】揭秘!机器学习如何助力我们高效优化文本?
30 0
|
2天前
|
机器学习/深度学习 数据挖掘 物联网
【专栏】利用机器学习优化数据中心的能效
【4月更文挑战第27天】随着信息技术发展,数据中心能耗问题日益突出,占全球电力消耗一定比例。为提高能效,业界探索利用机器学习进行优化。本文讨论了机器学习如何通过预测性维护、负载预测、动态冷却管理和能源效率优化提升数据中心能效。然而,数据质量、模型解释性和规模化扩展是当前挑战。未来,随着技术进步和物联网发展,数据中心能效管理将更智能自动化,机器学习将在实现绿色高效发展中发挥关键作用。
|
5天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的最佳实践
【4月更文挑战第25天】 在数据驱动的时代,机器学习已成为创新和效率提升的关键工具。本文将探讨一系列实用的策略和技术,旨在帮助读者构建出更高效、更精确的机器学习模型。我们将从数据处理开始,讨论特征选择的重要性以及如何避免过拟合,接着深入到模型选择与优化,最后讨论模型部署和维护的实践要点。通过遵循这些最佳实践,读者能够提升其机器学习项目的成功率并实现更好的业务成果。
|
7天前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的最佳实践
【4月更文挑战第23天】在数据驱动的时代,机器学习已成为创新的核心动力。本文深入探讨了构建高效机器学习模型的关键步骤,包括数据预处理、特征工程、模型选择、训练技巧以及性能评估。通过实例分析与经验总结,旨在为从业者提供一套实用的技术指南,帮助他们在复杂数据环境中提升模型的准确性和泛化能力。
|
1天前
|
机器学习/深度学习 存储 人工智能
人工智能平台PAI产品使用合集之是否可以在模型部署发布后以http接口形式提供给业务开发人员使用
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5天前
|
机器学习/深度学习 存储 监控
利用机器学习优化数据中心冷却效率
【4月更文挑战第25天】在数据中心的运营成本中,冷却系统占据了一大块。随着能源价格的不断攀升以及环保意识的增强,如何降低冷却系统的能耗成为了一个亟待解决的问题。本文提出了一种基于机器学习的方法来优化数据中心的冷却效率,通过实时监控和数据分析,动态调整冷却设备的工作状态,以达到节能的目的。实验结果表明,该方法可以显著降低数据中心的能耗,同时保证服务器的正常运行。
|
5天前
|
机器学习/深度学习 数据挖掘 数据中心
利用机器学习优化数据中心能效的策略研究
【4月更文挑战第24天】在数据中心管理和运营中,能效优化是一个长期存在的挑战,它直接关系到成本控制和环境影响的减轻。随着人工智能技术的不断进步,特别是机器学习(ML)方法的广泛应用,为解决数据中心能效问题提供了新的途径。本文旨在探讨如何通过机器学习技术对数据中心的能源消耗进行建模、预测和优化,以实现更高的能效。我们首先分析了数据中心能耗的主要组成部分,然后提出了一种基于机器学习的能效优化框架,并详细阐述了关键技术和方法。最后,通过实验验证了所提出策略的有效性,并讨论了未来的研究方向。
|
6天前
|
机器学习/深度学习 算法 搜索推荐
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
33 12

热门文章

最新文章