《机器学习高频面试题详解》4.1:特征工程

点击上方卡片链接就可以进入专栏,专栏右上角有订阅选项,欢迎大家订阅~

前言

大家好,我是鬼仔,今天带来《机器学习高频面试题详解》专栏的第四章第一节内容:特征工程这是鬼仔第一次开设专栏,每篇文章鬼仔都会用心认真编写,希望能将每个知识点讲透、讲深,帮助同学们系统性地学习和掌握机器学习中的基础知识,希望大家能多多支持鬼仔的专栏~

目前这篇是试读,后续的文章需要订阅才能查看哦,专栏预计更新30+篇文章(只增不减),具体内容可以看专栏介绍,大家的支持是鬼仔更新的动力!

本文大纲

一、原理

1. 数据分析EDA

2. 特征选择

3. 特征表达

4. 特征预处理

二、面试真题

1. 为什么要进行特征选择?

2. 特征选择和特征提取的区别?

3. 为什么要处理类别特征?怎么处理?

4. 什么是特征组合?

5. 如何处理数据中的噪音?

6. 数据不平衡如何处理?

一、原理

1. 数据分析EDA

探索性数据分析(Exploratory Data Analysis,EDA)是一种用于总结、可视化和解释数据集中的主要特征和模式的方法。在进行机器学习或统计建模之前,EDA通常是数据分析过程的初始步骤,旨在帮助我们更好地理解数据,发现潜在的异常或错误,以便后期更好地进行特征工程和建立模型,是数据挖掘中十分重要的一步。

所需工具:数据科学库(pandas、numpy、scipy)、可视化库(matplotlib、seabon)

2. 特征选择

在实际业务中,往往存在很多特征,有些特征可能与目标变量高度相关,而其他特征可能与目标变量关系较弱或无关。此外,在高维数据集中,特征之间可能存在共线性或多重共线性,这会导致模型性能下降。因此,在训练机器学习模型之前,进行特征选择是非常重要的。

特征选择是指从原始数据中选择最具预测能力的变量(特征)子集的过程,即寻找最优特征子集。原则上是尽量不错过一个可能有用的特征,但是也不滥用太多的特征。

特征选择的方法主要分为三大类:

  • 过滤法:基于特征本身的统计属性(如相关性、互信息等)来评估特征的重要性,而不考虑特定模型。过滤方法通常在模型训练之前进行,可以快速筛选出最具预测能力的特征。常用的评估指标有:方差、皮尔逊相关系数、卡方检验和最大信息系数等。
  • 包裹法:根据特定模型的性能来评估特征子集的质量。包裹方法通过搜索特征空间并训练模型来寻找最佳特征子集。这些方法通常比过滤方法更准确,但计算成本较高。例如,递归特征消除(RFE)、前向选择和后向消除等。
  • 嵌入法:在模型训练过程中自动执行特征选择。嵌入方法将特征选择与模型训练结合在一起,从而在保持模型性能的同时实现特征选择。例如,LASSO回归、岭回归和基于树的模型(如随机森林和梯度提升树)等。

3. 特征表达

在选择完特征之后,特征表达的目的是提取数据中的关键信息,将一个个的样本抽象成数值向量,以便模型能够捕捉到数据中的潜在模式和结构。一个好的特征表达可以显著提高模型的性能和泛化能力。

特征表达的方法因数据类型和任务需求而异,可能包括预处理、编码、向量化和特征提取等操作。一些常见数据类型的特征表达方法分类:

  • 数值数据:数值数据通常可以直接用作机器学习模型的输入。然而,在某些情况下,可能需要对数据进行预处理,例如缩放、归一化、标准化或离散化等操作,以提高模型性能。
  • 类别数据:类别数据(如颜色、品牌、类别等)通常需要进行编码,以便将其转换为数值形式。常见的编码方法包括独热编码(One-Hot Encoding)、标签编码(Label Encoding)和目标编码(Target Encoding)等。
  • 文本数据:文本数据需要经过预处理(如分词、去停用词、词干提取等)和向量化(将文本转换为数值向量)操作。常见的文本向量化方法包括词袋模型(Bag of Words)、TF-IDF、Word2Vec、GloVe和BERT等。
  • 图像数据:图像数据通常需要经过预处理(如缩放、裁剪、翻转等)和特征提取操作。特征提取方法包括手工特征(如SIFT、SURF和HOG等)和深度学习特征(如卷积神经网络(CNN)中的特征图等)。
  • 时间序列数据:时间序列数据需要考虑数据的时序特性。特征表达方法包括滑动窗口、时间滞后、傅里叶变换、小波变换以及循环神经网络(RNN)和长短时记忆网络(LSTM)等。

4. 特征预处理

在机器学习中,特征预处理是在将数据输入模型之前对原始数据进行转换或处理的过程。特征预处理的目的是提高数据质量、消除噪声和异常值、减少特征之间的尺度差异,从而提高模型的性能和泛化能力。

一些常见的特征预处理方法:

  • 数据清洗:数据清洗是指纠正数据中的错误、填充缺失值、删除重复值和异常值等操作。数据清洗可以提高数据质量,从而提高模型性能。
  • 归一化:归一化是将特征向量调整为单位范数的过程。归一化可以提高模型性能,特别是在使用欧几里得距离或内积的算法中。常见的归一化方法包括L1归一化、L2归一化和最大归一化等。
  • 标准化:标准化是将特征值调整为均值为0、标准差为1的分布的过程。标准化可以消除特征之间的尺度差异,从而提高模型性能。常见的标准化方法包括Z-score标准化和鲁棒标准化等。
  • 异常特征样本清洗:异常特征样本清洗是识别并处理数据中的离群值和异常点的过程。异常

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

机器学习高频面试题详解 文章被收录于专栏

专栏作者曾在校招期间拿到包括字节、微信和华为等多家大厂的SSP offer,该专栏主要是为了帮助同学们系统性地学习和掌握机器学习中的基础知识。专栏详细地整理了各大厂的算法岗面经,力争深入浅出地讲解重要知识点,适合人群为准备校招或者实习,且目标岗位为算法岗、数据挖掘岗或者数据分析岗的同学。

全部评论

相关推荐

一面(1)死锁的两种原因(2)模型量化的方式,我说kv cache和参数量化,面试官问量化是怎么提高推理加速的效率,我答不太上来(3)transformer自注意力层的时间复杂度(4)stack和dequeue的区别(5)算法题:有效ip地址一面面试官是我遇到最善良的面试官,他对跨专业同学的包容性大到难以置信。也很感谢他的宽容和鼓励。最后反问环节,他跟我举了jieba分词的例子,鼓励我要多看代码,掌握好基础知识,很多时候实际应用就是利用大量基础知识来展开实现的。很可惜,他base北京,最终要去的是深圳,没办法找他当我mentor二面印象最深刻的问题是知识蒸馏技术路线。当时我介绍自己的项目,项目是关于bert模型知识蒸馏的。这个项目本身是偏指标驱动的,只要达到一定加速比/参数压缩比和一定范围内的精度损失即可。而面试官则提问我是否有做过文献和技术路线的调研,这部分我没答太好。幸好后面讲自己的工作就比较顺利了。算法题是字节经典题目“螺母螺栓匹配次数计算”,有兴趣的同学可以去查查。至于有没有问八股我记不太清了三面以后的规划、以前项目遇到什么难点+如何解决hr面论文等级、几作、贡献是什么;用几个词评价自己;为了面试做了什么准备;对面试岗位的理解;简单介绍自己的项目;能实习多久;研究生成绩怎样(因为我是转专业的学生,所以hr可能比较关心) #腾讯# #机器学习# #cdg# #算法#
查看15道真题和解析
点赞 评论 收藏
转发
2 12 评论
分享
牛客网
牛客企业服务