百面机器学习——第一章特征工程

特征工程:是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题和预测模型之间的关系。

对于机器学习问题,数据和特征往往决定了结果的上限,而算法,模型的选择及优化则是在逐步接近这个上限。特征工程的框架图:

常用的数据类型:

(1)结构化数据:可以看成关系型数据库的一张表,每列都有清晰的定义,包含了数值型和类别型两种基本数据类型;每行代表一个样本的信息。

(2)非结构化数据:主要包括文本、图像、音频、视频教程,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且数据的大小各不相同。

第1问:为什么对数据进行归一化?

为了消除数据特征之间的量纲影响,对数据进行归一化,使得不同指标之间具有可比性。对数值型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。常用方法:

(1)线性函数归一化(Min-Max Scaling):它是对数据进行线性变换,使结果映射到[0,1]范围,实现对数据的等比缩放。

(2)零均值归一化(Z-score Normalization):它将数据映射到均值为0,标准差为1的分布上。假设原始特征的均值是,标准差是,公式为

例:以梯度下降的实例说明,未归一化的数据在学习速率相同的情况下,对数据进行归一化之后,数据可以更快地找到最优解。

在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归,逻辑回归,支持向量机,神经网络模型等。但是对于决策树模型并不适用,归一化之后的数据并不会改变样本在特征X上的信息增益。

其他:树形模型是否需要归一化?

树形模型不需要归一化,不会影响结点分裂时的选择特征。

第2问:在数据处理时,类别型特征怎么处理?

类别型特征主要是只在有限选项内取值的特征,例如性别(男女),血型(A,B,AB,O)。类别型特征原始输入通常是字符串类型,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归等大部分模型来说,都需要处理转换成数值型特征。

处理方法:序号编码(Ordinal Encoding),独热编码(One-hot Encoding),二进制编码(Binary Encoding)

序号编码:用于处理类别间具有大小关系的数据。如成绩可以分为低,中,高三档。并存在排序问题,表示为高3,中2,低1。

独热编码:用于处理类别间不具有大小关系的特征。如血型有四个取值,可以转换为4维稀疏变量,如:

血型ABABO
 1000
 0100
 0010
 000

  1

对于类别取值较多的情况下使用独热编码应该注意:

(1)使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置均取0。因此可以利用向量的稀疏表示有效地节省空间。

(2)配合特征选择来降低难度。高维特征会带来以下问题:一是KNN中,高维空间下两点的距离很难得到有效的衡量。二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题。三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。(注:不太明白什么叫配合特征选择,是在这个编码下,只取部分特征吗,这个特征怎么取,方法呢?会不会造成特征丢失?)

二进制编码:主要是分两步:先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。如下:

血型类别ID二进制表示
A1001
B2010
AB3011
O4100

 

二进制是对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。

其他编码方式:Helmert Contrast,Sum Contrast,Polynomial Contrast,Backward Difference Contrast。

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

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

相关文章

C语言不调用库函数画一个三角形

这个是知乎上面的一个题目,非常有意思,晚上打球回来就下决心要写代码实现下,再加上自己剖析,让大家明白一个三角形在坐标系中如何用C语言画出来的。https://www.zhihu.com/question/53832071/answer/1625616415第一步就是要先构建…

JS高级——变量提升

JS执行过程 1、首先是预解析&#xff1a;预解析过程最重要的是提升&#xff0c;在JavaScript代码在预解析阶段&#xff0c;会对以var声明的变量名&#xff0c;和function开头的语句块&#xff0c;进行提升操作 2、执行操作 全局中解析和执行过程 <script>console.log(a);…

ocs 2007技巧:查看存档服务记录的消息内容

要查看存档服务记录的消息内容&#xff0c;请进入SQL&#xff0c;运行下列命令&#xff1a;USE LcsLogGOSELECT * FROM Messages转载于:https://www.cnblogs.com/kksip/archive/2008/01/08/1030858.html

图像多分类——卷积神经网络

例子参考&#xff1a;https://www.jiqizhixin.com/articles/2019-05-15-2 数据集&#xff1a;https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html 将获取到原始数据集&#xff0c;其中&#xff0c;有三个文件&#xff0c; Movie Poster Dataset是1980-2015年…

C语言——可变参数

C语言——可变参数 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、目前为止&#xff0c;见过比较熟悉的可变参数的函数就是printf()函数 int printf(const char *format, …);<span style"font-family: Arial, Helvetica, sans-serif; back…

学习C++,知识点太多记不住怎么办?

学习一门新的编程语言之前&#xff0c;你首先会做什么&#xff1f;先熟悉变量、运算符、函数、类和结构、测试等工具&#xff0c;随后按照指导按部就班进行操作&#xff1f;这样的流程对于学习其他语言如Python、Java来说或许行得通&#xff0c;但C的话&#xff0c;够呛。想要真…

【转】建立公用程序库,提升软件开发生产力

当我们谈及软件开发的生产力时&#xff0c;其实有相当多的因素在影响着。举凡程序人本身的素质、所使用的程序语言、应用程序框架&#xff08;Application Framework&#xff09;的选择、是否具备好的开发工具&#xff08;例如IDE、程序代码产生器&#xff09;、对开发环境的熟…

vim使用指南

1 删除 https://www.jianshu.com/p/ab7936af747c 转载于:https://www.cnblogs.com/zhaoyz/p/8341231.html

C语言编程规范 clean code

目的规则并不是完美的&#xff0c;通过禁止在特定情况下有用的特性&#xff0c;可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”&#xff0c; 如果在团队运作中认为某个规则无法遵循&#xff0c;希望可以共同改进该规则。参考该规范之…

DataWhale组队-Pandas(下)缺失数据(打卡)

1.缺失值概要 数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失&#xff0c;两者都会造成分析结果的不准确&#xff0c;以下从缺失值产生的原因及影响扥方面展开分析。 &#xff08;1&#xff09;缺失值产生的原因 1&#xff09;有些信息暂时无法获取&#xff0c;或…

状态机——protothreads

状态机——Protothreads 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、prothreads的优缺点 优点&#xff1a; 1. 以纯C语言实现&#xff0c;无硬件依靠性&#xff1b;因此不存在移植的困难。 2. 极少的资源需求&#xff0c;每个Protothread仅需要…

南橘北枳

春秋战国时期&#xff0c;智者晏子曾经说过一句话&#xff1a;“桔生淮南为橘&#xff0c;生于淮北为枳”&#xff0c;说的是淮南香甜的橘子移植到淮北就变成苦涩难吃的枳。因为事物的条件和环境等变了&#xff0c;所以才会这样。这句话现在大多是针对人品说的&#xff0c;大概…

CentOS经常使用文件操作命令[百度博客搬家]

路径操作的CentOS经常使用命令 如今整理例如以下&#xff08;百度博客搬家) cd pwd NO1. 显示当前路径 [rootrehat root]# pwd NO2. 返回用户主文件夹 [rootrehat root]# cd NO3. 改变到其他路径 [rootrehat root]# cd /etc NO4. 返回到上一级文件夹 [rootrehat root]…

Apache配置SSL证书服务器傻瓜步骤

在LinuxApacheOpenSSL中配置SSL安全证书认证是不难的&#xff0c;我的另一篇工作随记中曾提到[url]http://www.host01.com/article/server/00070002/0621409075193649.htm[/url]中有所有步骤&#xff0c;不过其中的一些描述有点复杂&#xff0c;并且依赖关系也没有这些严格。这…

用C语言字符画圆

用C语言画圆&#xff0c;这是一是算法的问题&#xff0c;我们知道&#xff0c;程序是由数据结构加算法组成的&#xff0c;研究这类东西&#xff0c;其实也是研究算法的问题&#xff0c;是比较有意思的。圆心为0的时候&#xff0c;圆的公式公式&#xff1a;那我们要如何写代码呢…

Datawhale组队-pandas(上)基础(自学)

Pandas是Python的核心数据分析支持库&#xff0c;提供了快速灵活、明确的数据节后&#xff0c;旨在简单、直观地处理关系型、标记型数据。Pandas的目标是称为Python数据分析时间与实战的必备高级工具&#xff0c;其长远目标是称为最强大、最灵活&#xff0c;可以支持任何语言的…

Linux C目标文件

LinuxC目标文件 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、目标文件格式&#xff08;ELF格式&#xff09; 编译器编译源代码后生成的文件叫做目标文件。目标文件是已经编译后的可执行文件&#xff0c;只是还没有经过链接的过程。 PC平台流行…

Win2003下Exchange2003部署图解之七

Exchange 2003 基本配置在邮件服务器SERVERVM下打开“第一个存储组”&#xff0c;&#xff08;这里我们只看到一个缺省的存储组&#xff0c;在Exchange2003标准版中我们只能建立一个存储组&#xff0c;而企业版中我们可以建立4个存储组&#xff09;选择“邮箱存储”&#xff0c…

嵌入式Linux操作UART实例

1引言串口是我们实际工作中经常使用的一个接口&#xff0c;比如我们在Linux下使用的debug串口&#xff0c;它用来登录Linux系统&#xff0c;输出log。另外我们也会使用串口和外部的一些模块通信&#xff0c;比如GPS模块、RS485等。这里对Linux下串口使用做个总结&#xff0c;希…

Datawhale组队-Pandas(下)文本数据(打卡)

一、string类型的性质 1.string和object的区别 string类型和object不同之处有三&#xff1a; 字符存取方法&#xff08;string accessor methods&#xff0c;如str.count&#xff09;会返回相应数据的Nullable类型&#xff0c;而object会随缺失值的存在而改变返回类型某些Se…