特征工程

特征工程

特征处理

1)数值型

  • 归一化 numpy.preprocession.MinMaxScaler() #归一化到【0,1】之间

    preprocession.StandardScaler() #约束到成一个均值为0,方差为1的数据范围

  • log等变化

  • 统计值 max、min、mean、std

    pandas.series.describe()

  • 离散化:分桶

    等宽分桶:每个桶左右边界值之差相同[0,2], [2,4], [4,6]

    等频分桶:每个桶内的样本数相等 [0,1], [1,3],[3,4], [4,6]

    pd.cut(arr,4) #分成4个桶

2)类别型

  • one-hot编码|哑变量 # 红 黄 蓝 [1 0 0], [0 1 0], [0 0 1]

  • hash技巧

  • 柱状图映射

    特征工程_第1张图片

3)时间型

连续值

  • 持续的时长(单页浏览的时长)
  • 间隔时间(上次购买/这次购买的时间间隔)

离散值

  • year
  • month
  • day
  • day of week
  • week of year
  • hour of day

4)文本型

  • dag of words
  • counter
  • tf-idf
  • word2vect

5)统计型

  • 加减平均
  • 分位数
  • 比例型
  • 求和

6)组合型

1)简单组合特征:拼接型

user_id&&catogory: 10001&&女裙 10002&&男士牛仔裤

user_id&&style: 10001&&蕾丝 10002&&全棉

先对用户进行聚类,可将高维的user_id压缩到低维的类别

2)GBDT+LR

使用决策树来得到组合特征

男&&上海&&中国移动 1/0

特征选择

原因:

1) 冗余:部分特征的相关度太高了,消耗了计算资源

2)噪声:部分特征是对预测结果有负影响

特征选择 VS 降维

1)前者只是踢掉原本特征中跟预测结果关系不大的特征,后者对特征重新进行空间的投影计算出新特征

2) SVD或者PCA确实特能解决一定的高维度问题

常见的特征选择的方式

1)过滤性

通过评估特征跟结果值之间的相关程度,排序留下top 相关的特征部分

Pearson相关系数,互信息,距离相似度

缺点:没有考虑特征之间的关联作用,可能把有用的关联特征误踢掉

sklearn.feature_selection.SelectKBest

2)包裹性

把特征的选择看作是一个特征的子集搜索的问题,筛选各种特征子集,用模型评估效果

方法:递归特征删除 recursive feature elimination

sklearn.feature_selection.RFE

3)嵌入型:嵌入到模型中

正则化的方式

L1正则化:截断性,区分度较低的特征的权重是0

L2缩放性:每个特征都有权重,区分度较低的特征的权重较小

1)过滤性特征选择:使用的场景 对于偏线性回归模型

注意,对于非线性的模型,要慎重使用这种特征选择的方式,会导致模型的效果偏差,原因是会

L2缩放性:每个特征都有权重,区分度较低的特征的权重较小

1)过滤性特征选择:使用的场景 对于偏线性回归模型

注意,对于非线性的模型,要慎重使用这种特征选择的方式,会导致模型的效果偏差,原因是会

你可能感兴趣的:(特征工程,人工智能)