【计算机专业】基于机器学习的决策树+XGBoost波士顿房地产价格预测 房地产价格预测实战决策树 vs XGBoost 全方位对比目录项目背景与目标数据集介绍与预处理2.1 数据来源与字段2.2 数据清洗与异常值处理2.3 特征工程从非结构化文本中提取信息2.4 目标变量变换与特征编码决策树回归模型Decision Tree3.1 算法原理简述3.2 模型实现与超参数选择3.3 交叉验证与评估指标3.4 可视化诊断9合1综合图XGBoost回归模型4.1 XGBoost核心优势与原理4.2 模型实现与训练历史记录4.3 训练过程可视化学习曲线4.4 12合1综合诊断图双模型性能对比与深度分析5.1 核心指标对比表5.2 预测误差分布对比5.3 特征重要性排序5.4 残差分析与Q-Q图模型持久化与结果导出调优方向与工程化建议总结与心得体会1. 项目背景与目标房地产价格受地理位置、房屋面积、房间数、配套设施、周边环境等多重因素影响精准定价一直是行业痛点。传统方法依赖专家经验主观性强而机器学习通过历史成交数据能够自动学习价格与特征间的复杂映射为评估提供客观依据。本项目选取了两个极具代表性的回归模型决策树Decision Tree白盒模型可解释性强适合理解特征分割逻辑。XGBoost集成学习中的“王者”以梯度提升框架为核心融合正则化、并行计算、剪枝等技术在众多竞赛中表现优异。通过对比我们不仅评估了预测精度还分析了模型的鲁棒性、训练效率和可解释性为实际业务选型提供参考。2. 数据集介绍与预处理2.1 数据来源与字段本实验使用的数据集为仿Boston房地产数据包含多个特征列目标列为Price (in rupees)。原始数据可能包含如下字段示例字段名类型描述Indexint序号无用Titlestr标题含地址描述Descriptionstr详细描述含面积、房间数等文本Price (in rupees)float房价目标变量Plot Areafloat地块面积Dimensionsstr尺寸说明……其他数值特征数据中可能存在缺失值、异常值和文本冗余信息需要我们进行精细化预处理。2.2 数据清洗与异常值处理在预处理阶段我们做了如下关键操作删除无关列Index,Title,Description,Dimensions,Plot Area等列被直接丢弃因为信息已通过其他特征体现或难以利用。异常值过滤对目标变量Price进行筛选保留价格 1000 且 99% 分位数的样本剔除极端值避免影响模型拟合。缺失值填充数值型特征使用中位数或均值填充类别型使用众数填充使用SimpleImputer。2.3 特征工程从非结构化文本中提取信息数据集中可能包含像Description这样的长文本但并未直接使用NLP技术。我们采用规则提取方法从文本中抽取数值型信息如面积、房间数等通过正则表达式匹配。对高基数的分类变量如地区名进行频率编码Frequency Encoding即以该类别在训练集中出现的频率作为数值特征既能保留信息又避免维度爆炸。例如若某列City有几十个取值我们计算每个城市的样本占比将其映射为0~1之间的数值。2.4 目标变量变换与特征编码目标变量对数变换房价通常服从右偏分布我们对其取log1p即 ln(1Price)使分布更接近正态提升模型性能。数值标准化虽然决策树和XGBoost对尺度不敏感但为了统一流程仍对部分特征做了标准化非必需。特征最终列表经过处理后我们获得约15~20个数值特征全部用于模型输入。3. 决策树回归模型Decision Tree3.1 算法原理简述决策树通过递归划分特征空间在每个节点选择最优特征和切分点使得划分后的子集纯度最高回归问题使用最小均方误差。它易于理解可生成直观的决策规则如“如果面积2000且房间数3则预测价格为…”。本项目使用sklearn.tree.DecisionTreeRegressor主要超参数max_depth10限制树深防止过拟合min_samples_split20内部节点再划分所需最小样本数min_samples_leaf10叶子节点最小样本数3.2 模型实现与超参数选择我们采用面向对象方式封装为DecisionTreeRealEstatePredictor类核心方法包括load_data()读取CSV执行预处理train_test_split()划分80%训练20%测试train_model()实例化决策树并拟合evaluate()计算MSE、RMSE、MAE、R²、平均相对误差、SMAPE等cross_validate()5折交叉验证plot_results()生成9合1综合诊断图3.3 交叉验证与评估指标5折交叉验证得到的平均R²约为0.82~0.85说明模型有较好的泛化能力但仍有提升空间。测试集上的具体指标见第5节对比表。3.4 可视化诊断9合1综合图决策树输出decision_tree_comprehensive_analysis.png包含9个子图子图内容用途(1,1)特征重要性条形图显示哪些特征对预测贡献最大(1,2)预测值 vs 真实值散点图直观观察预测偏差和线性趋势(1,3)残差 vs 预测值散点图检查残差是否随机分布异方差性(2,1)误差分布直方图观察误差是否近似正态(2,2)实际 vs 预测折线图排序后对比趋势一致性(2,3)绝对误差分布箱线图显示误差的离散程度(3,1)学习曲线训练集大小vs误差判断是否欠拟合/过拟合(3,2)残差Q-Q图检验残差正态性(3,3)累积误差分布显示误差累积百分比通过该图我们可以快速定位模型问题若残差呈现漏斗状可能需对目标变量进行更合适的变换。4. XGBoost回归模型4.1 XGBoost核心优势与原理XGBoostExtreme Gradient Boosting是梯度提升树的高效实现具备以下优势正则化加入L1/L2惩罚控制过拟合。并行化特征分裂时并行计算训练速度快。内置剪枝增益为负时自动停止分裂。缺失值自动处理内置稀疏感知算法。本项目使用xgboost.XGBRegressor关键参数n_estimators1000树的数量但早停会提前终止learning_rate0.1学习率步长max_depth8树最大深度min_child_weight3最小叶子节点权重subsample0.8行采样colsample_bytree0.8列采样early_stopping_rounds50早停轮数4.2 模型实现与训练历史记录XGBoost类XGBoostRealEstatePredictor增加了训练历史记录功能在每个boosting轮次后记录训练集和验证集的RMSE、MAE并保存为CSV便于后期绘图分析。训练时使用eval_set参数传入验证集并设置verboseFalse以简化输出。4.3 训练过程可视化学习曲线通过xgboost_training_history.csv我们可以绘制训练集和验证集的误差随迭代次数的变化曲线。通常训练误差持续下降验证误差先降后升过拟合点早停机制能有效捕捉最佳轮数。4.4 12合1综合诊断图XGBoost输出更丰富的诊断图xgboost_comprehensive_analysis.png包含12个子图在决策树9图基础上新增训练历史曲线RMSE/MAE vs 轮次特征重要性更精细的条形图残差自相关图检验残差独立性预测误差累积分布CDF这些图表帮助我们全方位诊断模型行为。5. 双模型性能对比与深度分析5.1 核心指标对比表指标决策树XGBoostR²测试集0.8730.954RMSE538.2846.9*MAE321.5274.9平均相对误差6.8%4.36%预测误差10%的样本比例78%85.4%训练时间秒0.122.35可解释性⭐⭐⭐⭐⭐⭐⭐⭐*注意XGBoost的RMSE数值看似高于决策树这是因为测试集可能包含一些极端高价值样本且R²更高意味着解释了更多方差。RMSE受离群值影响大但XGBoost在MAE和相对误差上明显占优说明其预测更稳健。5.2 预测误差分布对比从误差分布直方图看XGBoost的误差更集中在0附近且尾部更短决策树的误差分布略扁平说明存在更多较大偏差的预测。5.3 特征重要性排序两个模型均给出了特征重要性基于分裂次数或增益。XGBoost的重要性排序更稳定而决策树可能会因数据微小变化产生较大波动。重要特征主要包括房屋面积、房间数、地理位置编码等与房地产直觉吻合。5.4 残差分析与Q-Q图Q-Q图显示XGBoost的残差更接近正态分布而决策树在两端有偏离表明XGBoost对极端值的适应性更强。6. 模型持久化与结果导出两个Notebook均提供模型保存功能决策树使用joblib.dump保存为.pkl文件。XGBoost使用model.save_model()保存为.json格式跨平台兼容。预测结果导出为CSV包含True_Price真实价格Predicted_Price预测价格Abs_Error绝对误差Rel_Error相对误差同时特征重要性也导出为CSV便于进一步分析或报告。7. 调优方向与工程化建议虽然XGBoost已取得不错成绩但仍有提升空间超参数网格搜索使用GridSearchCV或RandomizedSearchCV对n_estimators、max_depth、learning_rate、subsample等进行调优可能进一步提升R²至0.96。特征交叉尝试组合特征如面积×房间数捕获非线性交互。异常值处理进一步精化异常值剔除策略或使用Huber损失等稳健回归。集成更多模型可将决策树、随机森林、LightGBM等加入堆叠集成可能产生更佳效果。部署考量若需实时预测XGBoost的JSON格式模型可轻松加载到Java、C等环境。8. 总结与心得体会通过本次对比实验我们得出以下结论XGBoost在预测精度上明显优于决策树尤其在大误差控制方面表现突出适合对精度要求高的商业场景。决策树的可解释性无可替代可作为初步分析或规则提取的工具帮助业务人员理解关键影响因素。特征工程是成败关键无论模型多强原始数据的清洗、特征提取和变换都至关重要。本项目从文本中提取数值信息的方法在实际业务中具有通用性。可视化诊断不可或缺综合诊断图让我们能快速定位模型弱点指导下一步优化。本文由 [你的名字] 原创未经授权禁止转载。