回归任务:房价中位数预测
信息
2023年12月4日 · · · 阅读需 30 分钟
1. 项目分析
目的
:使用加州人口普查的数据建立加州的房价模型,从而根据所有其他指标,预测任意区域的房价中位数;
机器学习项目清单
- 框出问题并看整体;
- 获取数据;
- 研究数据以获得深刻见解;
- 准备数据以便将潜在的数据模式提供给机器学习算法;
- 探索不同模型,并列出最佳模型;
- 微调模型,并将它们组合成一个很好的解决方案;
- 演示解决方案;
- 启动、监视、维护这个系统;
1. 框架问题
业务目标
:模型的输出(对一个区域房价的中位数的预测)将会与其他信号一起传输给另一个机器学习系统;下游系统将用来决策这个区域是否值得投资;
流水线
,一个序列的数据处理组件;用于机器学习系统中的数据操作和数据转化;
流水线中的组件通常是异步的,每个组件拉取大量数据,进行处理,再将结果传输给另一个数据仓库,然后下一个组件拉取前面输出的数据,并给出自己的输出,以此类推;组件与组件之间独立,只通过数仓连接,系统组件保持简单,互不干扰;
需要实施适当的监控,否则坏掉的组件虽不影响其他组件的可用性,但长时间无补救措施会导致整体系统的性能下降;
-
现有解决方案
:由专家团队手动估算区域的住房价格(先持续收集最新的区域信息,计算房价中位数,若不能计算得到,则使用复杂的规则来估算);现行方案可供参考; -
专家系统
,由人把知识总结出来,再教给计算机;实施过程昂贵,计算结果也未必令人满意;
这是一个典型的监督学习
任务(已经给出了标记的训练示例),也是一个典型的多重回归
任务、一元回归
任务(系统要通过多个特征对某个值进行预测);这是一个批量学习
系统(没有连续的数据流输入,也不需要针对变化的数据做特别调整,数据量也不很大);
2. 性能指标
均方根误差
(RMSE
),欧几里得范数
;可用于体现系统通常会在预测中产生多大误差;
m
,表示测量 RMSE 的数据集中的实例个数(如在 2000 个区域的验证集上评估 RMSE,则 m=2000);- ,表示数据集中第 i 个实例的所有特征值(不包括标签)的向量;
- ,表示标签(实例的期望输出值);
如数据集中第 1 个区域位于经度 -118.29°,纬度 33.91°,居民 1416 人,收入中位数 38372 美元,房屋价值中位数为 156400 美元,则
X
,矩阵,包含数据集中所有实例的所有特征值(不包含标签),其中每一行代表一个实例,第 i 行等于 的装置,即 ;
h
,系统的预测函数,也称假设;当给系统输入一个实例的特征向量 时, 它会为该实例输出一个预测值 (如系统预测第一个区域的房价中位数为 158400 美元,则 = 158400,其预测误差为 = 2000);RMSE(X, h)
,使用假设 h 在一组实例中测量的成本函数;
其他函数
平均绝对误差
(Mean Absolute Error
,MAE
,平均绝对偏差
),曼哈顿范数
;
RMSE 和 MAE 都是测量两个向量(预测值向量和目标值向量)之间距离的方法;范数指标越高,越关注大值而忽略小值(RMSE 对异常值比 MAE 更敏感,当离群值
呈指数形式稀有时,RMSE 表现非常好);
2. 获取数据
1. 准备工作区
- 创建工作区目录
export ML_HOME="$HOME/Documents/workspace/projects/aurelius/lmsl/studying/ml/handson-ml2/workspace"
mkdir -p $ML_HOME
- 安装 Python(这里省略安装细节)
Python 版本需要保持 python3 的较新版本,pip 版本则保持最新;
# 查看 pip 版本号
python3 -m pip --version
# 升级 pip 至最新版
python3 -m pip install --user -U pip
- 创建专属 Python 环境
cd $ML_HOME
# 创建一个名为 `.venv` 的专属 Python 环境
python3 -m venv .venv
# 进入专属 Python 环境
source .venv/bin/activate # on Linux or macOS
# $ .\.venv\Scripts\activate # on Windows
# 退出专属 Python 环境
deactivate
-
安装依赖模块
- requests
- Jupyter
- NumPy
- pandas
- Matplotlib
- ScikitLearn
# 通过 pip 按照依赖模块
pip install requests jupyter matplotlib numpy pandas scipy scikit-learn
# 将专属环境注册到 Jupyter 并给它一个名字
python -m ipykernel install --user --name=ml-venv