特征工程

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。所以特征工程的目的是最大限度地从原始数据中提取特征, 以供算法和模型使用。

特征类型

  • 普通离散特征
    职业, 婚姻状态等, 同常枚举值不超过100个.
  • id类特征
    如淘宝上的活跃卖家, 可能就上千万了.
  • 连续实值特征
    即 continuous real-valed feature.
    如 身高,体重.

tf中的特征处理

见参考[3].
诸如 连续值按区间边界分桶, string枚举值分配整数id, 还有对稀疏高维特征做 embedding等.

清洗

特征交叉

这里写图片描述
figure gif动图, 描述特征交叉

一般用在LR中. LR只有线性的表达能力, 所以做特征交叉可以额外获得一些非线性表达.
如在个性化推荐中, 将用户的年龄离散化成10个档, 用户的性别又是2个档, 彼此交叉后就有了额外的20个特征.

采样

为了让样本均衡, 可以对某些类别的样本做欠采样或过采样处理.

欠采样

undersampling.
以一定的概率采样.

过采样

oversampling.
重复采样.

数据变换

离散化

分布律如图所示.

  1. 等频划分
    划分后, 图中每档的面积相同, 即每档的人数相同. 建议使用maxcompute的percentrank()函数,
  2. 等宽划分
    对横坐标按照固定间距p进行划分, 即第一档为[a,a+p), 第二档为[a+p,a+2p)

正规化

见参考[2]

指定列的正规化

正规化, Normalization, 又叫归一化.
它会改变原有数据的分布, 使之落入一个小的特定区间.
他会将原有数据转化为无量纲的纯数值, 便于不同单位的指标进行比较.
在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

  • min-max标准化
    KaTeX parse error: Got function '\min' with no arguments as subscript at position 15: x^*=\frac{x-x_\̲m̲i̲n̲}{x_\max-x_\min…
    结果落入[0,1]之间.
    这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
  • log函数转换
    x ∗ = log ⁡ 10 x l o g 10 max ⁡ x^*=\frac{\log_{10} x}{log_{10}\max} x=log10maxlog10x
  • z-score标准化
    最常见的标准化方法就是Z标准化,也是SPSS统计软件中最为常用的标准化方法.
    x ∗ = x − μ σ x^*=\frac{x-\mu}{\sigma} x=σxμ
    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

向量的正规化

把一个向量转化为单位向量, 即为向量的正规化.
正规化的好处是, 计算 a,b 的cosine similarity, 只算 dot product 就可以了.
a = ( x 1 , x 2 , . . . , x n ) a=(x_1,x_2, ... , x_n) a=(x1,x2,...,xn)
a ′ = ( x 1 ∣ a ∣ , x 2 ∣ a ∣ , x n ∣ a ∣ ) a'=(\frac {x_1}{|a|} , \frac {x_2}{|a|}, \frac {x_n}{|a|} ) a=(ax1,ax2,axn)
原向量为a, 正规化后的单位向量为a’.
python 代码见下:

# 向量的正规化
import numpy as np
def normalize(v):
    norm=np.linalg.norm(v)
    if norm==0: 
       return v
    return v/norm

对数变换

对数据做平滑处理时可以用到. 待补充.

  • l o g 2 ( 1 + x ) log_2(1+x) log2(1+x)
    经过的点有 (0,0),(≈30, ≈5),(≈128, ≈7),(≈255, ≈8),(≈512, ≈9), (≈1023, ≈10),(≈33000,≈15.00) 等
    在这里插入图片描述

  • y = 1 l o g 2 ( 1 + x ) y=\frac1{log_2(1+x)} y=log2(1+x)1
    搜索排序评价指标ndcg会用到.
    令定义域x>=1, 经过的点 (1,1),(≈2, ≈0.62),(≈3, ≈0.5),(≈4, ≈0.43),(≈10, ≈0.29) .
    在这里插入图片描述

  • y = l o g 2 x y=log_2x y=log2x
    经过的点有 (1,0),(2,1)等
    在这里插入图片描述

参考

  1. 使用sklearn做单机特征工程
  2. 皮皮blog的 数据标准化/归一化normalization
  3. tf中的特征处理, tf.feature_column
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值