一文讲解特征工程 | 经典外文PPT及中文解析

点击上方“Datawhale”,选择“星标”公众号

第一时间获取价值内容

640?

640?wx_fmt=jpeg

“More data beats clever algorithms, but better data beats more data.”——名人名言哈哈哈哈,更多的数据打败聪明的算法,更好的数据打败更多的数据。

640?wx_fmt=jpeg

特征工程

  • 数据科学最需要创意的方面。

  • 像对待其他任何创造性工作一样对待特征工程,例如喜剧表演:

  • 一起头脑风暴

  • 创建特征工程的模板/公式

  • 检查/重新检查以前的工作

640?wx_fmt=jpeg

类别特征

  • 几乎总是需要一些处理

  • 高基数类别特征会导致非常稀疏的数据

  • 难以做缺失值插补

640?wx_fmt=jpeg

Onehot编码

  • 对长度为K的数组进行K编码。

  • 可以与大多数线性算法一起使用

  • 删除第一列可避免共线性(pd.get_dummies中有参数可以达到这个目的,其实就是用全0来表示一种类别其它都用1-0表示)

  • 稀疏格式对于内存友好(csr_matrix)

  • 大多数当前的处理方法都不能很好地对待缺失值,以及新数据中的新类别

640?wx_fmt=jpeg

一个简单的例子

640?wx_fmt=jpeg

哈希编码

  • 对固定长度的数组执行“ OneHot编码”。(不同的hash编码通过不同的算法将类别映射为一个唯一的值,例如对于类别A通过hash编码可能映射为qwe456这种6维序列,然后我们再去做onehot展开)

  • 避免极为稀疏的数据

  • 可能会引起碰撞(例如10000个类别用2位的hash编码,很容易出现不同类别最终映射的hash值是相同的,此现象称为碰撞—collisions)

  • 可以重复使用不同的哈希函数和袋结果,以降低准确性(意思应该是用不同的hash算法得到不同的编码值然后concat到一起尽量避免碰撞的发生)

  • 碰撞collisions通常会降低结果,但可能会改善结果(增强泛化性能)。

  • 优雅地处理新变量(例如:新的用户代理)(新的类别重新hash然后合并即可)(关于hash编码可见facebook对于文本的处理的那篇论文,忘了叫啥了,回头补充在编码的文章里好了)

640?wx_fmt=jpeg

一个简单的例子

640?wx_fmt=jpeg

为每个类别变量赋予唯一的数字ID

  • 对于基于非线性树的算法很有用(仅限于lightgbm和catboost这类可以直接处理类别的算法,xgb还是要进行别的处理)

  • 不增加维度

  • 将cat_var-> num_id映射随机化,然后进行平均再训练,以降低准确性。(没看明白)

640?wx_fmt=jpeg

一个简单的例子

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值