一、为什么需要去寻找有效的组合特征?
因为并不是所有的特征组合都会意义,都能带来价值。
例如在房价预测场景中,卧室数量和浴室数量的比值有意义,但房屋面积与建造年份相组合作为新的组合特征,可能就没有实际含义,因为这两者数值上的简单相加并不能体现任何与房价相关的实质性信息。
因此,构建组合特征的过程往往需要领域知识指导,同时结合实验验证,确保生成的新特征能够帮助模型更好地理解和捕捉数据背后的潜在规律。那有什么办法能帮助不具备领域专业知识的程序员们找到有效的组合特征吗?
二、怎么样才能有效的找到组合特征?
假设有这样一个预测购买英雄联盟LOL皮肤的任务。原始特征包括五个维度:游戏年龄(5年以上和5年以下)、性别(男和女)、段位(钻石以下和钻石以上)、皮肤类型(普通或特效皮肤)以及皮肤价格(100以上、100以下)。基于这些基础特征,我们可以构造一些组合特征来探索玩家购买行为的潜在规律。
(1) 我们可以大胆的做一下猜想
- 游戏年龄与皮肤价格的组合特征:如果认为游戏年龄较长的玩家可能积累了更多的精粹或购买意愿更强,可以创建一个二元特征 "高游戏年龄且高价皮肤",即游戏年龄5年以上并且皮肤价格在100元以上。
- 段位与皮肤类型的组合特征:段位高的玩家可能更倾向于购买高品质皮肤以展示实力,可以构建一个特征 "高段位玩家购买特效皮肤",即段位在钻石以上并且皮肤类型为特效皮肤。
- 性别与皮肤类型的组合特征:如果存在性别差异导致的不同皮肤类型偏好,可以创建一个特征 "女性玩家购买特效皮肤" 或 "男性玩家购买普通皮肤"。
- 段位与皮肤价格的组合特征:结合段位和皮肤价格,可构造特征 "钻石以上段位玩家购买100元以上的皮肤",表示高端玩家在购买较高价位皮肤方面的可能性
(2)基于决策树的特征组合寻找方法
基于决策树的特征组合寻找方法是利用在构建树的过程中选择最优特征来进行分割,这个最优特征通常是基于信息增益、信息增益比或基尼不纯度等准则来衡量的。这意味着在决策树生长过程中,已经自动完成了特征选择和组合。因为在分裂节点时,模型会尝试找出最能够区分不同类别或降低熵的最佳特征及其分割点。从根节点到叶子节点的每一条路径就代表了一个特征选择序列,这个序列就是一种特征组合。
① 假设构建了这样一棵树
② 基于决策树有效的找到组合特征
用户 | 游戏年龄 | 性别 | 段位 | 皮肤类型 | 皮肤价格 | 购买预测标签 |
---|---|---|---|---|---|---|
Alice | 5年以上 | 女 | 钻石以上 | 史诗皮肤 | 100元以上 | 1 |
Bob | 5年以下 | 男 | 钻石以下 | 普通皮肤 | 100元以下 | 1 |
将样本输入上面的决策树,就可以得到购买预测结果。 根据上图中的决策树,每一路径从根节点到叶子节点都代表了一种可能的组合。得到如下的组合特征:
- 游戏年龄与皮肤价格的组合特征
- 游戏年龄与皮肤类型的组合特征
决策树会自动生成一系列特征组合路径,这些路径反映了特征之间相互作用对最终决策的影响,进而帮助我们发现哪些特征组合对预测任务最为关键。