执行空间回归
首先,您将使用空间回归方法(称为地理加权回归 (GWR))对房价进行建模。 与其他回归方法一样,GWR 会识别目标变量(在本例中,为房价)与多个解释变量(在本例中,为房屋面积、楼层数等房地产特征)之间的关系。 这些关系随后可用于进行预测。
与广义线性回归 (GLR) 不同,GWR 会考虑数据中的空间变化。 为此,该方法会为数据集中的每个要素根据该要素的相邻要素中的变量创建单独的回归方程。 与 GWR 一样,空间回归方法适用于以下情况:研究区域中变量之间的关系不一致,或者目标变量在某些地理要素邻域中发生变化。
浏览数据
首先,您将下载 ArcGIS Pro 工程包,其中包含华盛顿金县的房屋销售数据。 然后,您将浏览数据以确定适合在执行 GWR 时使用的变量。
注:
如果您完成了教程使用线性回归预测房价,则可以使用该教程中的工程,而不是下载此教程的工程包。
- 下载 Home Valuation 2 工程包。
- 浏览至下载的文件并双击 Home_Valuation_2.ppkx 在 ArcGIS Pro 中打开该工程。 如有必要,请使用您获得许可的 ArcGIS 账户进行登录。
注:
如果您没有 ArcGIS Pro 的访问权限或者 ArcGIS 组织账户,请参阅软件访问权限选项。
该工程包含华盛顿州金县地图以及使用 GLR 执行的先前分析的结果。

在地图上,点表示 GLR 模型预测的房屋销售价格与在 2014 年 5 月和 2015 年 5 月之间发生的实际销售价格之间的差异。 绿点为预测价格明显低于实际价格的位置,而紫点为明显高于实际价格的位置。
颜色最深的绿点和紫点往往聚集在一起,而不是在整个数据集中均匀分布。 例如,模型预测的西雅图市区附近房价始终过低,预测的市南部郊区房价则过高。 这些模式意味着地理位置会大大影响价格,因此与 GLR 相比,GWR 等空间回归方法创建的预测模型可能更好。
- 在内容窗格中,取消选中 Valuation_GLR_2。 将其折叠以隐藏其图例。

地图上仍存在三个图层(不包括底图)。 第一个图层 King County Housing Data 包含 2014 年 5 月到 2015 年 5 月之间的实际房屋销售价格以及关于每个房屋的面积、楼层数等房地产特征。 您将使用此数据集训练 GWR 模型。
其他两个图层 Microsoft 和 Seattle 在先前的 GLR 分析中用作解释变量,从而让 GLR 模型根据房屋与这些要素的邻域调整预测的价格。 尽管添加解释距离要素改进了模型,但是不会考虑数据中的所有空间变化。
GWR 不需要解释距离要素。 GWR 会在每个要素处根据其相邻要素创建局部方程,因此它会自动捕获距离关系(前提是这些关系很重要,并在关系重要的位置进行)。
- 关闭 Microsoft 和 Seattle 图层。
使用空间回归对价格进行建模
与其他回归方法一样,GWR 需要因变量,即要预测的变量(在本例中,为价格)以及一个或多个解释变量(即用于进行预测的变量)。
先前的 GLR 分析使用了三个解释变量:房地产的居住空间(以平方英尺为单位)、房地产的分级(求立方让其与价格的关系更加线性)以及房地产与海滨相距的距离。 您将使用相同的变量运行 GWR。
注:
有关这些变量的详细信息及其选择方式,请参阅使用线性回归预测房价。
- 在功能区上,单击分析选项卡。 在地理处理组中,单击工具。

- 在地理处理窗格中,搜索 GWR。 在结果列表中,单击地理加权回归 (GWR)。

- 对于输入要素,选择 King County Housing Data。 对于因变量,选择 Price。
- 对于解释变量,选中 Square Feet (Living)、Waterfront 和 Grade_Cubed。
这些是在 GLR 分析中使用的三个变量。

- 对于输出要素,删除文本并输入 Valuation_GWR_1。
由于 GWR 会为每个要素根据其相邻要素校正局部方程,它需要了解如何确定相邻要素。 该工具可以查找两个可能的邻域类型,一个根据相邻要素数(这样每个要素的数目类似),一个根据距离范围(这样每个要素周围其他要素被视为相邻的距离范围固定)。
目前,您将使用相邻要素数类型并查看其如何影响结果。
- 对于邻域类型,选择邻居数。
您还将设置邻域选择方法,以指定邻域大小。 您可以使用具体值或最小大小和最大大小之间的间隔手动设置大小,也可以使用黄金搜索选项,这会让工具在测试各种大小后自动估计最佳邻域大小。 您不确定具体大小,因此您将使用黄金搜索方法。
- 对于邻域选择方法,选择黄金搜索。
最后,该工具具有两种局部加权方案,用于指定定义每个要素与其他要素的关联方式时使用的核类型。 在高斯加权方案中,所有要素(即使是在要素邻域外部的要素)都会影响该要素,但是距离较远的要素造成的影响呈指数下降。 在双平方加权方案中,只有邻域范围内的要素才会造成影响,距离越近的要素造成的影响大于距离较远的要素。
目前,您将使用高斯加权方案。 稍后,您将使用不同的参数再次运行该工具并比较结果。
- 展开其他选项。 将局部加权方案更改为高斯。

- 单击运行。
该工具将失败。 您将调查原因。
- 在地理处理窗格的底部,单击查看详细信息。

根据工具详细信息窗口,该工具因多重共线性(亦称为数据冗余)无法估计至少一个局部模型。
GWR 无法在解释变量禁止局部多重共线性的情况下执行,这意味着在研究区域的广泛区域中值相同。 在此情况下,导致该问题的解释变量可能是 Waterfront 变量。 该变量只有三个值:0(表示房屋不在海滨)、1(表示房屋在距离海滨的一定距离内)和 2(表示房屋在海滨)。 不仅是值只有几个,同时数据集中的大多数房屋的值为 0。 由于此变量表示距离并且 GWR 会自动考虑距离,不管怎样都不需要此变量。
还可能是 Grade_Cubed 变量导致问题。 共有 12 种类型的等级,相同邻域内的房屋可能质量相似并且等级相似。 首先,您将尝试移除 Waterfront 变量,并查看错误是否得到修复。
- 关闭工具详细信息窗口。 在地理处理窗格中,对于解释变量,取消选中 Waterfront。
- 保留其他参数不变,然后单击运行。
这次,该工具的运行时间持续大约一分钟或更长时间。 该工具成功完成,但是存在警告。 结果随即添加到地图。

与 GLR 分析的结果相比,西雅图周围以及海滨沿线仍存在过低预测情况,但是在南部内陆郊区,模型以相对精度预测了价格。
优化模型
GWR 工具已运行,但存在警告。 首先,您将调查这些警告。 然后,您将尝试在调整某些工具参数后运行该工具,尤其是涉及邻域类型和局部加权方案的参数。
- 在地理处理窗格的底部,单击查看详细信息。 如有必要,在工具详细信息窗口中,单击消息选项卡。
警告声明最终模型没有在黄金搜索结果中遇到的最低 Akaike 信息准则 (AICc) 值。 AICc 是一个相对值,用于反映因建模过程丢失的信息。 AICc 越小,模型越好。 警告当前解释黄金搜索方法(自动确定相邻要素数)使用了不是完全最佳的数字。
在分析详细信息下,邻居数行的值为 31。 此数字导致了 AdjR2(已校正 R2)值为 0.8741,AICc 值为 558535。

注:
您可能需要向下滚动窗口才能看到这些值。
R2(亦称为 R2 或 R 平方)为判决系数,用于衡量通过因变量和解释变量之间的关系解释的数据变化量。 R2 越接近 1,表示关系越强,这是所需的行为。
先前 GLR 分析的校正后 R2 为 0.6911,AICc 为 576857,因此 GWR 模型与之相比有所改进(R2 增加,AICc 降低)。
- 向上滚动到黄金搜索结果部分。
此部分包含一个表,其中显示工具尝试的不同相邻要素数对应的 AICc。 大多数数字导致了 AICc 高于 31 个相邻要素数,但是 30 个相邻要素对应的 AICc 稍微降低(558449,与 558535 相比)。 使用 30 个相邻要素时,还应生成稍微更高的校正后 R2。
- 关闭工具详细信息窗口。
接下来,您将尝试使用其他局部加权方案运行该工具,并查看结果是否具有更高的 R2 和更低的 AICc。
- 在地理处理窗格中,将局部加权方案更改为双平方。

- 保持所有其他参数不变,包括输出要素参数。 单击运行。
该工具将失败。 错误(如果您需要,可以检查该错误)与之前相同,都是关于多重共线性。 似乎在使用 Grade_Cubed 变量时,使用双平方加权方案无效。 您将更改邻域类型(这可能影响工具是否运行),而不是移除该变量(与使用高斯加权方案运行模型相比,这很可能降低模型精度)。
- 将邻域类型更改为距离范围。 保留所有其他参数不变,然后单击运行。
该工具随即运行。 在一分钟或更长时间后,该工具将成功完成运行。 由于您未更改输出要素的名称(在输出要素参数中),结果将覆盖先前的结果图层,而不是创建新图层。
- 在地理处理窗格的底部,单击查看详细信息。
与之前一样,您会收到一条警告,说明最终模型未使用 AICc 最低的邻域大小。 还有一个警告说明至少一个局部回归(邻域)在应用局部加权方案后变化非常有限,这可能导致结果不可靠。
该工具使用了距离范围为 30,154 英尺的邻域。 此邻域大小导致调整后的 R2 为 0.8196(低于先前模型),并且 AICc 为 565540(高于先前模型)。 总体而言,此邻域类型和加权方案的效果比前一种差。
您将使用原始参数最后运行一次 GWR,但是手动将相邻要素数设置为 30,这是第一次运行该工具时生成最佳结果的数字。
- 关闭工具详细信息窗口。 在地理处理窗格中,将邻域类型设置为邻居数,并将局部加权方案设置为高斯。
- 对于邻域选择方法,选择用户定义。 对于邻居数,输入 30。

- 保留其他参数不变,然后单击运行。
由于您指定了精确的相邻要素数而不是使用黄金搜索方法,该工具的运行速度比之前快。
- 单击查看详细信息。
在相邻要素数为 30 的情况下,GWR 生成的校正后 R2 值为 0.8747,AICc 值为 558449。 这两个值为通过 GWR 生成的最佳值,与 GLR 相比明显改进。
- 关闭工具详细信息窗口。 在内容窗格中,折叠 Valuation_GWR_1 图层以隐藏其图例。
- 在快速访问工具栏中,单击保存工程按钮。

您已使用 GWR 执行空间回归以对房屋销售价格进行建模,精度大大高于 GLR。 尽管模型得到显著改进,但是地图上深绿色点的分布表明预测的海滨附近以及西雅图市区价格过低,因此您还有改进空间。
执行随机森林回归
使用更强大的机器学习方法创建的模型可能生成更准确的预测。 机器学习涉及从数据学习以预测未知值的算法。 根据某些定义,GLR 和 GWR 被视为机器学习方法,因为二者会通过数据查找统计趋势线并使用该线预测值。 但是,这条线会影响所有模型决策,在某些情况下,可能会让模型与训练数据过度拟合。 过度拟合意味着模型预测已知值的精度高,但是预测未知值的精度低。
相比而言,随机森林回归会创建一系列的决策树(或角色树“森林”),每个决策树基于一部分随机数据,将对这些决策树进行聚合以生成更可靠的预测。 由于最终预测不是基于单一树,因此会避免结果过度拟合。 您将在下一个模型中使用此类回归。
使用随机森林对价格进行建模
要执行随机森林回归,需要使用基于森林的分类与回归 (FBCR)。
- 在地理处理窗格中,单击后退按钮。

- 在搜索栏中,输入基于森林的增强分类与回归。 在结果列表中,单击基于森林的增强分类与回归。

该工具包括使用基于森林的模型或梯度提升模型。 在本教程中,您将使用基于森林的模型(默认选择)。
- 对于输入训练要素,选择 King County Housing Data。 对于要预测的变量,选择 Price。

接下来,您将选择解释变量。 对于 GLR 和 GWR,您仅使用了少量变量,所有这些变量与价格存在较强的线性关系,从而避免多重共线性。 但是,由于 FBCR 基于许多决策树而不是一条线性趋势线,它不受多重共线性影响,不需要解释变量即可与要预测的变量形成线性关系。 因此,它可以使用大量的解释变量对关系进行建模,并且过度拟合的可能性较低。 您将添加比之前使用的变量更多的变量。
- 对于解释性训练变量,单击添加多项按钮。

- 选中以下变量并单击添加:
- Bedrooms
- Bathrooms
- Square Feet (Living)
- Square Feet (Lot)
- Floors
- Waterfront
- Condition
- Grade
- Square Feet (Above)
- Square Feet (Basement)
- Year Built
还必须指出每个解释变量是否为分类变量。 分类变量指值本质上不比其他值更好或更差的变量。 如果对于变量来说更高值或更低值更好,则该变量不是分类变量。
该工具会将字符串(文本)字段自动检测为分类变量,但是数值变量也可能为分类变量。 在您的数据中,Floors 字段为分类变量,因为三层房屋在本质上不比两层房屋或单层房屋更好。
- 选择 Floors 旁的分类框。

FBCR 可以将距要素的距离计算为解释变量,这与 GLR 工具类似,因此您需要添加用于 GLR 分析的相同解释距离要素。
- 对于解释训练距离要素,选择 Microsoft 和 Seattle。

接下来,您将设置输出参数。 FBCR 工具不仅创建输出要素(类似于之前使用的其他工具),还会创建一个表,用于追踪每个变量对结果的重要性。
- 展开其他输出。 对于输出训练要素,输入 Valuation_FBCR_1,对于输出变量重要性表格,输入 Importance_FBCR。

- 展开高级模型选项。
FBCR 基于随机采样的决策树,您可以设置树数、每个树的深度以及随机采样变量数。 树数越大,模型稳定性越高,但是同时会增加工具运行所需的时间。 树深度越大,对现有数据的预测精度越高,但是可能导致过度拟合并降低模型预测不用于训练模型的位置的能力。 减少随机采样变量数时,可能提高模型泛化,但同时会降低训练数据上的整体模型性能。
选中优化参数复选框时,会让工具自动确定用于每个参数的最佳值。 但是,此举还会显著增加工具完成所需的时间。 (该时间可能高达数小时。)
考虑到本教程的目的,已为您确定优化参数。
注:
要确定优化参数,所用的优化方法为格网搜索,它是最全面的方法,同时也是所需的完成时间最长的方法。 优化目标为均方根误差,它针对预测未知值优化。 对专用数据执行 FBCR 时,建议选中优化参数,即使这样做会导致分析所需的时间更长。
- 在高级模型选项下,设置以下参数:
- 对于树数,键入 250。
- 对于最小叶子大小,输入 5。
- 对于最大树深,输入 34。
- 对于每棵树的可用数据 (%),输入 100。
- 对于随机采样的变量数,输入 8。
- 确认未选中优化参数。

最后,您将设置验证选项。 由于 FBCR 中的随机森林基于随机的部分数据,因此输出模型的精度可能各不相同。 要估计模型稳定性或随机部分训练数据对结果的影响,您可以多次运行模型并检查生成的 R2 值分布。 这些多次运行称为验证运行。
通常需要运行较高数量的验证运行,但是这会导致工具的运行时间延长。 在本教程中,您将执行 20 次验证运行。
- 展开验证选项。 对于验证的运行次数,输入 20。
您还将创建输出验证表,以绘制多次运行的 R2 值图表。
- 选中计算不确定性。 对于输出验证表格,输入 Validation_R2。

您已设置工具参数。
提示:
由于存在许多参数并且该工具需要花费几分钟时间运行,您可能想要在运行工具之前仔细检查以确保您已正确设置所有参数。
- 单击运行。
注:
运行该工具所需的时间可能大于等于 15 分钟。
该工具运行结束后,新图层将添加到地图中。

调查结果
在该工具完成后,您将调查结果。 首先查看一张图表,其中显示通过 20 次验证运行获得的 R2 值的分布。
- 在内容窗格中,向下滚动至独立表部分。 双击验证 R2 图表。

随即显示该图表。 该图表显示按 R2 组织的验证运行次数以及平均值和中值 R2。
注:
由于 FBCR 使用随机数据子集并且为每个树随机选择解释变量,因此结果会与示例图不同。

在示例图中,平均值 R2 为 0.867;您的平均值 R2 可能略微更高或更低。 值范围相对稳定,最低验证运行的 R2 值为 0.847,最高验证运行的 R2 值为 0.888。
接下来,您将调查每个变量对结果的重要性。
- 关闭验证 R2 图表。 在内容窗格的独立表部分中,双击 Distribution of Variable Importance 图表。
该图标按重要性顺序列出每个解释变量。 在 FBCR 中,重要性指决策树根据变量跨整个森林模型分割的次数。 变量的次数越高,树分割的次数越多,这意味着变量对模型结果的影响越高。

最重要的变量为 Grade 和 Square Feet (Living),您之前在执行 GWR 时使用了这两个变量。 接下来最重要的变量为“距西雅图的距离”和“距 Microsoft 的距离”,其他变量的重要性相对较低。
有时,您可以移除重要性较低的解释变量,以在随机选择时为树选择更重要的变量,从而改进模型。 Condition、Bedrooms 和 Floors 变量最不重要,因此建议将这些变量移除。 在此情况下,移除这些变量不会对结果造成很大影响,因此原样保持模型即可。
- 关闭 Distribution of Variable Importance 图表和图表属性窗格。
您还将调查工具详细信息。
- 在地理处理窗格的底部,单击查看详细信息。
注:
如果您意外关闭了地理处理窗格,此时仍可以访问工具详细信息窗口。 在功能区分析选项卡的地理处理组中,单击历史记录。 在历史记录窗格中,右键单击基于森林的增强分类与回归,然后选择查看详细信息。
- 如有必要,在工具详细信息窗口中,单击消息选项卡,然后向上滚动到模型特征部分。
此部分汇总了模型参数,您设置了其中的大部分参数。 如果您已允许工具优化其参数,则会看到其选择的参数。
- 向下滚动到训练数据:回归诊断部分。
在此部分中,R2 值约为 0.977(您的值可能稍有不同),表示 FBCR 模型预测训练数据(用于定义模型的数据)的精度非常高。 在验证数据:回归诊断部分下,R2 值约为 0.869,意味着模型可以预测验证数据(从训练模型中排除的数据)的精度也非常高。

验证数据 R2 值表示模型在用于预测未知值时的性能。 该值类似于 GWR 模型的 R2 值,即 0.874。
- 向上滚动到模型袋外误差部分。
此部分指示向模型添加更多树的影响。

与 125 棵树相比,250 棵树时所介绍的均方差 (MSE) 和变化百分比更佳,但是差异不是很大。 如果差异较大,您可能考虑在运行模型时增加树。
- 关闭工具详细信息窗口。
最后,您将调查预测检测图表。
- 在内容窗格中,对于 Valuation_FBCR_1 图层,双击预测间隔图表。

此图表显示预测的不确定性边界。 深蓝色线为模型的最终预测价格。 浅蓝色线为第 95 百分位数 (P95),表示 95% 的预测均低于此值。 浅绿色线为第 5 百分位数 (P05),表示除了 5% 的预测之外其他所有预测均高于此值。
这些线共同指示预测的不确定性。 实际价格可以预测为介于 P95 和 P05 之间的任意位置,具体取决于训练数据的微小变化。 如果介于这两个值之间的范围较大,则表示不确定性更高。

对于超过 1,000,000 美元的房价,不确定性范围将迅速扩大。 呈现此趋势可能是因为这种昂贵房屋的样本量较小。 随着价格升高,可用样本甚至更少,因此不确定性增加。
- 关闭预测间隔图表和图表属性窗格。
绘制模型不确定图
需要了解模型的不确定性。 尽管预测间隔图表指示不确定性随着价格增加而增加,您还想要在地图上可视化此不确定性。 是否有位置的不确定性更高?
为了更好地了解不确定性,您需要计算一个字段以量化不确定性,方法为将 P95 和 P05 与预测值 (P50) 相结合。 然后,您将对结果执行热点分析,以查看存在具有统计显著性的较高和较低不确定性聚类的位置。
- 在地理处理窗格中,单击后退按钮。 搜索计算字段并打开计算字段(数据管理工具)工具。
该工具将使用方程计算图层的新字段。 要定义不确定性,您需要使用以下方程:
不确定性 = (P95 – P5)/P50该方程将预测值范围(P95 至 P05)除以模型的最终预测值 P50。 如果范围较高,则不确定性同样较高。
- 对于输入表,选择 Valuation_FBCR_1。 对于字段名称,输入不确定性。
默认字段类型为文本,但是此字段将包含数字,因此您需要更改字段类型。
- 对于字段类型,选择双精度型(64 位浮点型)。
您可以单击相应的字段来创建表达式。 为了方便起见,系统会为您提供表达式。
- 在表达式下,对于不确定性 =,输入(或复制并粘贴)以下表达式:
(!Q_HIGH! - !Q_LOW!) / !PREDICTED!

- 单击运行。
该工具随即运行。 将计算不确定性字段并将其添加至 Valuation_FBCR_1 图层。
提示:
要查看计算字段,右键单击 Valuation_FBCR_1,然后选择属性表。 滚动到表末尾。
接下来,您将对字段执行热点分析。 热点分析以统计方式确定高值和低值聚集的区域。
- 在地理处理窗格中,单击后退按钮。 搜索并打开优化的热点分析工具。
- 设置以下参数:
- 对于输入要素,选择 Valuation_FBCR_1。
- 对于输出要素,删除文本并输入 Uncertainty_Hot_Spots。
- 对于分析字段,选择不确定性。

- 单击运行。
该工具随即运行。 在该分析结束后,即会向地图添加一个新图层。
- 在内容窗格中,取消选中并折叠 Valuation_FBCR_1。 取消选中 Valuation_GWR_1 和 King County Housing Data。
在地图上,红色区域为热点(与数据的其余位置相比,不确定性经过统计较高),蓝色区域为冷点(不确定性经过统计较低)。

在西雅图南部郊区中,不确定性较高,但是在该县的东部区域,不确定性较低。 随机更改训练数据会对不确定性较高的位置产生更大的影响,因此再次运行模型时,热点区域的结果可能出现极大的波动。
- 在内容窗格中,取消选中并折叠 Uncertainty_Hot_Spots。 打开 King County Housing Data。
- 保存工程。
在本教程中,您使用了 GWR(空间回归)和基于机器学习的 FBCR(随机森林回归)对房屋销售价格进行建模。 这些模型显著改善了先前使用 GLR 创建的模型。 您还通过绘制热点图探索了结果的不确定性。
目前,您创建了预测房屋销售价格的模型并将价格与实际价格进行比较。 要应用这些模型以预测尚未售卖的房屋的价格,请尝试教程比较三种模型的预测。 有关本系列中的其他教程,请参阅使用回归分析和机器学习预测房价。
您可以在教程库中找到更多教程。

