让我们通过一个简化的具体示例,来了解基本的评估流程如何运作。假设我们要构建一个模型,根据房屋面积(平方英尺)预测房价。这是一个回归问题,因为价格是一个连续的数值。场景:预测房价我们收集了10套房屋的数据,记录了它们的面积和售价:面积 (平方英尺)价格 (千美元)1500300160032017003501800380190040020004102100430220045014002802300460我们的目标是利用部分数据训练一个模型,然后评估它在从未见过的数据上预测价格的表现。评估流程步骤下面是我们应用标准流程的方式:digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [color="#868e96"]; Data [label="完整数据集 (10套房屋)"]; Split [label="训练-测试集划分", shape= Mdiamond, color="#7048e8", fontcolor="#7048e8"]; TrainData [label="训练数据 (8套房屋)"]; TestData [label="测试数据 (2套房屋)"]; Model [label="训练模型", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; Predict [label="在测试数据上\n预测价格", shape=ellipse, style=filled, fillcolor="#ffec99"]; Evaluate [label="计算指标 (MAE, MSE, R²)", shape=ellipse, style=filled, fillcolor="#b2f2bb"]; Results [label="性能结果", shape=note, color="#f76707", fontcolor="#f76707"]; Data -> Split; Split -> TrainData [label="80%"]; Split -> TestData [label="20%"]; TrainData -> Model; Model -> Predict; TestData -> Predict [label="实际价格与面积"]; Predict -> Evaluate [label="预测值 vs 实际值"]; Evaluate -> Results; }我们的房价预测示例评估流程的图示。选择评估指标: 这是一个回归问题,我们将使用适合连续值的指标。我们选择平均绝对误差(MAE)、均方误差(MSE)和决定系数(R-平方或 $R^2$)。它们将分别告诉我们平均误差、对较大误差的惩罚程度以及模型解释的价格方差比例。划分数据: 我们需要将数据分成训练集和测试集。常见划分比例是80%用于训练,20%用于测试。我们将随机选择8套房屋用于训练,保留剩余2套用于测试。模型在训练期间绝不能看到测试数据,这一点很重要。训练集 (8套房屋): 假设随机选择的房屋如下:(1500, 300), (1700, 350), (1800, 380), (1900, 400), (2000, 410), (2100, 430), (1400, 280), (2300, 460)。测试集 (2套房屋): 剩余的房屋为:(1600, 320), (2200, 450)。训练模型: 我们使用训练集(8套房屋)来训练我们的机器学习模型。假设我们使用一个简单的线性回归模型。训练过程会找到最适合训练数据点(面积与价格)的直线。在此示例中,我们假设训练好的模型学到了以下关系: $$ \text{预测价格} = 0.2 \times \text{面积} + 50 $$ (注意:这是一个简化的模型方程,仅用于说明)。生成预测: 现在,我们使用训练好的模型来预测测试集中房屋的价格。我们只向模型输入测试集中的面积数据(1600平方英尺和2200平方英尺),然后查看它预测的价格。对于面积 = 1600 平方英尺:预测价格 = $0.2 \times 1600 + 50 = 320 + 50 = 370$ (37万美元)对于面积 = 2200 平方英尺:预测价格 = $0.2 \times 2200 + 50 = 440 + 50 = 490$ (49万美元)计算性能指标: 我们将模型的预测值(37万美元,49万美元)与测试集中的实际价格(32万美元,45万美元)进行比较。误差:房屋1:误差 = 预测值 - 实际值 = $370 - 320 = 50$房屋2:误差 = 预测值 - 实际值 = $490 - 450 = 40$MAE(平均绝对误差): 绝对误差的平均值。 $$ MAE = \frac{|50| + |40|}{2} = \frac{50 + 40}{2} = \frac{90}{2} = 45 $$MSE(均方误差): 平方误差的平均值。 $$ MSE = \frac{50^2 + 40^2}{2} = \frac{2500 + 1600}{2} = \frac{4100}{2} = 2050 $$RMSE(均方根误差): MSE的平方根。 $$ RMSE = \sqrt{2050} \approx 45.28 $$R-平方 ($R^2$): 衡量方差的解释比例。这需要将模型的误差与测试集中实际目标值的方差进行比较。实际测试价格的平均值:$(320 + 450) / 2 = 385$总平方和 (SST):实际价格与平均值之差的平方和。 $$ SST = (320 - 385)^2 + (450 - 385)^2 = (-65)^2 + (65)^2 = 4225 + 4225 = 8450 $$残差平方和 (SSE):平方误差之和(已在MSE分子中计算)。 $$ SSE = 50^2 + 40^2 = 2500 + 1600 = 4100 $$计算 $R^2$: $$ R^2 = 1 - \frac{SSE}{SST} = 1 - \frac{4100}{8450} \approx 1 - 0.485 = 0.515 $$解读结果:MAE 为45。这意味着,平均而言,我们的模型在测试集上的价格预测误差为45,000美元。RMSE 约为45.28。这也给出了原始单位(千美元)中典型误差大小的一个概念,对较大误差的惩罚比MAE略大。此处,它与MAE非常接近,因为误差值(40和50)相似。$R^2$ 为0.515。这表明我们的简单模型(仅基于面积)解释了我们小测试集中约51.5%的房价变化。剩余的48.5%无法由该模型解释(可能由于地点、卧室数量、房龄等因素,或模型自身的不准确)。{ "data": [ { "x": [320, 450], "y": [370, 490], "mode": "markers", "type": "scatter", "name": "测试预测", "marker": {"color": "#339af0", "size": 10} }, { "x": [250, 550], "y": [250, 550], "mode": "lines", "type": "scatter", "name": "理想预测", "line": {"color": "#adb5bd", "dash": "dash"} } ], "layout": { "title": "实际价格 vs. 预测价格 (测试集)", "xaxis": {"title": "实际价格 (千美元)", "range": [250, 550]}, "yaxis": {"title": "预测价格 (千美元)", "range": [250, 550]}, "showlegend": true, "legend": {"x": 0.01, "y": 0.99}, "width": 500, "height": 400, "margin": {"l": 60, "r": 20, "t": 40, "b": 50} } }测试集中两套房屋的预测价格与实际价格比较。虚线上的点代表理想预测。我们的模型对这两套测试房屋的预测价格都高于实际价格。这个示例虽然使用了小型数据集和简化模型,但展示了基本步骤:划分数据,在其中一部分上训练,在另一部分上预测,并计算指标以评估其在未见过数据上的表现。这种结构化的过程帮助您了解模型在遇到新示例时可能表现如何。