特征组合(特征交叉)

motivation:让模型学习到更复杂的非线性特征。

method:原始特征 + 组合特征。

notes:

连续特征和离散特征都可以做交叉。

 

 

HOW TO?

离散特征:笛卡尔积

比如属性A有三个特征,属性B有两个特征,笛卡尔积后就有六个组合特征,然后用one hot 或其他embedding方式给新的特征编码。

问题:这种暴力做交叉很可能导致特征稀疏的问题。

 

连续特征:

除了一般对于连续型特征的加减乘除生成新的特征以外,还可以对多个特征(连续特征离散化)进行组合。

 

构造多项式

很多情况下,多项式特征是通过考虑输入数据中的非线性特征来增加模型的复杂性,它能捕捉到特征中高阶和相互作用的项。 

多项式生成函数:

sklearn.preprocessing.PolynomialFeatures(degree=2, interaction_only=False, include_bias=True)

 

示例:

from sklearn.preprocessing import PolynomialFeatures
x =  np.arange(6).reshape(3,2)
print x

[[0 1]
 [2 3]
 [4 5]]

poly = PolynomialFeatures()#默认输入两个参数
help(poly)
poly.fit_transform(x)

array([[  1.,   0.,   1.,   0.,   0.,   1.],
       [  1.,   2.,   3.,   4.,   6.,   9.],
       [  1.,   4.,   5.,  16.,  20.,  25.]])

参数degree =2,interaction_only = False:

 input_feature = (x1,x2), output_feature =

 

参数degree = 3,interaction_only = True

input_feature = (x1,x2,x3),output_feature = 

 

特征组合与业务理解

[知乎:漫漫成长]

日常工作场景中的特征往往都是以用户和其对应的属性作为出发点,然后和物品对应的属性特征或者上下文特征进行交叉组合,比如:

  • 用户与类别特征组合(eg:电商平台中,用户在不同类别下的点击次数,可以简单衡量用户的类别偏好)
  • 用户不同年龄档与类别特征组合(eg:新闻平台中,少年用户在娱乐新闻下的点击次数会比较高,青年用户在社会新闻下的点击次数会比较高)
  • 用户身份与时间特征组合(eg:学生周六周日、节假日,在某娱乐APP内的行为会比较丰富,上班族早晚高峰,在某娱乐APP内的行为会比较丰富)
  • 用户的价格偏好与物品的价格级别特征组合(eg:用户A偏好的价格级别为中,物品的价格级别为高,那么组合特征就是0,即两者不匹配)

在实际的场景中,往往会结合数据分析去挖掘潜在的价值特征组合。这时候便会借助数据分析、数据挖掘、分析者的敏感直觉和对业务的深入理解去进行挖掘。例如,不同人群对于APP推送消息的处理风格和处理时间很不一样,有的人会直接划掉,有的人则会在某个时间段进行消息查看,这时候便可以考虑对用户Push消息提供个性化时间分发,从而提高用户的打开率。

 

posted @ 2020-10-12 14:16  山竹小果  阅读(3148)  评论(0编辑  收藏  举报