特征工程——categorical特征 和 continuous特征
看到有些介绍,“特征分为categorical特征 和 continuous特征“不解,查资料得
单个原始特征(或称为变量)通常属于以下几类之一:
- 连续(continuous)特征;
- 无序类别(categorical)特征;
- 有序类别(ordinal)特征。
##连续特征 除了归一化(去中心,方差归一),不用做太多特殊处理,可以直接把连续特征扔到模型里使用。
##无序特征 可以使用One-hot(也叫One-of-k)的方法把每个无序特征转化为一个数值向量。比如一个无序特征color
有三种取值:red
,green
,blue
。那么可以用一个长度为3的向量来表示它,向量中的各个值分别对应于red
,green
,blue
。如:
color取值 | 向量表示 |
---|---|
red | (1, 0, 0) |
green | (0, 1, 0) |
blue | (0, 0, 1) |
##有序特征 有些特征虽然也像无序特征那样只取限定的几个值,但是这些值之间有顺序的含义。例如一个人的状态 status
有三种取值: bad
, normal
, good
,显然 bad
< normal
< good
。
当然有些问题里有序可能会很重要,这时候就不应该把其中的顺序关系丢掉。一般的表达方式如下:
status取值 | 向量表示 |
---|---|
bad | (1, 0, 0) |
normal | (1, 1, 0) |
good | (1, 1, 1) |
上面这种表达方式很巧妙地利用递进表达了值之间的顺序关系。
——————————————————————
以线性分类器Linear Regression (LinearReg)为例,它是通过特征的线性加权来预测因变量yy:
但大部分实际情况下,yy与xx都不会是这么简单的线性关系,甚至连单调关系都不会有。那么直接把xx扔进LinearReg模型是怎么也得不到好结果的。很多人会想着既然线性分类器搞不定,那就直接找个非线性的好了,比如高斯核的SVM。我们确实可以通过这种简单换算法的方式解决这个简单的问题。但对于很多实际问题(如广告点击率预测),往往特征非常多,这时候时间约束通常不允许我们使用很复杂的非线性分类器。这也是为什么算法发展这么多年,广告点击率预测最常用的方法还是Logistic Regression (LogisticReg)。
【上述问题的解决办法】——就是对原始特征xx做转化,把原来的非线性关系转化为线性关系。
方法一:离散化
最常用的转化方式是对xx做离散化(discretization),也就是把原来的值分段,转化成一个取值为0或1的向量。原始值落在某个段里,向量中此段对应的元素就为1,否则为0。
离散化的目标是yy与转化后向量里的每个元素都保持比较好的线性关系。
比如取离散点{0.5,1.5,2.5},通过判断
xx属于(−∞,0.5),[0.5,1.5),[1.5,2.5),[2.5,+∞)中哪段来把它离散化为4维的向量。下面是一些例子的离散结果:
原始值xx | 离散化后的值 |
---|---|
0.1 | (1, 0, 0, 0) |
1.3 | (0, 1, 0, 0) |
3.2 | (0, 0, 0, 1) |
5.8 | (0, 0, 0, 1) |
离散化方法的关键是怎么确定分段中的离散点。下面是常用的选取离散点的方法:
【1】等距离离散:顾名思义,就是离散点选取等距点。我们上面对xx取离散点{0.5,1.5,2.5}就是一种等距离散
【2】等样本点离散:选取的离散点保证落在每段里的样本点数量大致相同
【3】画图观察趋势:以xx为横坐标,yy为纵坐标,画图,看曲线的趋势和拐点。通过观察下面的图我们发现可以利用3条直线(红色直线)来逐段近似原来的曲线。把离散点设为两条直线相交的各个点,我们就可以把xx离散化为长度为3的向量
方法二:函数变换
函数变换直接把原来的特征通过非线性函数做变换,然后把原来的特征,以及变换后的特征一起加入模型进行训练。常用的变换函数见下表,不过其实你可以尝试任何函数。
常用非线性函数f(x)f(x) | xx的取值范围 |
---|---|
xαxα; α∈(−∞,+∞)α∈(−∞,+∞) | (−∞,+∞)(−∞,+∞) |
log(x)log(x) | (0,+∞)(0,+∞) |
log(x1−x)log(x1−x) | (0,1)(0,1) |
这个方法操作起来很简单,但记得对新加入的特征做归一化。
方法三:决策树离散法
大白话说决策树模型就是一大堆的if else
。它天生就可以对连续特征分段,所以把它用于离散化连续特征合情合理。我称这种方法为决策树离散化方法。例如Gmail在对信件做重要性排序时就使用了决策树离散化方法2。
决策树离散化方法通常也是每次离散化一个连续特征,做法如下:
单独用此特征和目标值yy训练一个决策树模型,然后把训练获得的模型内的特征分割点作为离散化的离散点。
这种方法当然也可以同时离散化多个连续特征,但是操作起来就更复杂了,实际用的不多。
方法四:核方法
核方法经常作为线性模型的一种推广出现。以线性回归模型为例,它对应的核方法如下:
其中{xi}ni=1{xi}i=1n为训练样本点,K(xi,xj)K(xi,xj)为核函数,比如常用的高斯核函数为:
如果我们把上面模型里的{K(x,xi)}ni=1{K(x,xi)}i=1n看成特征,而θθ看成模型参数的话,上面的模型仍旧是个线性模型。所以可以认为核方法只是特征函数变换的一种方式。
当然,如果把核函数K(xi,xj)K(xi,xj)看成一种相似度的话,那上面的模型就是kNN模型了,或者叫做加权平均模型也可以。
特征工程——categorical特征 和 continuous特征相关推荐
- ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤(特征分析与特征处理)+分类模型设计)
ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤+分类模型设计) 目录 一.总体思路框架 二.特征工程详细步骤(特征分析与特征处 ...
- 【数据竞赛】Kaggle实战之特征工程篇-20大文本特征(下)
作者:尘沙杰少.樱落.新峰.DOTA.谢嘉嘉 特征工程--文本特征下半篇! 前 言 这是一个系列篇,后续我们会按照我们第一章中的框架进行更新,因为大家平时都较忙,不会定期更新,如有兴趣欢迎长期关注我们 ...
- 【数据竞赛】Kaggle实战之特征工程篇-20大文本特征(上)
作者:尘沙杰少.樱落.新峰.DOTA.谢嘉嘉 特征工程--文本特征上半篇! 前 言 这是一个系列篇,后续我们会按照我们第一章中的框架进行更新,因为大家平时都较忙,不会定期更新,如有兴趣欢迎长期关注我们 ...
- 《特征工程入门与实践》--- 特征学习
<特征工程入门与实践>--- 特征学习 数据形状的无参数假设:特征学习方法 1. 受限玻尔兹曼机(RBM) 受限玻尔兹曼机(RBM)学习笔记 RBM的训练过程: 从MNIST中提取PCA成 ...
- EOF-DataScience:数据预处理/特征工程之线性变换—四种特征缩放Scaling算法简介、标准化standardization、归一化Normalization的概述与区别
DataScience:数据预处理/特征工程之线性变换-四种特征缩放Scaling算法简介.标准化standardization.归一化Normalization的概述与区别 目录 数据处理中常见的四 ...
- python特征工程有序变量处理_特征工程之离散变量处理
使用sklearn训练模型,只能输入数值型变量.因此需要对数据集中的非数值型离散变量进行处理,非数值型离散变量分为两类:有序型与无序型 一.有序型离散变量处理 什么叫有序型离散变量呢,比如说衣服尺码, ...
- 特征工程(2):特征构建
特征的构建与选取在提高预测精度方面越来越受到重视,甚至影响到预测项目的成败. 通常初始特征是基于领域经验构建的,比如在预测短期负荷的时候,一般会考虑节假日.气温.历史负荷水平等因素来构建特征.然而这样 ...
- 【持续更新】机器学习特征工程实用技巧大全
https://zhuanlan.zhihu.com/p/26444240 (2018/2/6 更新:修改了部分名词的翻译) 与其说是教程类的科普,不如说是一篇经验向的个人笔记,所以细节上比较懒.其实 ...
- 京东风控团队带你全方位解读特征工程
文章目录 导读 特征工程是连接数据和算法的桥梁 好的特征工程需要好的数据质量 1. 缺失值处理 2. 防止数据穿越 3. 特征稳定最重要 特征构建方法 1. 时间序列特征 2. 位置特征 3. 文本特 ...
最新文章
- Spring Cloud Hoxton正式发布,Spring Boot 2.2.x不再孤单
- logback修改日志内容_巧用maven profile动态修改logback日志目录
- 音视频技术开发周刊 82期
- mybatis中,collection配置后查询只显示一条记录
- url 参数传递的两种方式_VB编程中的传值与传址两种参数传递方式,你清楚吗?...
- 《spring-boot学习》-12-@controller和@RestController的区别?
- 推荐学习网页标准的20个好去处
- 超详解代理服务器的使用方法
- (Windows) CodeBlocks 下载
- 【C语言】关机程序的实现以及函数
- 自定义jsx解析工厂函数
- HP Proliant DL360 Gen9服务器开箱
- c语言 switch错误用法,C语言switch语句的详细用法
- appstore上架所需截屏的制作方法
- UEFI EDK2 遇到的问题集合
- 【MySQL】字符集utf8mb4无法存储表情踩坑记录
- ps教程-双重曝光效果实现
- JAVA小白必须掌握的英语单词(1)
- zynq矿机控制板_zynq[1] 矿板helloworld
- Linux Neo4j 安装APOC插件
热门文章
- 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告
- python是什么和c++是什么区别_c++和python的区别有哪些
- 某指令引用的内存不能为
- JFreeChart设置背景图片 .
- 太原学计算机的职高,山西太原职高学校排名
- 语言设计谁年龄大_这桌子谁设计的?脑洞够大,除能360°翻转,打台球,乒乓球都行...
- 增量索引和全量索引_搜索引擎(七)高可用的solr搜索引擎服务架构
- linux禁用用户账号,技术|在 Linux 系统中禁用与解禁用户的账号
- aspen怎么做灵敏度分析_数据分析终极难题:数据分析怎么做才能驱动业务?
- mysql最大连接数查询_MYSQL 查看最大连接数和修改最大连接数