线性回归算法
经典例子:房价预测
有监督学习里,如果标签是连续数值(价格、温度、销量),回归是入门第一课;线性回归又是回归里最好讲清楚的那一个。
问题长什么样
假设你手里有一些房子数据:面积、卧室数、楼层……每条记录对应一个成交总价。
目标不是分「贵/便宜」两类,而是:来一套新房子的特征,估一个具体价格。
这就是回归:输入特征 x,输出连续值 y。
线性回归在拟合什么
线性回归假设价格和特征之间存在(近似)线性关系:
y = w1*x1 + w2*x2 + ... + wn*xn + b
只有一个特征时,就是中学那条直线 y = wx + b:面积越大,价格整体往上走,斜率 w 表示「每多一平米大概贵多少」。
「学习」做的事,就是根据历史成交记录,找到一组 w 和 b,让预测值尽量贴近真实成交价。
怎么衡量「贴近」
常用均方误差(MSE):每个样本的预测误差平方后求平均,再想办法把这个损失降下来。
损失 J(w, b) = (1/m) * Σ (ŷᵢ - yᵢ)²
ŷ 是模型预测,y 是真实标签,m 是样本数。平方会让大误差更刺眼,也便于求导。
两种常见求法
正规方程(Normal Equation):数据量不大、特征不多时,可以直接解出使损失最小的参数,一步到位。
梯度下降:特征多、数据量大时更常见。反复小步调整 w、b,沿损失下降最快的方向走,直到收敛。
初学阶段不必死磕公式推导,先建立直觉:线性回归就是在找一条最不离谱的直线(或超平面)穿过散点云。
它擅长什么、不擅长什么
擅长:
- 特征和目标大致线性相关
- 需要可解释性(系数能读出「某个因素涨一点,价格涨多少」)
不擅长:
- 明显非线性关系(面积很小和很大时单价曲线不同)
- 特征之间强相关(多重共线性会让系数不好解释)
这种时候要加多项式项、换模型,或者先做特征工程——那是后话。
和分类的区别
同样是监督学习,回归预测连续值,分类预测离散标签(良性/恶性、猫/狗)。房价 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/) 转载或引用必须申明原指尖魔法屋来源及源地址!