730 天的日租车记录。亲手拖一条直线、调一个学习率、加一层正则化——把课件里的 y = wx + b、最小二乘、梯度下降和过拟合,都变成能看见、能上手的东西。
蓝色是训练集,灰色是测试集。橙线就是你的假设,竖线是残差 y − h(x)。拖端点试试。
颜色越深代价越小,中心是最优解。这个狭长的椭圆说明 a 与 b 的尺度差得很远,梯度下降只能小步挪。
合适的学习率单调下降并趋于平缓;过大则震荡甚至往上飞。
正值(橙)= 该特征越大租车越多;负值(绿)= 越大租车越少。
每个点是一天。越贴近虚线 y = x 说明预测越准。彩色是训练集,空心是测试集。
同一条路,不同的步长:α 太小走得慢,α 太大直接跨过谷底飞出去。这就是"学习率是超参数"的意思。
测试集指标才是"真本事"。两者差太多 = 过拟合。
残差随机散布在 0 附近 = 线性模型基本够用;如果呈弓形,说明漏了非线性项。
灰条是没有正则化时的权重,橙/绿条是当前 λ 下的权重。L1 会把某些条直接压成 0——这就是"自动选特征"。
横轴是 λ(对数),纵轴是 R²。两条线的缝隙就是泛化差距。
λ 太小时测试集 R² 反而下降(过拟合),λ 太大时两边都下降(欠拟合)。
上面每个开关背后的理论。点开对照着调,比看公式快得多。
监督学习分两类:回归(标签连续)与分类(标签离散)。预测明天租车 3821 辆是回归,判断明天"涨/跌"是分类。
"回归"这个词的来历:英国统计学家高尔顿研究父子身高时发现,高个子父母的孩子也高,但平均身高会往中间靠;矮个子父母的孩子也矮,但平均身高会往中间抬。这种"向中间值靠拢、避免两极分化"的趋势,被他称为回归现象。后来人们借用它,把研究自变量 X 与因变量 Y 之间统计关系的量化方法统称为回归分析。
常见回归任务:房价预测、股价预测、气温预测、销售量(租车量)预测、财务报表预测、人口增长预测。
线性回归是用属性的线性组合来预测标签的线性模型,目标是找到一条直线 / 一个平面 / 更高维的超平面,让预测值与真实值之间的误差最小化。
h(x) = w₀ + w₁x₁ + w₂x₂ + … + wₙxₙ = wᵀx只含一个自变量时叫一元线性回归(直线 y = ax + b);把 x 从标量换成向量,就是多元线性回归。注意:"线性"指的是对参数 w 线性,不是"图像一定是直线"。
线性回归用的是平方损失,代价函数写作:
J(w) = 1/(2m) · Σᵢ (h(x⁽ⁱ⁾) − y⁽ⁱ⁾)²乘 1/2 只是为了让求导时把平方的 2 约掉,不影响最优点位置。左边那个"残差平方和"就是你在图 1 里看着它跳来跳去的数。
要让残差平方和最小,直接对 w 求偏导并令其为 0,得到正规方程:
w = (XᵀX)⁻¹ XᵀyX 是 m×(n+1) 的设计矩阵(m 个样本、n 个特征,另加一列全 1 对应截距),y 是 m×1 的标签向量。一元情形有闭式解:
a = (mΣxᵢyᵢ − ΣxᵢΣyᵢ) / (mΣxᵢ² − (Σxᵢ)²)点"求最小二乘解"就是在算这个。代价是要求矩阵逆,时间复杂度 O(n³)——特征数上万时就不合适了。
既然不能一步解出来(或不想算逆矩阵),那就沿着梯度的反方向一小步一小步走:
wⱼ := wⱼ − α · ∂J/∂wⱼ (所有 j 同步更新)batch_size = 1 就是 SGD,= m 就是 BGD。
α 过小:每一步挪一点点,收敛慢,可能迭代几百次还在半山腰。
α 过大:一步跨过最优点,落到对面的坡上,下一步跨回来更远——震荡;再大一点就直接发散,代价变成负无穷或 NaN。
初始点离最优点太远也会让收敛变慢;参数尺度不一致会让等高线变成狭长椭圆,同一个 α 在一个方向上刚好、在另一个方向上要么太慢要么发散。
经验顺序:先标准化,再从 0.01 ~ 0.1 开始试,看代价曲线单调下降再加。
两个方法在凸的平方损失上会收敛到同一个解——你可以在上面两个 Tab 里分别求一次,对比 R²。
R² 越接近 1 说明拟合越好;等于 0 相当于"永远猜平均值";可以是负数——说明模型比直接猜平均值还差(预测崩了的时候你会看到)。
MSE / RMSE 的量纲是"辆",MAE 对异常值更宽容,RMSE 会因为平方而放大离群点的影响。
归一化(Min-Max):x' = (x − min)/(max − min),映射到 [0,1]。
Z-Score 标准化:x' = (x − μ)/σ,处理后均值 0、方差 1。
区别:归一化改变了特征的数据分布形状;标准化保留了分布形状,只是换了尺子(为了不同特征之间可比)。
为什么要做:
需要做的:KNN、K-means、感知机、SVM 这类基于距离的模型,以及线性回归类模型。不需要的:决策树、随机森林、XGBoost、LightGBM 等树模型和朴素贝叶斯。
欠拟合:模型太简单,训练集都学不好。处理:加新特征、提高模型复杂度(加高次项、加层)、减小正则化系数。
过拟合:把噪声也背下来了,训练集很好、测试集稀烂。处理:更多数据、降维、正则化、集成学习。
L1:J + λΣ|wⱼ| L2:J + λΣwⱼ² ElasticNet:λ(ρΣ|wⱼ| + (1−ρ)Σwⱼ²)L1 制造稀疏(不重要的权重直接归 0,等价于自动选特征,叫 Lasso);L2 制造平滑(权重整体变小,叫 Ridge);ElasticNet 把两者按比例 ρ 混合。
λ 是超参数——不是模型自己学出来的,要人在验证集上试。
参数(w、b)由算法学出来;超参数(学习率 α、k 值、λ、batch_size)由人指定。判断超参数好不好,靠验证集。
本实验台是按时间顺序切分:前 70% 日期训练、后 30% 测试,模拟"用过去预测未来"。