机器学习全景指南-基石篇——预测连续值的线性回归

目录规划

为了将这所有博客里的知识点逻辑顺畅地串联起来,特此设计了以下目录结构。这个顺序遵循了"概念引入 -> 基础回归 -> 分类进阶 -> 无监督学习"的学习路径:

  1. 第一章:启蒙篇------人工智能与机器学习的宏观版图
    • 来源博客:人工智能和机器学习
    • 核心内容:AI、ML、DL的关系,机器学习的分类(监督/无监督/强化),基本工作流程。
  2. 第二章:基石篇------预测连续值的线性回归
    • 来源博客:线性回归
    • 核心内容:一元/多元线性回归,损失函数,梯度下降,代码实战。
  3. 第三章:进阶篇------解决分类问题的逻辑回归
    • 来源博客:逻辑回归
    • 核心内容:从回归到分类的跨越,Sigmoid函数,决策边界,代码实战。
  4. 第四章:直觉篇------基于距离的K-近邻 (KNN)
    • 来源博客:KNN算法
    • 核心内容:KNN原理,K值选择,距离计算,优缺点分析,代码实战。
  5. 第五章:探索篇------发现数据内在结构的聚类算法
    • 来源博客:聚类算法
    • 核心内容:K-Means原理,簇的概念,与分类的区别,应用场景。
  6. 第六章:总结与展望
    • 综合对比五大算法,如何选择适合的模型。

文章目录

  • 目录规划
  • 第二章:基石篇------预测连续值的线性回归
    • [2.1 什么是线性回归?](#2.1 什么是线性回归?)
    • [2.2 核心问题:如何找到"最好"的直线?](#2.2 核心问题:如何找到“最好”的直线?)
      • [1. 损失函数 (Loss Function)](#1. 损失函数 (Loss Function))
      • [2. 求解方法:梯度下降 (Gradient Descent)](#2. 求解方法:梯度下降 (Gradient Descent))
    • [2.3 代码实战:从零实现线性回归逻辑](#2.3 代码实战:从零实现线性回归逻辑)
    • [2.4 评估模型的好坏](#2.4 评估模型的好坏)
    • [2.5 线性回归的局限性与应对](#2.5 线性回归的局限性与应对)
    • [2.6 本章小结](#2.6 本章小结)

第二章:基石篇------预测连续值的线性回归

导读 :在机器学习的浩瀚星空中,线性回归 (Linear Regression) 是最亮的那颗启明星。它不仅是统计学中的经典方法,更是理解机器学习"损失函数"和"梯度下降"等核心概念的基石。本章带你深入理解如何通过一条直线来预测未来。

2.1 什么是线性回归?

简单来说,线性回归就是试图找到 之间的线性关系

  • 应用场景 :预测连续数值
    • 根据房屋面积预测房价
    • 根据广告投入预测销售额
    • 根据气温预测冰淇淋销量

核心公式

对于只有一个特征的情况(一元线性回归),模型的形式就是我们在初中数学学过的一次函数:

2.2 核心问题:如何找到"最好"的直线?

面对散落在坐标系中的数据点,世界上有无数条直线可以穿过它们。哪一条才是最好的?

标准答案 :让所有数据点到这条直线的误差之和最小的那条线。

1. 损失函数 (Loss Function)

为了量化"误差",我们引入损失函数 。在线性回归中,最常用的是均方误差 (MSE, Mean Squared Error)

  • 为什么要平方?
    1. 消除正负误差的抵消(防止正误差和负误差相加变成0,掩盖了真实误差)。
    2. 放大较大误差的影响:如果某个点偏离直线很远,平方后误差会变得非常大,迫使模型优先修正这些大偏差。

我们的目标就是最小

2. 求解方法:梯度下降 (Gradient Descent)

怎么找到让损失函数最小的呢?这就好比你在云雾缭绕的山顶(高损失区),想要走到山谷最低点(最小损失区),但你看不到路。

梯度下降的策略

  1. 试探:感受脚下哪个方向坡度最陡(计算梯度的导数)。
  2. 迈步:沿着最陡的下坡方向走一步。
  3. 重复:不断重复上述过程,直到走到谷底(收敛)。

数学更新公式

:除了梯度下降,对于线性回归这种简单模型,还可以使用正规方程 (Normal Equation) 直接通过矩阵运算求出最优解,但在数据量极大或特征极多时,梯度下降更通用。

2.3 代码实战:从零实现线性回归逻辑

为了让大家透彻理解,我们不仅调用库,还手动模拟一下"梯度下降"的核心逻辑,看看模型是如何一步步逼近真相的。

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# 1. 准备数据
# 假设真实规律是 y = 3x + 2,加上一点噪音
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 2 + 3 * X + np.random.randn(100, 1)

# 2. 初始化参数
w = 0.0  # 初始斜率猜为0
b = 0.0  # 初始截距猜为0
learning_rate = 0.1 # 学习率
iterations = 100    # 迭代次数

# 3. 梯度下降过程
loss_history = []

for i in range(iterations):
    # A. 预测
    y_pred = w * X + b
    
    # B. 计算误差 (残差)
    error = y_pred - y
    
    # C. 计算梯度 (导数)
    # MSE对w的导数: (2/m) * sum(error * x)
    # MSE对b的导数: (2/m) * sum(error)
    dw = (2 / len(X)) * np.sum(error * X)
    db = (2 / len(X)) * np.sum(error)
    
    # D. 更新参数 (向反方向走)
    w = w - learning_rate * dw
    b = b - learning_rate * db
    
    # 记录当前的损失值,用于观察收敛情况
    loss = np.mean(error ** 2)
    loss_history.append(loss)

print(f"训练结束!")
print(f"学到的权重 w: {w:.4f} (真实值应为 3.0)")
print(f"学到的偏置 b: {b:.4f} (真实值应为 2.0)")

# 4. 可视化结果
plt.figure(figsize=(12, 5))

# 图1:数据拟合效果
plt.subplot(1, 2, 1)
plt.scatter(X, y, alpha=0.5, label='原始数据')
plt.plot(X, w * X + b, 'r-', linewidth=2, label=f'拟合直线 (y={w:.2f}x+{b:.2f})')
plt.title('线性回归拟合效果')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()

# 图2:损失函数下降曲线
plt.subplot(1, 2, 2)
plt.plot(loss_history)
plt.title('损失函数 (MSE) 下降过程')
plt.xlabel('迭代次数')
plt.ylabel('Loss')
plt.grid(True)

plt.tight_layout()
plt.show()

代码解析

  • 我们并没有直接使用 sklearn,而是手动写了 for 循环来模拟学习过程。
  • 在每次循环中,我们计算当前直线的误差,算出梯度,然后微调
  • 运行结果你会发现,经过100次迭代,这就是机器"学习"的过程。

2.4 评估模型的好坏

训练好模型后,怎么知道它准不准?常用的指标有:

  1. MSE (均方误差):即损失函数的值。越小越好,但对异常值敏感。

  2. RMSE (均方根误差) :MSE 开根号。量纲与一致,更容易解释(例如:预测房价误差平均是 5 万元)。

2.5 线性回归的局限性与应对

虽然线性回归很强大,但它也有明显的短板:

2.6 本章小结

  • 线性回归 是解决回归问题(预测数值)的首选基准模型。
  • 核心在于定义损失函数 (MSE) 并使用梯度下降来最小化它。
  • 通过代码我们看到了参数 是如何通过迭代一步步逼近真实值的。
  • 它简单、可解释性强,但受限于线性假设,处理复杂非线性数据时需要特征工程辅助。

线性回归教会了我们"拟合"的概念。但是,现实世界中很多问题不是预测数值,而是做选择(是/否,猫/狗)。这时候,线性回归就不够用了,我们需要它的变体------逻辑回归


下一章预告:《第三章:进阶篇------解决分类问题的逻辑回归》,我们将揭开如何用回归的思想来解决分类难题,并引入神奇的 Sigmoid 函数。

相关推荐
prince_zxill2 小时前
Raspberry Pi边缘AI:运行轻量级机器学习模型
人工智能·机器学习
前端技术2 小时前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
phoenix@Capricornus2 小时前
随机变量的方差
机器学习·概率论
草莓熊Lotso2 小时前
MySQL 数据库基础入门:从概念到实战
linux·运维·服务器·数据库·c++·人工智能·mysql
Thomas.Sir2 小时前
DeepSeek:开源AI的破局者
人工智能·gpt-4·deepseek
小圣贤君2 小时前
从「选中一段」到「整章润色」:编辑器里的 AI 润色是怎么做出来的
人工智能·electron·编辑器·vue3·ai写作·deepseek·写小说
杜子不疼.2 小时前
Spring Cloud+AI :实现分布式智能推荐系统
java·人工智能·spring cloud
不如摸鱼去2 小时前
uni-app 组件库 Wot UI 的 AI 友好型编程指南
人工智能·ui·uni-app