0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

想掌握机器学习技术?从了解特征工程开始

格创东智 2018-12-05 09:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:格创东智科技有限公司 OT团队


人工智能是过去两到三年时间内科技行业最热的话题。而人工智能技术进步的背后,实质上是机器学习快速发展后所带来的巨大提升。


机器学习被广泛定义为“利用经验来改善计算机系统的自身性能”。事实上,“经验”在计算机中主要是以数据的形式存在的,因此数据是机器学习的前提和基础。

在第一期格物汇的文章中,我们介绍了工业数据预处理的方法,主要针对数据格式异常,数据内容异常等问题进行了简要探讨。做数据预处理的主要目的是将杂乱无章的数据规整成我们想要的矩阵、表格、张量等结构,方便在之后的机器学习中进行模型训练。然而数据中的问题还包含了冗余,噪声,高维度,体量大等很多问题。解决这些问题的方法与数据预处理的方法在机器学习中被统称为特征工程,今天我们就来了解一下吧。


特征工程是什么


当你想要你的预测模型性能达到最佳时,你要做的不仅是要选取最好的算法,还要尽可能的从原始数据中获取更多的信息。那么问题来了,你应该如何为你的预测模型得到更好的数据呢?这就是特征工程要做的事,它的目的就是获取更好的训练数据

维基百科中给特征工程做出了简单定义:特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。简而言之,特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。从数学的角度来看,特征工程就是人工地去设计输入变量X


特征工程的重要性


关于特征工程(Feature Engineering),已经是很古老很常见的话题了,坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。由此可见,特征工程在机器学习中占有相当重要的地位


1、特征越好,灵活性越强

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


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

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


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

显然,这一点是毫无争议的,我们进行特征工程的最终目的就是提升模型的性能。


特征工程怎么做

既然特征工程这么重要,那么我们就来看看特征工程到底是如何实现或者工作的。特征工程到底分为哪些内容?我们大致可以参考如下流程图来看看。



简单来说,特征处理主要分如下三个方法:

特征构建

特征构建是指从原始数据中人工的找出一些具有实际意义的特征。需要花时间去观察原始数据,思考问题的潜在形式和数据结构,对数据敏感性和机器学习实战经验能帮助特征构建。除此之外,属性分割和结合是特征构建时常使用的方法。特征构建是个非常麻烦的问题,书里面也很少提到具体的方法,需要对问题有比较深入的理解。

特征抽取

一些观测数据如果直接建模,其原始状态的数据太多。像图像、音频和文本数据,如果将其看做是表格数据,那么其中包含了数以千计的属性。特征抽取是自动地对原始观测降维,使其特征集合小到可以进行建模的过程。通常可采用主成分分析(PCA)、线性判别分析(LDA))等方法;对于图像数据,可以进行线(line)或边缘(edge)的提取;根据相应的领域,图像、视频和音频数据可以有很多数字信号处理的方法对其进行处理。

特征选择

不同的特征对模型的准确度的影响不同,有些特征与要解决的问题不相关,有些特征是冗余信息,这些特征都应该被移除掉。特征选择是自动地选择出对于问题最重要的那些特征子集的过程。常用的特征选择方法可以分为3类:过滤式(filter)、包裹式(wrapper)和嵌入式(embedding)。


小结

总的来说,数据会存在各种各样的问题,针对这些问题我们的特征工程给出了相应的解决办法:1.特征解释能力不足,我们可以尝试使用特征构建,对数据进行升维来提升特征解释能力;2.特征冗余,维度太高,噪声太多,我们可以通过特征抽取和特征选择,来对数据进行降维去噪,提炼特征。当然还有其他的特征处理方法,一般需要根据具体问题而定。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    67

    文章

    8560

    浏览量

    137208
  • 智能制造
    +关注

    关注

    48

    文章

    6281

    浏览量

    80153
  • 工业互联网
    +关注

    关注

    28

    文章

    4397

    浏览量

    96388
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    机器学习特征工程:缩放、编码、聚合、嵌入与自动化

    本文转自:DeepHubIMBA好模型的秘诀不在于更花哨的算法,而在于更好的特征。第1部分:数值特征1.1缩放多数机器学习算法对尺度敏感。一个取值范围在0到1,000,000的列,会在
    的头像 发表于 04-08 14:41 695次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>特征</b><b class='flag-5'>工程</b>:缩放、编码、聚合、嵌入与自动化

    算法工程师需要具备哪些技能?

    算法工程师需要掌握一系列跨学科的技能,涵盖数学基础、编程能力、算法理论、工程实践以及业务理解等多个方面。 以下是具体技能及学习建议: 线性代数核心内容:矩阵运算、
    发表于 02-27 10:53

    机器学习特征工程:分类变量的数值化处理方法

    编码是机器学习流程里最容易被低估的环节之一,模型没办法直接处理文本形式的分类数据,尺寸(Small/Medium/Large)、颜色(Red/Blue/Green)、城市、支付方式等都是典型的分类
    的头像 发表于 02-10 15:58 435次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>特征</b><b class='flag-5'>工程</b>:分类变量的数值化处理方法

    嵌入式单片机开发学习路径

    路径,让你的学习过程更加轻松有趣。 1. 入门基础 1.1 了解嵌入式系统 在开始学习之前,首先需要了解什么是嵌入式系统以及它的基本构
    发表于 02-09 15:42

    嵌入式应掌握的几种能力

    、能力。 我觉得牢牢地掌握这些99.99999%的概率都会用得上的嵌入式软件基础对找工作才比较有利。其它一些技术可以再用的时候再去了解学习。 特别是一些行业相关知识,可以入行之后
    发表于 12-08 06:05

    0到1,10+年资深LabVIEW专家,手把手教你攻克机器视觉+深度学习(5000分钟实战课)

    ;完整技术链,带你掌握工业4.0硬核技能!LabVIEW视觉学习困境1.技术体系复杂,学习路径模糊LabVIEW视觉开发需同时
    的头像 发表于 12-02 08:07 730次阅读
    <b class='flag-5'>从</b>0到1,10+年资深LabVIEW专家,手把手教你攻克<b class='flag-5'>机器</b>视觉+深度<b class='flag-5'>学习</b>(5000分钟实战课)

    学习Linux应该哪里开始

    、交叉编译、网络栈、文件系统……到底哪里开始学,才能既不绕弯路,又能学得“有感觉”? 今天, 深圳市钡铼技术有限公司 就来带你拆解这个问题。 一、先理解:Linux 到底是什么? 很多人学 Linux,一上来就打开虚拟机敲命令
    的头像 发表于 10-16 09:51 557次阅读
    <b class='flag-5'>学习</b>Linux应该<b class='flag-5'>从</b>哪里<b class='flag-5'>开始</b>?

    学习物联网怎么入门?

    随着物联网技术的不断发展,越来越多的人开始关注学习这一领域。但是对于初学者来说,物联网似乎是一个庞杂的概念,学习起来很困难。因此,哪里
    发表于 10-14 10:34

    如何在机器视觉中部署深度学习神经网络

    人士而言往往难以理解,人们也常常误以为需要扎实的编程技能才能真正掌握并合理使用这项技术。事实上,这种印象忽视了该技术机器视觉(乃至生产自动化)带来的潜力,因为深度
    的头像 发表于 09-10 17:38 1036次阅读
    如何在<b class='flag-5'>机器</b>视觉中部署深度<b class='flag-5'>学习</b>神经网络

    ARM入门学习方法分享

    )架构。学习ARM的开始可以学习RISC和CISC架构的基础知识开始。 二、学习汇编语言:A
    发表于 07-23 10:21

    电子硬件工程师如何从零开始学习?(文末免费分享从零开始学习资料)

    经常有用户咨询,如何学习和提升电子硬件能力,有没有适合小白学习的资料等等;电子硬件工程师是一个结合理论、实践和创新能力的职业,需要掌握电路设计、元器件选型、PCB设计、嵌入式系统、测试
    的头像 发表于 06-04 07:36 2695次阅读
    电子硬件<b class='flag-5'>工程</b>师如何从零<b class='flag-5'>开始</b><b class='flag-5'>学习</b>?(文末免费分享从零<b class='flag-5'>开始</b><b class='flag-5'>学习</b>资料)

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29

    【「# ROS 2智能机器人开发实践」阅读体验】机器人入门的引路书

    的限制和调控) 本书还有很多前沿技术项目的扩展 比如神经网络识别例程,机器学习图像识别的原理,yolo图像追踪的原理 机器学习训练三大点:
    发表于 04-30 01:05

    【「# ROS 2智能机器人开发实践」阅读体验】+ROS2应用案例

    的知识,还需要对ROS 2的节点通信和数据处理有一定的了解。通过实践这一部分内容,我掌握了如何在ROS 2中实现二维码识别,这对于提高机器人的智能性和交互性具有重要意义。 地图构建:SLAM
    发表于 04-27 11:42

    如何成为一名合格的KaihongOS北向应用开发工程

    如何使用 KaihongOS 的 SDK 和工具链进行开发和调试 。 2. 特定技术栈 KaihongOS 框架:深入了解 KaihongOS 操作系统的架构和开发框架。 ArkUI:学习
    发表于 04-23 06:46