为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。在实际问题中,需要面对多种高维特征,简单地两两组合,依然容易存在参数过多、过拟合等问题。

怎样有效地找到组合特征? 可以利用决策树来寻找特征组合方式。

例如,影视推荐问题有两个低阶特征「语言」和「类型」,其中有语言分为中文和英文,类型分为电影和电视剧,那么这两个特征的高阶组合特征有(中文,电影)、(英文,电视剧)、(英文,电影)、(中文,电视剧)四种。下表的数据,就可以变为新的数据:

是否点击

语言

类型

0

中文

电影

1

英文

电影

1

中文

电视剧

0

英文

电视剧

是否点击

语言 = 中文,类型 = 电影

语言 = 英文,类型 = 电影

语言 = 中文,类型 = 电视剧

语言 = 英文,类型 = 电视剧

0

1

0

0

0

1

0

1

0

0

1

0

0

0

1

0

0

0

0

1

以逻辑回归为例,假设数据的特征向量为 特征CSI怎么求 Python 特征数怎么求_数学,则有:
特征CSI怎么求 Python 特征数怎么求_机器学习_02
特征CSI怎么求 Python 特征数怎么求_特征工程_03 表示 特征CSI怎么求 Python 特征数怎么求_特征CSI怎么求 Python_04特征CSI怎么求 Python 特征数怎么求_机器学习_05 的组合特征,特征CSI怎么求 Python 特征数怎么求_决策树_06 的维度等于第 特征CSI怎么求 Python 特征数怎么求_机器学习_07 和第 特征CSI怎么求 Python 特征数怎么求_数学_08 个特征不同取值的个数。在上例中,「语言」这个特征有中文和英文两个选择,「类型」这个特征有电影和电视剧两个选择,那么 特征CSI怎么求 Python 特征数怎么求_决策树_06 的维度就为 特征CSI怎么求 Python 特征数怎么求_数学_10. 当组合之前的两个特征不同取值的个数都不大时,用这种方式不会有太大的问题。但是对于某些问题,有用户 ID 和物品 ID,而用户和物品的数量动辄几千万,几千万乘几千万 特征CSI怎么求 Python 特征数怎么求_数学_11,这么大的参数量,无法进行学习。

对于这种「高维组合特征」要如何处理? 假设用户和物品的数量分别为 特征CSI怎么求 Python 特征数怎么求_特征CSI怎么求 Python_12特征CSI怎么求 Python 特征数怎么求_决策树_13,一种行之有效的方法是将两个特征分别用 特征CSI怎么求 Python 特征数怎么求_决策树_14 维的低维向量表示(特征CSI怎么求 Python 特征数怎么求_特征CSI怎么求 Python_15),这样原本 特征CSI怎么求 Python 特征数怎么求_数学_11 的学习参数就降低为 特征CSI怎么求 Python 特征数怎么求_特征CSI怎么求 Python_17,这其实等价于推荐算法中的矩阵分解