特征工程:什么是「组合特征」?要如何处理「高维组合特征」?

在机器学习中,特征工程通过组合低阶特征形成高阶组合特征来增强模型的表达能力。然而,高维组合特征可能导致参数过多和过拟合。文章以影视推荐问题为例,说明如何使用决策树来发现有效的特征组合,并通过逻辑回归展示特征组合的效果。当面临如用户ID和物品ID这类高维特征时,可以采用矩阵分解方法,将高维特征表示为低维向量,减少参数数量,从而降低学习难度。这种方法在推荐系统等场景中广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

是否点击语言类型
0中文电影
1英文电影
1中文电视剧
0英文电视剧
是否点击语言 = 中文,类型 = 电影语言 = 英文,类型 = 电影语言 = 中文,类型 = 电视剧语言 = 英文,类型 = 电视剧
01000
10100
10001
00001

以逻辑回归为例,假设数据的特征向量为 X=(x1,x2,…,xk)X=(x_1,x_2,\dots,x_k)X=(x1,x2,,xk),则有:
Y=sigmoid(∑i∑jwij⟨xi,xj⟩) Y=\text{sigmoid}(\sum_i\sum_jw_{ij}\langle x_i,x_j\rangle) Y=sigmoid(ijwijxi,xj)
⟨xi,xj⟩\langle x_i,x_j\ranglexi,xj 表示 xix_ixixjx_jxj 的组合特征,wijw_{ij}wij 的维度等于第 iii 和第 jjj 个特征不同取值的个数。在上例中,「语言」这个特征有中文和英文两个选择,「类型」这个特征有电影和电视剧两个选择,那么 wijw_{ij}wij 的维度就为 2×2=42\times 2=42×2=4. 当组合之前的两个特征不同取值的个数都不大时,用这种方式不会有太大的问题。但是对于某些问题,有用户 ID 和物品 ID,而用户和物品的数量动辄几千万,几千万乘几千万 m×nm\times nm×n,这么大的参数量,无法进行学习。

对于这种「高维组合特征」要如何处理? 假设用户和物品的数量分别为 mmmnnn,一种行之有效的方法是将两个特征分别用 kkk 维的低维向量表示(k≪m,k≪nk\ll m,k\ll nkm,kn),这样原本 m×nm\times nm×n 的学习参数就降低为 m×k+n×km\times k + n\times km×k+n×k,这其实等价于推荐算法中的矩阵分解


参考:
[1] 诸葛越,葫芦娃,《百面机器学习》,中国工信出版集团,人民邮电出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值