机器学习笔记Chapter1

一. 引入 (Introduction)

1.1 定义与应用

机器学习是人工智能的一个子领域。机器学习的定义为:计算机在没有明确编程的情况下学习能力的研究领域 。

  • 核心目标:让计算机通过数据自我改进,而不是通过人为编写的具体规则。

常见应用

  • 推荐系统:Netflix 推荐电影、淘宝推荐商品。
  • 自然语言处理:Siri/小爱同学、机器翻译。
  • 医疗诊断:分析医学影像,例如判断肿瘤是良性 (benign) 还是恶性 (malignant) 。

1.2 核心工作原理

  1. 输入数据:向计算机提供大量的历史数据(训练集)。
  2. 构建模型:计算机运行算法,在输入 XX 和输出 YY 之间寻找映射关系 。
  3. 预测/决策:当给出新的输入 XX 时,模型能够预测出相应的 YY

1.3 分类

根据数据是否包含标签(即是否有正确的 YY 值),机器学习主要分为以下几类:

1. 监督学习 (Supervised Learning)

这是目前应用最广泛的机器学习类型,其特点是数据集包含输入 XX 和对应的正确输出 YY

  • 回归 (Regression)

    • 定义:预测连续的数值输出。
    • 案例:根据房屋尺寸 (Size) 预测房价 (Price) 。
    • 模型:试图拟合一条直线或曲线来穿过数据点。
  • 分类 (Classification)

    • 定义:预测离散的类别输出(通常是 0 或 1,或是有限的类别)。
    • 案例:根据肿瘤大小 (Size) 和年龄 (Age) 判断肿瘤性质(0=良性, 1=恶性)。
    • 模型:试图找到一条边界(Decision Boundary)将不同类别的数据分开。

2. 无监督学习 (Unsupervised Learning)

特点是数据只包含输入 XX,没有对应的输出标签 YY。算法需要自己从数据中发现结构或模式。

  • 聚类 (Clustering)
    • 定义:将数据自动分组,使得组内数据相似度高,组间差异大。
    • 案例:新闻分类(将相似主题的新闻聚在一起)、客户细分。

3. 强化学习 (Reinforcement Learning)


二. 单变量线性回归 (Linear Regression with One Variable)

2.1 模型表示

我们要建立一个模型 ff,输入特征 xx,输出预测值 y^\hat{y}

  • 公式fw,b(x)=wx+bf_{w,b}(x) = wx + b
    • ww:权重 (weight) / 斜率。
    • bb:偏置 (bias) / 截距。
    • xx:输入特征(如房屋面积)。
    • y^\hat{y}:预测结果(如预测房价)。

2.2 代价函数 (Cost Function)

如何判断模型的好坏?我们需要一个代价函数 J(w,b)J(w,b) 来衡量预测值与真实值之间的误差 。

  • 均方误差公式

    J(w,b)=12mi=1m(y^(i)y(i))2J(w,b) = \frac{1}{2m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2

    • mm:训练样本的数量。
    • 目标:找到 wwbb,使得 J(w,b)J(w,b) 最小(minimizeJminimize J)。
  • 直观理解:代价函数 JJ 的图像通常像一个碗(凸函数),我们的目标就是找到这个碗的最低点 。

2.3 梯度下降 (Gradient Descent)

梯度下降是一种用于寻找函数最小值的算法,它可以自动找到让代价函数 JJ 最小的 wwbb

  • 算法逻辑

    1. 从任意的 w,bw, b 开始。
    2. 不断沿着梯度的反方向(下坡方向)更新参数,直到到达最低点。
  • 更新公式

    w=wαwJ(w,b)w = w - \alpha \frac{\partial}{\partial w} J(w,b)

    b=bαbJ(w,b)b = b - \alpha \frac{\partial}{\partial b} J(w,b)

  • 学习率 α\alpha (Alpha)

    • 定义:控制每一步下坡的步长大小。
    • 如果 α\alpha 过小:步长太小,下降速度极慢,需要很久才能收敛。
    • 如果 α\alpha 过大:步长太大,可能直接越过最低点,导致无法收敛甚至发散。

三. 多变量线性回归与优化 (Multiple Features)

3.1 多变量模型

当有多个特征时(例如除了面积,还有卧室数、楼层等),模型变为:

  • 公式fw,b(x)=w1x1+w2x2+...+wnxn+bf_{\vec{w},b}(\vec{x}) = w_1x_1 + w_2x_2 + ... + w_nx_n + b
  • 向量化表示:利用线性代数,写成点积形式 wx+b\vec{w} \cdot \vec{x} + b
    • 代码实现:使用 Python 的 NumPy 库 np.dot(w, x) + b 进行计算,比 for 循环效率更高 。

3.2 特征缩放 (Feature Scaling)

  • 问题:如果不同特征的取值范围差异很大(例如房价 300-2000 vs 卧室数 1-5),代价函数的等高线会变得细长,导致梯度下降路径曲折且慢。
  • 解决方法:将所有特征缩放到相近的范围(通常是 -1 到 1 之间。
    • 均值归一化 (Mean Normalization)
    • Z-score 标准化x=xμσx = \frac{x - \mu}{\sigma} (减去均值,除以标准差)。

3.3 检查收敛与学习率选择

  • 学习曲线:绘制 代价函数 JJ迭代次数 变化的曲线。如果曲线呈现下降并在最后趋于平坦,说明梯度下降正常工作 。
  • 调试:如果 JJ 随迭代次数上升,通常是因为学习率 α\alpha 太大,应尝试减小 α\alpha(如 0.001, 0.01, 0.1 等倍率尝试)。