当前位置: 首页 > news >正文

2025-03-23 吴恩达机器学习3——多维特征

文章目录

  • 1 多元引入
  • 2 矢量化
    • 2.1 示例
    • 2.2 非矢量化实现
    • 2.3 矢量化实现
    • 2.4 应用
  • 3 特征缩放
    • 3.1 举例
    • 3.2 必要性
    • 3.3 方法
      • 3.3.1 最大最小值缩放(Min-Max Scaling)
      • 3.3.2 均值归一化(Mean Normalization)
      • 3.3.3 Z 分数归一化(Z-Score Normalization)
    • 3.4 小结
  • 4 梯度下降与学习率
    • 4.1 梯度下降
    • 4.2 学习率
  • 5 特征工程
    • 5.1 示例
    • 5.2 创建特征
  • 6 多项式回归

1 多元引入

​ 在原始的线性回归模型中,我们只有一个特征 x x x(例如房屋的大小),并预测目标变量 y y y(例如房屋的价格)。模型的形式为:
f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b(x)=wx+b
​ 然而,在实际应用中,我们通常有多个特征来预测目标变量。例如,

  • 房屋大小
  • 卧室数量
  • 楼层数量
  • 房屋的使用年限

​ 这些额外的特征可以提供更多的信息,帮助我们更准确地预测价格。

​ 为了处理多个特征,引入以下符号:

  • X 1 X_1 X1, X 2 X_2 X2, X 3 X_3 X3, X 4 X_4 X4 分别表示四个特征(例如房屋大小、卧室数量、楼层数量、房屋使用年限)。
  • X j X_j Xj 表示第 j j j 个特征,其中 j j j 从 1 到 4。
  • n n n 表示特征的总数,在这个例子中 n = 4 n=4 n=4
  • X ( i ) X^{(i)} X(i)表示第 i i i 个训练示例的特征向量,例如 X ( 2 ) = [ 1416 , 3 , 2 , 40 ] X^{(2)} = [1416, 3, 2, 40] X(2)=[1416,3,2,40]
  • X j ( i ) X_j^{(i)} Xj(i) 表示第 i i i 个训练示例的第 j j j 个特征的值,例如 X 3 ( 2 ) = 2 X_3^{(2)}=2 X3(2)=2(表示第二个训练示例的楼层数量)。
image-20250323122207801

​ 此时,线性回归模型的形式变为:
f w , b ( X ) = w 1 X 1 + w 2 X 2 + w 3 X 3 + w 4 X 4 + b f_{w,b}(X)=w_1X_1+w_2X_2+w_3X_3+w_4X_4+b fw,b(X)=w1X1+w2X2+w3X3+w4X4+b
​ 例如,一个可能的房价预测模型可能是:
f w , b ( X ) = 0.1 X 1 + 4 X 2 + 10 X 3 − 2 X 4 + 80 f_{w,b}(X)=0.1X_1+4X_2+10X_3-2X_4+80 fw,b(X)=0.1X1+4X2+10X32X4+80

  • b = 80 b=80 b=80 表示房屋的基本价格为 80,000 美元(假设没有大小、卧室、楼层和年龄)。
  • w 1 = 0.1 w1=0.1 w1=0.1 表示每增加一平方英尺,价格增加 100 美元。
  • w 2 = 4 w2=4 w2=4 表示每增加一个卧室,价格增加 4,000 美元。
  • w 3 = 10 w3=10 w3=10 表示每增加一层,价格增加 10,000 美元。
  • w 4 = − 2 w4=−2 w4=2 表示每增加一年房屋使用年限,价格减少 2,000 美元。
image-20250323122524158

​ 为了简化表示,我们可以将参数 w w w 和特征 X X X 表示为向量:
w ⃗ = [ w 1 , w 2 , ⋯   , w n ] X ⃗ = [ X 1 , X 2 , ⋯   , X n ] \vec{w}=[w_1,w_2,\cdots,w_n]\\ \vec{X}=[X_1,X_2,\cdots,X_n] w =[w1,w2,,wn]X =[X1,X2,,Xn]
​ 因此,模型可表示为:
f w , b ( X ) = w ⃗ ⋅ X ⃗ + b f_{w,b}(X)=\vec{w}\cdot\vec{X}+b fw,b(X)=w X +b
​ 这里的点积是两个向量的对应元素相乘后求和的结果:
w ⃗ ⋅ X ⃗ = w 1 X 1 + w 2 X 2 + ⋯ + w n X n \vec{w}\cdot\vec{X}=w_1X_1+w_2X_2+\cdots+w_nX_n w X =w1X1+w2X2++wnXn
image-20250323122822263

2 矢量化

​ 矢量化是一种将操作应用于整个向量或矩阵的技术,而不是逐个元素进行处理。在机器学习中,矢量化可以极大地提高代码的效率,尤其是在处理大规模数据集时。

​ 矢量化不仅可以缩短代码,还能显著提高算法的运行效率。通过编写矢量化代码,您可以利用现代数值线性代数库(如 NumPy)以及 GPU(图形处理单元)硬件,从而加速计算过程。

2.1 示例

​ 假设我们有一个线性回归模型,参数为 w w w b b b,其中 w w w 是一个包含三个数字的向量,特征向量 x x x 也包含三个数字。这里 n = 3 n=3 n=3

import numpy as np

w = np.array([1.0, 2.5, -3.3])  # 参数向量
x = np.array([10, 20, 30])  # 特征向量
b = 4  # 偏置项

​ 在 Python 中,数组的索引从 0 开始,因此:

  • w [ 0 ] w[0] w[0] 对应 w 1 w_1 w1
  • w [ 1 ] w[1] w[1] 对应 w 2 w_2 w2
  • w [ 2 ] w[2] w[2] 对应 w 3 w_3 w3
image-20250323124435323

2.2 非矢量化实现

方法 1:逐个元素计算

f = w[0] * x[0] + w[1] * x[1] + w[2] * x[2] + b

​ 这种方法在 n n n 较小时可行,但当 n n n 很大时(例如 100 或 100,000),代码会变得冗长且效率低下。

方法 2:使用 for 循环

f = 0
for j in range(3):
    f += w[j] * x[j]
f += b

​ 虽然这种方法比逐个元素计算更简洁,但仍然没有利用矢量化,效率不高。

​ 这种实现方式会顺序执行计算,即先计算索引 0 的值,然后是索引 1,索引 2。这种方式效率较低,尤其是在 n n n 很大时。

2.3 矢量化实现

​ 使用 NumPy 的 dot 函数,可以将模型的计算简化为一行代码:

f = np.dot(w, x) + b
  • np.dot(w, x) 计算向量 w w w x x x 的点积。
  • 点积的定义为: w ⃗ ⋅ x ⃗ = w 1 x 1 + w 2 x 2 + ⋯ + w n x n \vec{w}\cdot\vec{x}=w_1x_1+w_2x_2+\cdots+w_nx_n w x =w1x1+w2x2++wnxn

矢量化的优势

  1. 代码更简洁

    矢量化将复杂的计算简化为一行代码,使代码更易读、更易维护。

  2. 运行效率更高

    矢量化利用现代计算机的并行计算能力,尤其是在使用 GPU 时,可以显著加速计算过程。

底层原理

  • NumPy 的 dot 函数能够在计算机中使用并行硬件(如 CPU 或 GPU),从而比 for 循环或逐个元素计算更高效。
  • n n n 很大时,矢量化实现的效率优势尤为明显。

2.4 应用

​ 假设我们有一个多元线性回归模型,包含 16 个特征和 16 个参数 w 1 w_1 w1 w 16 w_{16} w16。我们需要更新这些参数,公式为:
w j = w j − α ⋅ d j w_j=w_j-\alpha\cdot d_j wj=wjαdj
其中 α α α 是学习率, d j d _ j dj 是导数项。

非矢量化实现

for j in range(16):
    w[j] = w[j] - 0.1 * d[j]

​ 这种实现方式会逐个更新每个参数,效率较低。

矢量化实现

w = w - 0.1 * d

​ 在矢量化实现中,计算机可以同时更新所有 16 个参数,利用并行硬件高效完成计算。

image-20250323125114820

3 特征缩放

3.1 举例

​ 假设我们有两个特征:

  • x 1 x_ 1 x1:房屋的大小(范围:300 到 2000 平方英尺)
  • $ x_2$:卧室的数量(范围:0 到 5)

​ 我们使用这两个特征来预测房屋的价格。假设一个房屋的面积为 2000 平方英尺,有 5 间卧室,价格为 500,000 美元。

  1. 参数示例 1

    • w 1 = 50 , w 2 = 0.1 , b = 50 w_1=50, w_2=0.1, b =50 w1=50,w2=0.1,b=50

    • 预测价格:50×2000+0.1×5+50=100,000+0.5+50=100,050.5 千美元

    • 这个预测与实际价格 500,000 美元相差甚远。

  2. 参数示例 2

    • w 1 = 0.1 , w 2 = 50 , b = 50 w _1=0.1, w_2=50, b =50 w1=0.1,w2=50,b=50

    • 预测价格:0.1×2000+50×5+50=200+250+50=500 千美元

    • 这个预测与实际价格 500,000 美元一致。

image-20250323125656329

结论

  • 当特征的值范围较大时(如房屋大小),对应的参数 w 1 w_1 w1 应该较小。
  • 当特征的值范围较小时(如卧室数量),对应的参数 w 2 w_2 w2 应该较大。

3.2 必要性

​ 如果特征的值范围差异很大,梯度下降可能会在等高线图中来回弹跳,导致收敛速度变慢。例如:

  • x 1 x_1 x1 的范围较大,导致 w 1 w_1 w1 的微小变化对成本函数 J J J 的影响较大。
  • x 2 x_2 x2 的范围较小,导致 w 2 w_2 w2 的较大变化对成本函数 J J J 的影响较小。

​ 这种情况下,等高线图会呈现高瘦的椭圆形,梯度下降需要更长时间才能找到全局最小值。

image-20250323125945872

​ 特征缩放通过将不同特征的值范围调整到相似的水平,使等高线图更接近圆形,从而优化梯度下降的路径。具体来说:

  • x 1 x_1 x1 x 2 x_2 x2 的值范围都调整到 0 到 1 之间。
  • 这样,梯度下降可以更直接地找到全局最小值。
image-20250323130051463

3.3 方法

3.3.1 最大最小值缩放(Min-Max Scaling)

​ 将特征值缩放到 [ 0 , 1 ] [0,1] [0,1] 区间,公式为:
x s c a l e d = x − x min ⁡ x max ⁡ − x min ⁡ x_{\mathrm{scaled}}=\frac{x-x_{\min}}{x_{\max}-x_{\min}} xscaled=xmaxxminxxmin

  • 特征 x 1 x_1 x1 的范围为 300 到 2000。

    x 1 , s c a l e d = x 1 − 300 2000 − 300 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-300}{2000-300} x1,scaled=2000300x1300

  • 特征 x 2 x_2 x2 的范围为 0 到 5:

    x 2 , s c a l e d = x 2 5 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2}{5} x2,scaled=5x2

3.3.2 均值归一化(Mean Normalization)

​ 将特征值调整到以 0 为中心,公式为:
x s c a l e d = x − μ x max ⁡ − x min ⁡ x_{\mathrm{scaled}}=\frac{x-\mu}{x_{\max}-x_{\min}} xscaled=xmaxxminxμ

  • 特征 x 1 x_1 x1 的均值为 600: x 1 , s c a l e d = x 1 − 600 2000 − 300 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-600}{2000-300} x1,scaled=2000300x1600
    缩放后的范围为 -0.18 到 0.82。
  • 特征 x 2 x_2 x2 的均值为 2.3: x 2 , s c a l e d = x 2 − 2.3 5 − 0 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2-2.3}{5-0} x2,scaled=50x22.3
    缩放后的范围为 -0.46 到 0.54。
image-20250323161919636

3.3.3 Z 分数归一化(Z-Score Normalization)

​ 将特征值调整到均值为 0,标准差为 1,公式为:
x s c a l e d = x − μ σ x_{\mathrm{scaled}}=\frac{x-\mu}{\sigma} xscaled=σxμ

  • 特征 x 1 x_1 x1 的均值为 600,标准差为 450: x 1 , s c a l e d = x 1 − 600 450 x_{1,\mathrm{scaled}}=\displaystyle\frac{x_1-600}{450} x1,scaled=450x1600
    缩放后的范围为 -0.67 到 3.1。
  • 特征 x 2 x_2 x2 的均值为 2.3,标准差为 1.4: x 2 , s c a l e d = x 2 − 2.3 1.4 x_{2,\mathrm{scaled}}=\displaystyle\frac{x_2-2.3}{1.4} x2,scaled=1.4x22.3
    缩放后的范围为 -1.6 到 1.9。
image-20250323162138121

3.4 小结

目标范围

​ 通常将特征值调整到 -1 到 1 之间,但 -3 到 3 或 -0.3 到 0.3 也是可接受的。

特殊情况

  • 如果特征值范围非常大(如 -100 到 100),建议进行缩放。
  • 如果特征值范围非常小(如 -0.001 到 0.001),也可以考虑缩放。
  • 如果特征值范围适中(如 0 到 3 或 -2 到 0.5),不缩放通常也没有问题。
image-20250323162304136

4 梯度下降与学习率

4.1 梯度下降

​ 梯度下降的目标是通过迭代更新参数 w w w b b b,以最小化成本函数 J J J。其更新规则为:
{ w = w − α ∂ J ∂ w b = b − α ∂ J ∂ b \left\{ \begin{aligned} & w=w-\alpha\frac{\partial J}{\partial w} \\ & b=b-\alpha\frac{\partial J}{\partial b} \end{aligned} \right. w=wαwJb=bαbJ
​ 其中, α α α 是学习率。

判断梯度下降是否收敛的方法

  1. 绘制学习曲线

    • 学习曲线:在每次梯度下降迭代后,计算并绘制成本函数 J J J 的值。横轴是迭代次数,纵轴是成本 J J J

    • 正常情况:如果梯度下降正常运行,成本 J J J 应该在每次迭代后逐渐减小。

    • 异常情况:如果 J J J 在某次迭代后增加,可能意味着学习率 α α α 过大,或者代码中存在错误。

    • 收敛判断:当学习曲线趋于平稳(即 J J J 不再显著下降)时,可以认为梯度下降已经收敛。

    示例:

    • 在 100 次迭代后, J J J 的值为某个点。

    • 在 200 次迭代后, J J J 的值进一步减小。

    • 在 300 次迭代后, J J J 的值趋于平稳,表明梯度下降已收敛。

  2. 自动收敛测试

    • 定义:设置一个阈值 ϵ ϵ ϵ(例如 0.001),如果成本 J J J 在一次迭代中减少的幅度小于 ϵ ϵ ϵ,则认为梯度下降已收敛。

    • 优点:自动化判断,无需手动绘制学习曲线。

    • 缺点:选择合适的阈值 ϵ ϵ ϵ 可能比较困难。

image-20250323162418504
  • 不同应用程序中,梯度下降收敛所需的迭代次数可能差异很大。某些模型可能在 30 次迭代后收敛,而其他模型可能需要 1,000 或 100,000 次迭代。

  • 很难提前预测梯度下降需要多少次迭代才能收敛,因此绘制学习曲线是一种有效的方法。

4.2 学习率

​ 选择合适的学习率 α α α 是优化梯度下降算法的关键。如果学习率太小,梯度下降会收敛得很慢;如果学习率太大,梯度下降可能无法收敛,甚至发散。在本视频中,我们将探讨如何为模型选择一个合适的学习率。

  • 学习率太小:梯度下降收敛速度很慢,需要大量迭代才能达到最小值。
  • 学习率太大:梯度下降可能无法收敛,甚至导致成本函数 J J J 在每次迭代后增加。

示例

  • 如果学习率太大,更新步骤可能会“跳过”最小值,导致成本函数 J J J 在每次迭代后波动或增加。
  • 如果学习率太小,更新步骤会非常小,导致收敛速度缓慢。
image-20250323163235805

选择学习率的策略

  • 尝试一系列值

    从较小的学习率开始,逐步增加,观察成本 J J J 的变化。

    • 例如,尝试 α = 0.001 , 0.003 , 0.01 , 0.03 , 0.1 α =0.001,0.003,0.01,0.03,0.1 α=0.001,0.003,0.01,0.03,0.1 等。
    • 对于每个 α α α,运行少量迭代,绘制成本 J J J 随迭代次数的变化。
  • 选择合适的学习率

    • 选择使成本 J J J 快速且持续下降的最大可能学习率。
    • 避免选择过大的学习率,以免导致发散。

实践建议

  • 初始尝试:从 α = 0.001 α =0.001 α=0.001 开始,逐步增加(例如每次增加 3 倍)。
  • 观察曲线:绘制成本 J J J 随迭代次数的变化,选择使 J J J 快速下降的 α α α
  • 避免过大:确保学习率不会导致成本 J J J 增加或波动。
image-20250323163417374

5 特征工程

5.1 示例

​ 假设我们有以下两个特征来预测房屋价格:

  • x 1 x_1 x1:地块的宽度(临街面)
  • x 2 x_2 x2:地块的深度

​ 初始模型如下:
f w , b ( X ) = w 1 x 1 + w 2 x 2 + b f_{w,b}(X)=w_1x_1+w_2x_2+b fw,b(X)=w1x1+w2x2+b
​ 虽然这个模型可以正常工作,但可能不是最有效的。我们可以通过特征工程来改进模型。

5.2 创建特征

​ 地块的面积(宽度 × 深度)可能比单独的宽度和深度更能预测房屋价格。因此,可以定义一个新特征:
x 3 = x 1 × x 2 x_3=x_1\times x_2 x3=x1×x2
​ 改进后的模型如下:
f w , b ( X ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + b f_{w,b}(X)=w_1x_1+w_2x_2+w_3x_3+b fw,b(X)=w1x1+w2x2+w3x3+b
image-20250323163659119

  • 通过转换或组合原始特征,可以创建新的、更有意义的特征。
  • 特征工程不仅可以帮助拟合直线,还可以拟合曲线和非线性函数,从而更好地拟合数据。

6 多项式回归

​ 结合多元线性回归特征工程的思想,提出一种称为多项式回归的新算法,可以将曲线和非线性函数拟合到数据中。

​ 假设我们有一个房屋数据集,其中特征 x x x 是房屋的大小(以平方英尺为单位)。数据分布可能不适合用直线拟合,而是更适合用曲线拟合。

image-20250323164323628

​ 多项式回归通过将原始特征 x x x 提升为不同的幂次(如 x 2 , x 3 x_2,x_3 x2,x3)来创建新的特征。例如:

  • 第一个特征: x x x(房屋大小)
  • 第二个特征: x 2 x_2 x2(房屋大小的平方)
  • 第三个特征: x 3 x_3 x3(房屋大小的立方)
image-20250323164544315

二次函数

  • 模型 f w , b ( X ) = w 1 x 1 + w 2 x 2 2 + b f_{w,b}(X)=w_1x_1+w_2x_2^2+b fw,b(X)=w1x1+w2x22+b
  • 优点:可以拟合数据的二次曲线。
  • 问题:二次函数最终会下降,这与房价随面积增加而上升的预期不符。

三次函数

  • 模型 f w , b ( X ) = w 1 x 1 + w 2 x 2 2 + w 3 x 3 3 + b f_{w,b}(X)=w_1x_1+w_2x_2^2+w_3x_3^3+b fw,b(X)=w1x1+w2x22+w3x33+b
  • 优点:可以拟合更复杂的曲线,更好地适应数据。
  • 特点:随着面积的增加,曲线最终会恢复上升,符合房价的预期。

特征缩放的必要性

​ 如果房屋大小的范围是 1 到 1,000 平方英尺,那么 x 2 x_2 x2 的范围是 1 到 1,000,000, x 3 x_3 x3 的范围是 1 到 1,000,000,000。这些特征的值范围差异很大,因此在应用梯度下降时,特征缩放变得尤为重要。

相关文章:

  • Dubbo SPI 加载逻辑
  • GEO与AISEO的关系解析:核心差异与协同逻辑
  • WebLogic漏洞再现
  • 算法基础篇(1)(蓝桥杯常考点)
  • Java多线程与高并发专题——使用 Future 有哪些注意点?Future 产生新的线程了吗?
  • python解决多个矢量点图层合并为一个点图层
  • Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode
  • Mongodb分片模式部署
  • 基于HTML的邮件发送状态查询界面设计示例
  • centos7 下haproxy+keepalived 搭建高可用服务器
  • 软件版本号制定方法
  • 蓝桥杯C++基础算法-多重背包
  • quartz.net条件执行
  • python基于spark的心脏病患分类及可视化(源码+lw+部署文档+讲解),源码可白嫖!
  • 【QA】Qt中有哪些命令模式的运用?
  • AI日报 - 2025年3月24日
  • Langchain4J框架相关面试题
  • 施磊老师高级c++(五)
  • 知识库已上线
  • 同步双写与删缓存在缓存一致性的实践对比
  • 一个留美学生的思想转向——裘毓麐的《游美闻见录》及其他
  • 尹锡悦宣布退出国民力量党
  • 上百家单位展示AI+教育的实践与成果,上海教育博览会开幕
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • 马上评|家长抱婴儿值护学岗,如何避免“被自愿”?
  • 关税互降后的外贸企业:之前暂停的订单加紧发货,后续订单考验沟通谈判能力