机器学习之特征工程详解

news2024/11/17 13:34:28

特征工程是指使用专业的背景知识和技巧处理数据,使得特征能在机器学习算法上发生更好的作用的过程。更好的特征意味着更强的灵活性,只需简单模型就能得到更好的结果,因此,特征工程在机器学习中占有相当重要的地位,可以说是决定结果成败的最关键和决定性的因素。

本文以特征工程的基本概念为引,着重介绍了特征工程的主要工作流程和实现方法,供大家学习参考。

1.特征工程的基本定义

维基百科中给特征工程做出了简单定义:特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。

简而言之,特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。从数学的角度来看,特征工程就是人工地去设计输入变量X。

英文解释能帮助我们更好地理解特征工程:

Feature Engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models,resulting in improved model accuracy on unseen data.

以性别判断为例做一个形象的比喻:

如何提取特征,能更准确地判断一个人的性别?如果以这个人戴不戴眼镜为特征数据,显然这是一个相关性很低的数据,我们很难从这个特征中得出性别结果;如果以有无喉结为特征数据,一般来说有喉结的为男性,反之为女性,这个特征能判定绝大多数情况,误差相对较小;如果以Y染色体为特征数据,那么拥有Y染色体的为男性,没有Y染色体的为女性,这个特征能判定所有情况,误差为零。

可见,特征的选取对模型的性能表现十分重要。

剔除无关数据,选取更贴切的特征展示和描述数据,使之与结果具有高相关性的过程,就是特征工程。

因此,特征工程其实是一个如何展示和表现数据的问题,在实际工作中需要把数据以“良好”的方式展示出来,使得能够使用各种各样的机器学习模型来得到更好的结果。如何从原始数据中去除不佳的数据,展示合适的数据成了特征工程的关键问题。

2.特征工程的意义

·特征越好,灵活性越强

只要特征选得好,即使是一般的模型(或算法)也能获得很好的性能,因为大多数模型(或算法)在好的数据特征下表现的性能都还不错。好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护。

·特征越好,构建的模型越简单

有了好的特征,即便你的参数不是最优的,你的模型性能也能仍然会表现的很nice,所以你就不需要花太多的时间去寻找最有参数,这大大的降低了模型的复杂度,使模型趋于简单。

·特征越好,模型的性能越出色

特征工程的最终目的就是提升模型的性能。

3. 特征工程的工作流程

特征工程的基本工作流程可以分为四步:

·特征使用 (数据选择,可用性)

·特征获取 (特征来源,特征存储)

·特征处理 (数据清洗,特征预处理)

· 特征监控 (现有特征,新特性)

如下图所示:
在这里插入图片描述

1. 特征使用:

·基于业务理解和业务目标,尽可能找出对因变量有影响的所有自变量;

·数据可用性评估,评估方向包括:获取难度、覆盖率、准确率。

2. 特征获取:

1)获取途径

·如何获取特征(接口调用/github下载等)

·如何存储(数据库/csv/txt/dataframe等)

3. 特征处理

3.1特征清洗

·数据采集

采集数据前,需要明确哪些数据对最后的预测结果使用帮助的,是否可采集到,

在线上实时计算时数据获取是否快捷;

·数据清洗

除去“脏”的数据;

如何判定脏数据?

1)简单属性判定:一个人身高3米+的人、一个人一个月买了10w的发卡,显然不合情理;

2)组合或统计属性判定:声称在美国ip却一直是大陆的新闻阅读用户、判定一个人是否会买篮球鞋,样本中却绝大部分为女性用户;

3)补齐可对应的缺省值:不可信的样本丢掉,缺省值极多的字段考虑不用。

·数据采样

采集清洗过数据之后,正负样本是不均衡的,要进行数据采样。(正负样本的概念可以简单理解为正样本是待检测的目标,比如检测人脸时,人脸是正样本,非人脸则是负样本)

采样的方法有随机采样、分层采样等,随机采样得到的数据可能会很不均匀,更多的是根据特征采用分层抽样。

3.2预处理

通过特征提取,我们能得到未经处理的特征,这时的特征还需要进行进一步处理。

·去重处理:

对于重复值进行削减

·缺失值处理:

可能会出现一些暂时无法获取的信息,被遗漏的信息,不存在属性信息等。

缺失值解决办法:

-直接删除(仅有少量样本缺失时可尝试使用)

-插值补全特征值

1)均值/中位数/众数补全

均值补全–样本属性可度量

中位数/众数–样本属性距离不可度量

2)固定数值补全

3)模型预测

建立一个模型预测缺失的数据。即用其他特征做预测模型,来算出缺失特征,但若缺失特征与其他变量之间没有太大相关,预测结果将会不准确。

4)高维映射

把特征映射到高维空间。

将属性映射到高维空间,采用独热编码(one-hot)技术。将包含 K 个离散取值范围的属性值扩展为 K+1 个属性值,若该属性值缺失,则扩展后的第 K+1 个属性值置为 1。

这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值;缺点是计算量大大提升,且只有在样本量非常大的时候效果才好。

数据变换:

单个特征上的规范化、离散化、稀疏化。

1)规范化处理

也就是数据的归一化和标准化。

数据中不同的特征由于量纲往往不同,数值间差距可能非常大,会影响到数据分析的结果。需要对数据按照一定比例进行缩放,保持数据所反映的特征信息的同时,使之落在合理范围内,便于进行综合分析。

常用方法包括:

线性归一化:
在这里插入图片描述

非线性数据变换:

对数函数log x,常用于数据量级非常大的场合;

反正切函数
在这里插入图片描述

用于将角频率转换到[-1,1]范围内;

标准化
在这里插入图片描述

使数据服从标准正态分布。

2)离散化处理

指将连续的数据进行分段,称为离散化的区间。分段的原则有基于等距离、等频率等方法。

离散化的原因是因为一些模型是基于离散的数据的,如决策树。有效的离散化能减少算法的空间时间开销,提高系统对样本的分类聚类能力和抗噪声能力。

3)稀疏化处理

对于离散型类别标签数据,通常将其做0、1哑变量的稀疏化。尤其将原始字符串心事的数据数值化。除了决策树等少量模型能直接处理字符串输入,对于逻辑回归、SVM等来说,数值化处理是必须的。

如果特征的不同值较多,则根据频数,所有出现次数较少的值可以归为同一类。

一般采用的方法有Ordinal Encoding、One-hot Encoding、Binary Encoding。

特征选择

在训练机器学习模型之前,特征选择是一个很重要的预处理过程,之所以进行特征选择,原因有:

1)现实任务中经常遇到维数灾难问题,如果能选择出重要特征,再进行后续学习过程,可以减轻维数灾难;

2)去除不相关的特征往往会降低学习任务的难度,使模型更易理解;

3)去除不相关的变量还可以尽量减少过拟合的风险,尤其是在使用人工神经网络或者回归分析等方法时,额外的输入变量会增加模型本身的额外自由度。

常见的特征选择方法

1)Filter(过滤式)

按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。通过卡方检验、皮尔逊相关系数、互信息等指标判断哪些维度重要,剔除不重要的维度。与学习器无关。

2)Wrapper(包裹式)

使用一个基模型进行多轮训练,每次选择若干特征,或者排除若干特征。根据目标函数(通常是预测效果评分),来决定各特征是否重要。通常结合遗传算法或模拟退火算法等搜索方法来对选取特征。

3)Embedding(嵌入式)

该方法基于机器学习的算法和模型进行训练,学习器通过训练自动对特征进行选择。如使用L1范数作为惩罚项的线性模型(例如lasso回归)会得到稀疏解,大多数特征对应的系数为0。从而实现了特征选择。

降维

当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。
在这里插入图片描述

正常角度下的维度
在这里插入图片描述

映射后的线性维度

LDA(线性判别分析)与PCA(主成分分析)都是常用的降维方法,二者的区别在于:

·出发思想不同。PCA主要是从特征的协方差角度,去找到比较好的投影方式,即选择样本点投影具有最大方差的方向( 在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。);而LDA则更多的是考虑了分类标签信息,寻求投影后不同类别之间数据点距离更大化以及同一类别数据点距离最小化,即选择分类性能最好的方向。

·学习模式不同。PCA属于无监督式学习,因此大多场景下只作为数据处理过程的一部分,需要与其他算法结合使用,例如将PCA与聚类、判别分析、回归分析等组合使用;LDA是一种监督式学习方法,本身除了可以降维外,还可以进行预测应用,因此既可以组合其他模型一起使用,也可以独立使用。

·降维后可用维度数量不同。LDA降维后最多可生成C-1维子空间(分类标签数-1),因此LDA与原始维度N数量无关,只有数据标签分类数量有关;而PCA最多有n维度可用,即最大可以选择全部可用维度。

4. 特征监控

我们想知道一个特征是否真的靠谱,在时间有限的情况下,每次选择表现最好的特征加入到模型训练中,这个时候就需要进行特征评估,特征评估可以从以下几个维度进行衡量:

4.1特征自身的质量

·特征覆盖度,这个指标是衡量某个特征能够影响的样本量,一般情况下,会排查覆盖度特别低的

·特征的准确性,也就是说特征值是否考虑,会不会存在太多错误数据

·特征方差,衡量特征是否有区分度,比如 100 个训练样本,有 99 个是 0,那么这个特征方差就特别低,肯定有问题。

4.2特征与目标值的相关性

·相关系数

·单特征 AUC

总结:

特征工程是将原始数据转化为特征,更好表示预测模型处理的实际问题,提升对于未知数据的准确性。它是用目标问题所在的特定领域知识或者自动化的方法来生成、提取、删减或者组合变化得到特征。借用业界广泛流传的一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

参考链接:

1.https://www.jianshu.com/p/1ba9b7f14d9b

2.https://www.cnblogs.com/kukri/p/8566287.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pwr | 谁说样本量计算是个老大难问题!?(一)(分类变量篇)

1写在前面 估算前瞻性研究的样本量是我们在招募受试者之前首先要做的事情之一。😘 招募受试者太少会无法得到准确的答案,招募的太多又是巨大的浪费,所以需要估算最佳的受试者数量。🧐 本期我们介绍一下如何使用pwr包进行样本量的估…

Android性能优化——内存泄漏的根本原因

什么是内存泄露 什么是内存泄露,通俗的来说就是堆中的一些对象已经不会再被使用了,但垃圾收集器却无法将它们从内存中清除。 内存泄漏很严重的问题,因为它会阻塞内存资源并随着时间的推移降低系统性能。如果不进行有效的处理,最…

CS5518设计MIPI转LVDS转换方案/MIPI转LVDS方案芯片

CS5518是一个MIPI DSI输入,LVDS输出转换芯片。MIPI DSI最多支持4个车道,每个车道的最大运行速度 为1Gbps。LVDS支持18或24位像素,25MHz到154MHz,通过VESA或JEIDA格式。它只能使用一个1.8V电源,节省 成本,优…

Linux下的目录结构Linux基本命令(程序员必学)

目录 1.Linux下的目录结构 2.Linux的常用命令 2.1.# 与 $ 提示的区别 2.2.ifconfig 查看ip地址 2.3.su 命令格式 2.4.cd 2.5. 目录查看 2.6. 查看文件内容 2.7.创建目录及文件 2.8.复制和移动 2.9.其他 3. vim一般使用 1.Linux下的目录结构 /usr全称&#xff08…

Live Home 3D Pro - 用于公寓和房屋的室内设计,支持 3D 实时渲染

Live Home 3D Pro - 用于公寓和房屋的室内设计,支持 3D 实时渲染 Live Home 3D Pro是一个直观的应用程序,用于公寓和房屋的室内设计,以及几乎任何复杂的景观。专业版提供了一套扩展的工具和独特的出口质量。 下载 ► Live Home 3D Pro 下载安…

Java反射专题——基础知识一

反射 反射机制 java Reflection 反射机制允许程序在执行期借助于Reflection Api取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。加载完类之…

我眼中的代理模式

一.什么是代理模式? 举个简单的例子就是比如你相亲的女孩想跟你要个10W彩礼,但是她不好意思直接跟你说啊。这时候就媒婆就说我去跟小伙子说。有什么回应我告诉你。然后媒婆就先夸女方怎么怎么优秀,然后落到中心思想要钱。这里面相亲的女孩子就…

PL点亮LED灯

PL点亮LED灯 LED硬件 开发板在PL端给了一个LED灯,电压给低的时候才导通,才亮。然后需要看原理图确定具体是用的PL的哪个管脚以便进行控制。 Vivado 工程创建 打开创建新工程选择工程名和工程目录(不能有中文路径,也不能太长&…

什么品牌的蓝牙耳机音质最好?高品质蓝牙耳机排行榜

近年来,大量的蓝牙耳机品牌厂商涌入市场,蓝牙耳机的需求不断提高,但质量一直是人们担心的问题,今天就为大家盘点几款当前音质表现不错的真无线蓝牙耳机。 一、南卡小音舱蓝牙耳机 发声单元:13.3mm 网友推荐系数&…

hex文件格式剖析,以及hex与bin文件互相转换

大家好,我是学电子的小白白。 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载到单片机…

【SpringBoot项目实战】图片压缩包上传、解压、存储等等一套流程教学

【SpringBoot项目实战】图片压缩包上传、解压、存储等等一套流程教学前言一、压缩包上传1、接口实现2、获取压缩包的文件名和文件路径二、压缩包解压并保存1、处理压缩包文件方法解压缩步骤:2、接口中实现处理压缩包三、总结前言 之前一直用的zip4j来对压缩包进行操…

开源项目推荐 | 中科院自动化所历时9年打造的类脑认知智能引擎“智脉”正式开源部署至OpenI启智社区

​人脑能够自组织地协同数百项认知功能,灵活适应复杂多变的环境。如何整合多尺度生物可塑性法则来构建具有生物合理性和计算高效性的神经网络模型是类脑人工智能和计算神经科学领域共同关注和面临的重要挑战。 中国科学院自动化研究所类脑认知智能研究组历时9年&am…

通关算法题之 ⌈动态规划⌋

动态规划 动态规划是什么?解决动态规划问题有什么技巧?如何学习动态规划? 首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求…

蓝桥杯寒假集训第二天(分巧克力)

没有白走的路,每一步都算数🎈🎈🎈 题目描述: 有很多的巧克力块,需要设计一个程序,让手艺师傅切出来的巧克力既满足切出来的巧克力的份数达到客户要求的份数,并且切出来的巧克力块尽…

硬盘图片丢失怎么办?看看这常见的三种恢复方法

电脑硬盘能够帮助我们存储各种各样的数据,比如图片数据,而随着这些充满回忆的图片积累的越来越多,难免会手误删除或其他原因导致丢失,那么对于电脑硬盘上丢失的图片如何恢复呢?在这里你可以了解到硬盘图片丢失常见原因…

python—subprocess模块常用方法介绍

目录 subprocess.run() subprocess.Popen() subprocess.call() subprocess.check_call() subprocess.getstatusoutput() subprocess.getoutput() subprocess.check_output() subprocess是子流程,即进程的意思,该模块可以启动一个新进程&#xff0…

印度电线标准IS 694(R2020),印度插头标准IS 1293(R2020)

印度电线标准IS 694(R2020) https://download.csdn.net/download/std86021/87328675POLYVINYLCHLORIDEINSULATEDUNSHEATHEDANDSHEATH更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/std86021/87328675 补丁一:IS694Amd…

已获1000 万美元战略融资,Web3链游#Delysium 有何魔力?

这周社区推文关注了AIGC在游戏领域中的创新应用,在Web3领域中,有哪些值得关注的链游项目呢?Mixlab小杜AIGC 与游戏机制创新玩法结合已成为潮流趋势,如游戏内容资产生成、智能NPC设计与自定义游戏玩法等都有非常大的探索空间。Web3…

【ACWING】【BFS】【844走迷宫】【845八数码】

一、走迷宫 给定一个 nm的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0表示可以走的路,1 表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一…

CVE复现1

1 CVE-2022-22980 spring Data MongoDB SpEL 表达式注入,Spring Data MongoDB应用程序在对包含查询参数占位符的SpEL表达式使用Query或Aggregation注解的查询方法进行值绑定时,如果输入未被过滤,则容易受到SpEL注入攻击。 影响范围 Spring Data Mongo…