特征工程 – Feature Engineering

news2024/12/23 23:09:33

特征工程是机器学习工作流程中重要的组成部分,他是将原始数据「翻译」成模型可理解的形式。

特征工程的重要性

基于大量数据的简单模型优于基于少量数据的复杂模型。

更多的数据优于聪明的算法,而好的数据优于多的数据。

所以,如何基于给定数据来发挥更大的数据价值就是特征工程要做的事情。

在16年的一项调查中发现,数据科学家的工作中,有80%的时间都在获取、清洗和组织数据。构造机器学习流水线的时间不到20%。详情如下:

数据科学家的工作中,有80%的时间都在获取、清洗和组织数据

  • 设置训练集:3%
  • 清洗和组织数据:60%
  • 收集数据集:19%
  • 挖掘数据模式:9%
  • 调整算法:5%
  • 其他:4%

什么是特征工程

我们先来看看特征工程在机器学习流程中的位置:

特征工程在机器学习流程中的位置

从上图可以看出,特征工程处在原始数据和特征之间。他的任务就是将原始数据「翻译」成特征的过程。

特征:是原始数据的数值表达方式,是机器学习算法模型可以直接使用的表达方式。

特征工程是一个过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能。

这么说可能不太好理解。其实特征工程跟做饭很像:

我们将食材购买回来,经过清洗、切菜,然后开始根据自己的喜好进行烹饪,做出美味的饭菜。

 

上面的例子中:

食材就好像原始数据

清洗、切菜、烹饪的过程就好像特征工程

最后做出来的美味饭菜就是特征

人类是需要吃加工过的食物才行,这样更安全也更美味。

机器算法模型也是类似,原始数据不能直接喂给模型,也需要对数据进行清洗、组织、转换。

最后才能得到模型可以消化的特征。

除了将原始数据转化为特征之外,还有2个容易被忽视的重点:

重点1:更好的表示业务逻辑

特征工程可以说是业务逻辑的一种数学表达。

我们使用机器学习的目的是为了解决业务中的特定问题。相同的原始数据有很多种转换为特征的方式,我们需要选择那些能够「更好的表示业务逻辑」,从而更好的解决问题。而不是那些更简单的方法。

重点2:提高机器学习性能

性能意味着更短时间和更低成本,哪怕相同的模型,也会因为特征工程的不同而性能不同。所以我们需要选择那些可以发挥更好性能的特征工程。

评估特征工程性能的4个步骤

特征工程的业务评估很重要,但是方法五花八门,不同业务有不同的评估方法。

 

  1. 在应用任何特征工程之前,得到机器学习模型的基准性能
  2. 应用一种或多种特征工程
  3. 对于每种特征工程,获取一个性能指标,并与基准性能进行对比
  4. 如果性能的增量大于某个阈值,则认为特征工程是有益的,并在机器学习流水线上应用

例如:基准性能的准确率是40%,应用某种特征工程后,准确率提升到76%,那么改变就是90%。

(76%-40%)/ 40%=90%

总结

特征工程是机器学习流程里最花时间的工作,也是最重要的工作内容之一。

特征工程定义:是一个过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能。

特征工程容易被忽略的2个重点:

  1. 更好的表示业务逻辑
  2. 提高机器学习性能

特征工程性能评估的4个步骤:

  1. 在应用任何特征工程之前,得到机器学习模型的基准性能
  2. 应用一种或多种特征工程
  3. 对于每种特征工程,获取一个性能指标,并与基准性能进行对比
  4. 如果性能的增量大于某个阈值,则认为特征工程是有益的,并在机器学习流水线上应用

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

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

相关文章

CSS中如何实现背景图片的平铺和定位?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 平铺背景图片⭐ 背景图片定位⭐ 同时设置平铺和定位⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是…

AcWing 2058. 笨拙的手指(每日一题)

大家好 我是寸铁 如果你觉得这篇题解对你有用,可以动动手点个赞或关注,谢谢~ 题目描述 输入的第一串字母,存在一位错误。 输入的第二串字母,存在一位错误。 答案保证唯一解 我们需要去枚举每一位,找到二进制和三进制…

pytest笔记: pytest单元测试框架

第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…

web浏览器使用FileSystem的API进行本地文件的存储

作者:程序员CKeen 博客:http://ckeen.cn 长期坚持做有价值的事!积累沉淀,持续成长,升维思考!希望把编码作为长期兴趣爱好😄 目录 1. 背景2. Web端本地File操作的API3. File and Directory Entri…

战略形成是权力妥协的过程,江湖,政治是常态

战略权力派:战略形成是各种权力妥协的过程【安志强趣讲270期】 趣讲大白话:有人的地方就有政治 **************************** 有人的地方就有江湖 有组织的地方就有政治 公司的战略是各种人的权力博弈的产物 围观权力:就是组织内部 宏观权力…

点可云进销存开源系统V6.0.1 ERP系统进销存源码仓库管理

介绍 点可云进销存系统,基于thinkphplayui开发。 功能包含:采购、销售、零售、多仓库管理、财务管理等功能 和超详细的报表功能(采购报表、销售报表、零售报表、仓库报表、资金报表等) 软件架构 thinkphplayui 功能概览 购货 -购…

【深度学习】实验03 特征处理

文章目录 特征处理标准化归一化正则化 特征处理 标准化 # 导入标准化库 from sklearn.preprocessing import StandardScalerfrom matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt import warnings warnings.filterwarnings("ignore&quo…

利用阿里云服务器公网IP+FRP搭建内网穿透

1 必要条件: 一台公网IP服务器,这里采用阿里云ECS服务器。 此处将IP定义为:serverA-IP 2 服务器下载代码: # mkdir /data # cd /data # git clone https://github.com/fatedier/frp.git # cd frp3 编译代码 编译需要时间 # make go fmt .…

【Redis从头学-13】Redis哨兵模式解析以及搭建指南

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

第4节——react 中如何编写样式

一、内联样式 内联样式就是在JSX元素中,直接定义行内的样式。与普通的HTML内联样式唯一的区别就是,JSX中的内联样式是一个对象,而不是一个字符串。 import React from reactexport default class LearnStyle extends React.Component {rend…

CSS中如何实现文字阴影效果(text-shadow)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现思路⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前…

【Linux操作系统】Linux系统编程中的读写锁

文章目录 1.读写锁的原理2.提供的操作函数示例代码4.示例解释 1.读写锁的原理 读写锁(Read-Write Lock)是一种特殊的锁机制,用于在多线程环境下对共享资源进行读写操作。与互斥锁不同,读写锁允许多个线程同时读取共享资源&#x…

多图详解VSCode搭建Java开发环境

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

JavaSE学习——异常

目录 一、异常概述 二、异常的体系结果 二、异常的处理:抓抛模型 三、try-catch-finally的使用 四、throws 异常类型 的使用 五、开发中如何选择使用try-catch-finally还是使用throws? 六、自定义异常 自定义异常步骤: 七、总结&a…

Android 13 - Media框架(7)- NuPlayer::Source

Source 在播放器中起着拉流(Streaming)和解复用(demux)的作用,Source 设计的好坏直接影响到播放器的基础功能,我们这一节将会了解 NuPlayer 中的通用 Source(GenericSource)关注本地…

MySQL数据库——多表查询(1)-多表关系(一对多、多对对多、一对一)、多表查询概述(概念、笛卡尔积、分类)

目录 概述 多表关系 一对多(多对一) 多对多 一对一 多表查询概述 概念 笛卡尔积 分类 多表查询 多表关系多表查询概述内连接外连接自连接子查询多表查询案例 概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及…

框架分析(6)-Ruby on Rails

框架分析(6)-Ruby on Rails 专栏介绍Ruby on Rails核心概念以及组件讲解MVC架构模式约定优于配置强大的ORM支持自动化测试丰富的插件生态系统RESTful路由安全性总结 优缺点优点快速开发简单易学MVC架构强大的ORM支持大量的插件和Gem支持 缺点性能问题学习…

【Go 基础篇】Go语言数组遍历:探索多种遍历数组的方式

数组作为一种基本的数据结构,在Go语言中扮演着重要角色。而数组的遍历是使用数组的基础,它涉及到如何按顺序访问数组中的每个元素。在本文中,我们将深入探讨Go语言中多种数组遍历的方式,为你展示如何高效地处理数组数据。 前言 …

从零做软件开发项目系列之六——软件测试

前言 软件测试是指在软件开发过程中对软件系统进行验证和验证的过程。它的目的是确保软件能够按照设计要求正常运行,同时检测和纠正可能存在的缺陷和问题。软件测试有助于提高软件质量、可靠性和用户满意度。 1 测试阶段 软件测试阶段是软件开发过程中的重要环节…