线性回归算法

经典例子:房价预测

有监督学习里,如果标签是连续数值(价格、温度、销量),回归是入门第一课;线性回归又是回归里最好讲清楚的那一个。

问题长什么样

假设你手里有一些房子数据:面积、卧室数、楼层……每条记录对应一个成交总价

目标不是分「贵/便宜」两类,而是:来一套新房子的特征,估一个具体价格

这就是回归:输入特征 x,输出连续值 y

线性回归在拟合什么

线性回归假设价格和特征之间存在(近似)线性关系:

y = w1*x1 + w2*x2 + ... + wn*xn + b

只有一个特征时,就是中学那条直线 y = wx + b:面积越大,价格整体往上走,斜率 w 表示「每多一平米大概贵多少」。

「学习」做的事,就是根据历史成交记录,找到一组 wb,让预测值尽量贴近真实成交价。

怎么衡量「贴近」

常用均方误差(MSE):每个样本的预测误差平方后求平均,再想办法把这个损失降下来。

损失 J(w, b) = (1/m) * Σ (ŷᵢ - yᵢ)²

ŷ 是模型预测,y 是真实标签,m 是样本数。平方会让大误差更刺眼,也便于求导。

两种常见求法

正规方程(Normal Equation):数据量不大、特征不多时,可以直接解出使损失最小的参数,一步到位。

梯度下降:特征多、数据量大时更常见。反复小步调整 wb,沿损失下降最快的方向走,直到收敛。

初学阶段不必死磕公式推导,先建立直觉:线性回归就是在找一条最不离谱的直线(或超平面)穿过散点云

它擅长什么、不擅长什么

擅长:

  • 特征和目标大致线性相关
  • 需要可解释性(系数能读出「某个因素涨一点,价格涨多少」)

不擅长:

  • 明显非线性关系(面积很小和很大时单价曲线不同)
  • 特征之间强相关(多重共线性会让系数不好解释)

这种时候要加多项式项、换模型,或者先做特征工程——那是后话。

和分类的区别

同样是监督学习,回归预测连续值,分类预测离散标签(良性/恶性、猫/狗)。房价 320 万和 318 万差 2 万是有意义的;分类里标签 0 和 1 通常没有「差多少」的说法。

这篇只把线性回归的轮廓说清楚。真要上手,用 Python 的 sklearn 几行就能跑:

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)

先跑通一版再回头看损失函数和梯度,比空背公式踏实。

版权声明: 本文首发于 指尖魔法屋-线性回归算法https://blog.thinkmoon.cn/post/631_%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E7%AE%97%E6%B3%95/) 转载或引用必须申明原指尖魔法屋来源及源地址!