零基础入门 Spark
吴磊
前 FreeWheel 机器学习研发经理
19171 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
零基础入门 Spark
15
15
1.0x
00:00/00:00
登录|注册

25 | 特征工程(下):有哪些常用的特征处理函数?

你好,我是吴磊。
在上一讲,我们提到,典型的特征工程包含如下几个环节,即预处理、特征选择、归一化、离散化、Embedding 和向量计算,如下图所示。
特征工程一览 & Spark MLlib特征处理函数分类
在上一讲,我们着重讲解了其中的前 3 个环节,也就是预处理、特征选择和归一化。按照之前的课程安排,今天这一讲,咱们继续来说说剩下的离散化、Embedding 与向量计算。
特征工程是机器学习的重中之重,只要你耐心学下去,必然会不虚此行。这一讲的最后,我还会对应用了 6 种不同特征工程的模型性能加以对比,帮你深入理解特征工程中不同环节的作用与效果。

特征工程

特征工程进度打卡
在上一讲,我们打卡到了“第三关”:归一化。因此,接下来,我们先从“第四关”:离散化说起。

离散化:Bucketizer

与归一化一样,离散化也是用来处理数值型字段的。离散化可以把原本连续的数值打散,从而降低原始数据的多样性(Cardinality)。举例来说,“BedroomAbvGr”字段的含义是居室数量,在 train.csv 这份数据样本中,“BedroomAbvGr”包含从 1 到 8 的连续整数。
现在,我们根据居室数量,把房屋粗略地划分为小户型、中户型和大户型。
BedroomAbvGr离散化
不难发现,“BedroomAbvGr”离散化之后,数据多样性由原来的 8 降低为现在的 3。那么问题来了,原始的连续数据好好的,为什么要对它做离散化呢?离散化的动机,主要在于提升特征数据的区分度与内聚性,从而与预测标的产生更强的关联
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了特征工程中的离散化处理函数及其在Spark MLlib框架中的应用。通过详细讲解Bucketizer函数的使用方法,阐述了离散化处理对提升特征数据区分度与内聚性的重要性。此外,文章还涵盖了Embedding方法和向量计算在特征工程中的应用,并通过代码示例和数据对比展示了离散化处理的实际操作及效果。值得一提的是,文章还提到了Spark MLlib框架中的Embedding方法OneHotEncoder的具体用法,以及向量计算在特征工程中的重要性。总的来说,本文内容深入浅出,适合技术人员快速了解特征工程中离散化处理的方法和应用。文章内容涵盖了特征工程的关键环节,为读者提供了全面的技术指导。文章还通过对比不同特征处理方法对应的模型效果,强调了特征工程对模型性能提升的重要性。整体而言,本文对特征工程中的关键概念和方法进行了全面而深入的介绍,为读者提供了宝贵的学习资源。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础入门 Spark》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • Geek_d4ccac
    老师好!我印象中如果优化用到了梯度下降(比如说linear regression)那一定要做归一化,但这一节里面最后的model里把特征选择后的top20(没归一化)都放到了特征向量里,这样不会使优化不稳定么, 实际工作中是不是还是要尽量都归一化或者离散化呢?还有一个问题就是如果归一化和离散化包含了特征选择剔除的原始特征,这样会不会引入额外的noise呢,换句话说,归一化和离散化是不是要基于特征选择之上呢?谢谢!

    作者回复: 好问题,其实坦白说,这样的问题,没有唯一的答案,或者说,就没有标准答案。特征工程也好,模型训练也罢,其实都是为模型效果服务的。而模型效果,其实很多时候并不取决于单一因素,往往是多种因素的叠加。咱们的入门篇,其实更多地,是给大家介绍,Spark MLlib子框架,都能提供哪些能力,允许开发者自由地选择、搭配。 回答你的问题,至于先归一化、再特征选择,还是先特征选择、再归一化,我更倾向于后者,就是先特征选择,然后再考虑归一化、离散化。当然,其实这并不绝对,很多时候,离散化与否,决定了特征本身的区分度,也许离散化之前,特征不会入选,但离散化之后,特征因为区分度的变化,可以入选。 机器学习本身,更偏向于实践科学,我们往往会有一些大面上的理论指导或者说方向,然后以效果为导向去做特征工程、模型调优。所以说,还是那句话,关于特征工程中的顺序问题,我觉得没有标准答案。咱们课程中按顺序介绍,其实仅仅是方便大家在逻辑上理解特征工程的不同环节,不同环节通常情况下确实会有先后之分,但是并不绝对,可能我在原文补充上这句话,更好一些~

    2021-11-08
    2
    3
  • 千里马
    老师好,我想问下,中间的“特征选择”、“归一化”、“离散化”、“Embedding”是不是都可以根据实际情况选择性进行,但最后一步“向量计算”是必须进行的?

    作者回复: 没错~ 老弟概括的极为精辟,就是这么回事!向量计算是必须的,因为模型只能消费这样的数据。而至于特征工程中的各个环节,如你提到的“特征选择”、“归一化”、“离散化”、“Embedding”,实际上都是结合实践与效果有选择地进行取舍

    2021-11-10
    1
  • Alex
    oheEncoder 对象只有 transformSchema 方法,没有transform(engineeringData)这个方法。。。。
    2022-12-30归属地:广东
    2
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部