机器学习实践项目(二)- 房价预测增强篇 - 特征工程二
在上一篇的介绍中,我们构造了相当多的新字段,这些字段有的是由几个字段相加得到,比如“总面积”,这些字段更符合日常生活中人们对房价的判断;有些是根据一些值生生造出来的,比如根据房屋建造年份和出售年份是否都是“今年”而造成“是否新房”这个字段;还有一些字段,虽然是几个字段加起来的,除了更符合人们对房价的判断,还承担消除数据稀疏性的作用。
但是,所有的新字段,其原始的值,都是来源于数据集中已有的字段,所以我们不免有个疑问,既然这些规律在数据集中已经有,为什么模型不去自己发现,而需要人们定义出来?
带着疑问,我问了一下AI,总结如下:
- 为什么模型不能自动学习这些特征
- 模型复杂度限制
- 线性模型(如 Ridge, Lasso)只能学习线性关系,无法自动组合特征
- 树模型虽然能学习特征交互,但需要大量数据和深度才能发现复杂关系
- 特征交互的组合爆炸
- 原始特征有几十个,两两组合就有上千种可能
- 三四特征的组合数量更是天文数字
- 模型很难在有限时间内探索所有可能性
- 领域知识的价值
# 浴室密度: 每1000平方英尺的浴室数
df["BathPer1kSF"] = df["BathTotal"] / (df["TotalSF"] / 1000.0)
这种"密度"概念来自房地产领域知识,不是简单的数学运算
- 提高学习效率
- 直接提供有意义的特征可显著加快模型收敛速度
- 减少模型需要学习的参数数量
- 提高预测准确性
总结
人工特征工程的价值在于:
- 封装领域知识 - 将人类对房价影响因素的理解编码到特征中
- 降低模型负担 - 让模型专注于学习最重要的模式
- 提高可解释性 - 构造的特征具有明确的业务含义
- 加速收敛 - 减少模型搜索有效特征组合的时间
虽然深度学习等复杂模型可以自动学习一些特征组合,但在结构化数据和传统机器学习模型场景下,精心设计的特征工程仍然是提升性能的关键手段。
