首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >七天学完十大机器学习经典算法-01.线性回归:用一根直线破解现实世界的密码

七天学完十大机器学习经典算法-01.线性回归:用一根直线破解现实世界的密码

作者头像
熊猫钓鱼
发布2025-08-01 18:20:16
发布2025-08-01 18:20:16
14900
代码可运行
举报
文章被收录于专栏:人工智能应用人工智能应用
运行总次数:0
代码可运行

本文是机器学习入门必读系列,通过可乐销量预测、房价分析等生活化案例,手把手教你掌握线性回归的核心原理、数学推导和代码实战。无需高等数学基础,初中知识就能看懂!

一、为什么线性回归是机器学习"第一课"?

想象你要预测:

  • 明天可乐销量和气温的关系
  • 房价与面积、学区的关系
  • 广告投入对销售额的影响

这些问题的本质:寻找变量间的线性规律。而线性回归正是解决这类问题的最简单暴力的基础算法。

二、线性回归的本质:从散点图中找规律
生活案例1:可乐销量预测

某小卖部记录了一周数据:

气温(℃)

可乐销量(瓶)

28

120

32

185

25

95

30

150

35

210

肉眼可见的规律:气温越高,销量越高

那怎么用数学来表示这一规律呢?

数学建模

用直线方程表示这种关系:

代码语言:javascript
代码运行次数:0
运行
复制
y = wx + b
  • y:可乐销量(目标变量)
  • x:气温(特征变量)
  • w:斜率(气温每升1℃增加的销量)
  • b:截距(0℃时的基础销量)

三、核心问题:如何找到最佳直线?
关键思想:最小化预测误差

假设我们画了一条直线:

  • 预测28℃时销量 = 130瓶
  • 实际销量 = 120瓶
  • 误差 = 10瓶

损失函数(Loss Function):所有误差平方和(SSE)

SSE = \sum_{i=1}^{n} (y_i - \hat{y_i})^2
SSE = \sum_{i=1}^{n} (y_i - \hat{y_i})^2

为什么要用平方?避免正负误差抵消,放大大误差的影响。

四、数学推导:闭眼也能求出最优解
方法1:正规方程(初中代数就能懂)

目标:最小化 SSE → 对w和b求偏导并令导数为0

推导过程

  1. 展开SSE:
w = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}
w = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}
SSE = \sum (y_i - (wx_i + b))^2
SSE = \sum (y_i - (wx_i + b))^2

     2. 对b求偏导:

\frac{\partial SSE}{\partial b} = -2\sum (y_i - wx_i - b) = 0
\frac{\partial SSE}{\partial b} = -2\sum (y_i - wx_i - b) = 0

 得到:b = ȳ - w̄x̄ (均值关系)

    3. 对w求偏导:

\frac{\partial SSE}{\partial w} = -2\sum x_i(y_i - wx_i - b) = 0
\frac{\partial SSE}{\partial w} = -2\sum x_i(y_i - wx_i - b) = 0

    4. 代入b后解得:

w = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}
w = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}

这就是著名的最小二乘法公式

来看一个简单的计算案例(取气温,可乐销量数据作为x,y轴):
代码语言:javascript
代码运行次数:0
运行
复制
# 手工计算斜率w
x = [28, 32, 25, 30, 35]
y = [120, 185, 95, 150, 210]

mean_x = 30, mean_y = 152
分子 = (28-30)*(120-152) + (32-30)*(185-152) + ... = 340
分母 = (28-30)**2 + (32-30)**2 + ... = 50

w = 340 / 50 = 6.8
b = 152 - 6.8*30 = -52

∴ 最终方程:销量 = 6.8 × 气温 - 52

预测效果验证

  • 32℃ → 6.8×32 - 52 = 165.6(实际185,误差约10%)
  • 优化空间:可能受节假日影响 → 引出多元线性回归

五、升级版:多元线性回归(现实更复杂!)
生活案例2:房价预测

房价不只由面积决定,还有:

  • 卧室数量
  • 学区评分
  • 房龄

方程升级

\hat{y} = w_1x_1 + w_2x_2 + ... + w_nx_n + b
\hat{y} = w_1x_1 + w_2x_2 + ... + w_nx_n + b
矩阵解法(高效计算)
\mathbf{Y} = \mathbf{X}\mathbf{W} + \mathbf{b}
\mathbf{Y} = \mathbf{X}\mathbf{W} + \mathbf{b}

最优解:

\mathbf{W} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}
\mathbf{W} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}

无需手动计算,Python两三行代码搞定:

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
W = np.linalg.inv(X.T @ X) @ X.T @ Y
六、Python实战:预测房价
数据集:波士顿房价(经典入门)
代码语言:javascript
代码运行次数:0
运行
复制
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression

# 加载数据
boston = load_boston()
X = boston.data  # 特征(犯罪率、房龄等13维)
y = boston.target  # 房价

# 划分训练集/测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 创建模型
model = LinearRegression()

# 训练!
model.fit(X_train, y_train)

# 预测测试集
predictions = model.predict(X_test)

# 评估:R²分数 = 0.75(满分1,越高越好)
print(f"模型得分: {model.score(X_test, y_test):.2f}")
关键结果解读:
  1. 权重系数
代码语言:javascript
代码运行次数:0
运行
复制
print("特征权重:", model.coef_)
# 输出:[-0.12, 0.04, -0.02, ...] 
    • 正权重:该特征提升房价(如学区评分)
    • 负权重:该特征降低房价(如犯罪率)
  1. 截距:基础房价(所有特征为0时的理论值)
七、避坑指南:线性回归的局限性
1. 线性假设陷阱

反例:光照强度与植物生长速度的关系

→ 解决方案:多项式回归(添加x²项)

2. 多重共线性问题

当特征相关时(如"房间数"和"面积"):

  • 权重系数失真
  • 模型不稳定

检测方法

代码语言:javascript
代码运行次数:0
运行
复制
import seaborn as sns
sns.heatmap(df.corr(), annot=True)  # 绘制相关系数矩阵
3. 异常值敏感

单个离群点可能大幅影响直线位置:可考虑采用→ 解决方案:RANSAC算法、岭回归。

八、扩展学习:更深层次的优化技巧
1. 特征工程(效果提升关键!)
  • 标准化:(x - mean)/std → 加速收敛
  • 对数变换:处理指数关系(如收入与消费)
  • 交互项:添加特征乘积(如面积×学区)
2. 正则化(防过拟合)

        岭回归(Ridge):惩罚大权重(L2正则)

代码语言:javascript
代码运行次数:0
运行
复制
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=0.5)  # alpha控制惩罚力度

        Lasso回归:自动特征选择(L1正则)

代码语言:javascript
代码运行次数:0
运行
复制
lasso = Lasso(alpha=0.1)
3. 交叉验证
代码语言:javascript
代码运行次数:0
运行
复制
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)  # 5折交叉验证
print("平均得分:", scores.mean())
九、数学不成立的场景?(思维拓展)
案例3:预测学生成绩

特征:学习时间、智商、家庭收入 目标:期末分数

线性回归失效原因

  1. 存在天花板效应(分数不超过100)
  2. 特征交互复杂(智商高可能缩短所需学习时间)

此时需要逻辑回归(下篇详解)

十、总结:线性回归知识图谱

如果本文对你有帮助,欢迎点赞收藏!下期预告:《七天学完十大机器学习经典算法-02.逻辑回归:从概率到决策的智慧》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、为什么线性回归是机器学习"第一课"?
  • 二、线性回归的本质:从散点图中找规律
    • 生活案例1:可乐销量预测
    • 数学建模
  • 三、核心问题:如何找到最佳直线?
    • 关键思想:最小化预测误差
  • 四、数学推导:闭眼也能求出最优解
    • 方法1:正规方程(初中代数就能懂)
    • 来看一个简单的计算案例(取气温,可乐销量数据作为x,y轴):
  • 五、升级版:多元线性回归(现实更复杂!)
    • 生活案例2:房价预测
    • 矩阵解法(高效计算)
  • 六、Python实战:预测房价
    • 数据集:波士顿房价(经典入门)
    • 关键结果解读:
  • 七、避坑指南:线性回归的局限性
    • 1. 线性假设陷阱
    • 2. 多重共线性问题
    • 3. 异常值敏感
  • 八、扩展学习:更深层次的优化技巧
    • 1. 特征工程(效果提升关键!)
    • 2. 正则化(防过拟合)
    • 3. 交叉验证
  • 九、数学不成立的场景?(思维拓展)
    • 案例3:预测学生成绩
  • 十、总结:线性回归知识图谱
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档