一、线性回归
-
作用: 线性回归是一种用于建立和分析变量间线性关系的统计方法,其主要作用是通过拟合一条直线(或超平面)来预测因变量(目标)与一个或多个自变量(特征)之间的定量关系。
-
为什么需要它:
- 预测与估计: 当需要基于已知数据预测未知结果时(如根据房屋面积预测房价),线性回归提供了一种简单有效的建模工具。
- 关系分析: 它能量化变量间的影响程度(如广告投入与销售额的关系),帮助识别关键因素。
- 可解释性强: 模型参数明确表示特征对结果的影响方向(正/负相关)和强度,便于业务决策。
- 基础模型: 许多复杂机器学习算法(如神经网络)以线性回归为基础扩展,掌握它有助于理解更高级模型。
-
它是怎么工作的:
-
模型构建: 假设因变量
y与自变量x₁, x₂, ..., xₙ满足线性关系y = β₀ + β₁x₁ + ... + βₙxₙ + ε,其中β为系数,ε为误差项。 -
参数估计: 通过最小二乘法求解系数,即找到一组
β值,使所有数据点的预测值与真实值的误差平方和最小化:min Σ(yᵢ - ŷᵢ)² -
模型验证: 使用判定系数(R²)等指标评估模型拟合优度,检验假设(如线性关系、误差独立性)。
-
预测应用: 将新数据代入拟合后的方程,计算预测值并分析不确定性(如置信区间)。
-
二、梯度下降
-
作用: 梯度下降是一种用于寻找函数最小值的优化算法,其主要作用是通过迭代更新参数来最小化损失函数,从而训练机器学习模型。
-
为什么需要它:
- 复杂模型求解: 当模型参数无法直接通过数学公式求解时(如神经网络、逻辑回归),梯度下降提供了有效的数值优化方法。
- 大规模数据优化: 对于高维参数空间和大数据集,梯度下降能够高效地找到近似最优解。
- 通用性: 可应用于各种可微函数的优化问题,从简单的线性回归到复杂的深度学习模型。
- 收敛 保证: 在合适的条件下,算法能保证收敛到局部最优解(凸函数中为全局最优解)。
-
它是怎么工作的:
-
初始化参数: 随机选择一组初始参数值
θ = [θ₀, θ₁, ..., θₙ] -
计算梯度: 计算损失函数
J(θ)对每个参数的偏导数(梯度):∇J(θ) = [∂J/∂θ₀, ∂J/∂θ₁, ..., ∂J/∂θₙ] -
更新参数: 沿着梯度反方向(下降方向)更新参数,步长由学习率
α控制:θ ← θ - α × ∇J(θ) -
迭代 收敛 : 重复步骤2-3直到满足停止条件(如梯度接近零、达到最大迭代次数或损失变化很小)
-
三、反向传播
-
作用: 反向传播是一种高效计算神经网络中损失函数对所有权重参数梯度的算法,其主要作用是通过链式法则将误差从输出层向输入层逐层反向传播,为梯度下降优化提供必要的梯度信息。
-
为什么需要它:
- 梯度计算效率: 神经网络可能包含数百万个参数,手动计算每个参数的梯度计算量巨大,反向传播通过系统化的方式高效计算所有梯度。
- 深层网络训练: 对于深度神经网络,直接计算内部层权重的梯度十分困难,反向传播利用链式法则解决了这个问题。
- 误差分配: 能够合理地将最终输出误差分配给网络中每个神经元和连接权重,明确各参数对总误差的贡献程度。
- 通用性: 适用于各种网络结构(前馈网络、CNN、RNN等),是深度学习训练的基石算法。
-
它是怎么工作的:
-
前向传播: 输入数据通过网络逐层计算,得到最终输出值:
z⁽ˡ⁾ = W⁽ˡ⁾a⁽ˡ⁻¹⁾ + b⁽ˡ⁾,a⁽ˡ⁾ = σ(z⁽ˡ⁾)其中W⁽ˡ⁾为权重,b⁽ˡ⁾为偏置,σ为激活函数 -
误差计算: 计算输出层误差:
δ⁽ᴸ⁾ = ∇ₐJ ⊙ σ'(z⁽ᴸ⁾)其中J为损失函数,⊙表示逐元素相乘 -
反向传播误差: 从输出层向输入层逐层计算误差:
δ⁽ˡ⁾ = ((W⁽ˡ⁺¹⁾)ᵀδ⁽ˡ⁺¹⁾) ⊙ σ'(z⁽ˡ⁾) -
计算梯度: 根据误差计算损失函数对权重和偏置的梯度:
∂J/∂W⁽ˡ⁾ = δ⁽ˡ⁾(a⁽ˡ⁻¹⁾)ᵀ∂J/∂b⁽ˡ⁾ = δ⁽ˡ⁾ -
参数更新: 使用梯度下降或其他优化算法更新参数:
W⁽ˡ⁾ ← W⁽ˡ⁾ - α × ∂J/∂W⁽ˡ⁾b⁽ˡ⁾ ← b⁽ˡ⁾ - α × ∂J/∂b⁽ˡ⁾
-
四、逻辑回归
-
作用: 逻辑回归是一种用于解决二分类问题的统计学习方法,其主要作用是通过Sigmoid函数将线性回归的输出映射到(0,1)区间,得到样本属于某个类别的概率预测。
-
为什么需要它:
- 概率输出:不同于直接输出类别,逻辑回归输出概率值,可以量化分类的置信度,为风险决策提供依据。
- 线性不可分问题的基础:虽然本身是线性分类器,但通过特征工程可以处理非线性问题,是许多复杂模型的基础。
- 强可解释性:模型系数可以解释为特征对分类结果的影响程度和方向,在医疗、金融等领域至关重要。
- 计算效率高:训练和预测速度快,适用于大规模数据集和实时预测场景。
-
它是怎么工作的:
-
线性组合: 首先计算特征的线性组合:
z = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ -
Sigmoid映射: 通过Sigmoid函数将线性结果映射到(0,1)区间:
P(y=1|x) = 1 / (1 + e⁻ᶻ)该函数将任意实数z转换为概率值,当z→+∞时P→1,z→-∞时P→0 -
决策边界:设定阈值(通常为0.5)进行类别判定:
- 如果
P(y=1|x) ≥ 0.5,预测为类别1 - 如果
P(y=1|x) < 0.5,预测为类别0
- 如果
-
参数估计:使用最大似然估计和梯度下降优化损失函数(交叉熵损失):
J(β) = -1/m × Σ[yᵢlog(Pᵢ) + (1-yᵢ)log(1-Pᵢ)] -
模型评估:使用准确率、精确率、召回率、AUC-ROC等指标评估分类性能。
-
五、逻辑回归处理多分类问题
-
作用: 逻辑回归处理多分类问题是通过特定的扩展策略将二分类逻辑回归应用于多个类别的分类任务,主要作用是在保持概率解释性的同时对样本进行多类别分类预测。
-
为什么需要它:
- 现实需求: 实际应用中大量存在多分类问题(如图像分类、新闻分类、疾病分型等),需要将二分类模型扩展到多分类场景。
- 概率一致性: 相比直接构建复杂的多分类模型,该方法能保证所有类别的预测概率之和为1,提供一致的概率解释。
- 训练效率: 通过分解为多个二分类问题,可以并行训练,提高计算效率。
- 模型统一性: 在已有逻辑回归基础设施的基础上,无需引入全新模型即可处理多分类问题。
-
它是怎么工作的:
-
一对多策略:
- 为每个类别训练一个二分类器,将该类作为正类,其他所有类作为负类
- 对于K个类别,训练K个独立的二分类模型
- 预测时选择概率最高的类别作为最终结果
-
一对一策略:
- 为每两个类别训练一个二分类器
- 对于K个类别,训练C(K,2) = K(K-1)/2个分类器
- 预测时采用投票机制,选择得票最多的类别
-
Softmax回归:
- 直接扩展逻辑回归到多分类的端到端方法
- 使用Softmax函数计算每个类别的概率:
P(y=k|x) = e^{zₖ} / Σ{e^{zⱼ}} for j=1 to K - 其中
zₖ = βₖ₀ + βₖ₁x₁ + ... + βₖₙxₙ
-
损失函数: 使用交叉熵损失函数
J(β) = -1/m × Σ Σ yᵢₖlog(Pᵢₖ)其中yᵢₖ是样本i在类别k的真实标签(one-hot编码)
-
六、卷积神经网络(CNN)
-
作用: 卷积神经网络是一种专门用于处理网格状数据(如图像、音频、时间序列)的深度学习架构,其主要作用是通过局部连接、权重共享和池化等机制自动提取数据的层次化特征,实现高效的模式识别和分类。
-
为什么需要它:
- 保留空间信息:传统全连接网络会破坏图像等数据的空间结构,CNN通过卷积操作保持空间相关性。
- 参数效率:权重共享大幅减少参数数量,降低过拟合风险,提高训练效率。
- 平移不变性:无论特征出现在图像的哪个位置,CNN都能有效识别,具备良好的泛化能力。
- 层次化特征学习:自动从低级特征(边缘、纹理)到高级特征(物体部件、整体)进行渐进式学习。
-
它是怎么工作的:
-
卷积层:
- 使用卷积核在输入数据上滑动,进行局部特征提取
- 计算方式:
(输入 * 卷积核) + 偏置,通过激活函数输出特征图 - 多个卷积核可提取不同类型的特征
-
池化层:
- 对特征图进行下采样,减少数据维度,增强平移不变性
- 常用最大池化(取区域内最大值)或平均池化
- 保留主要特征同时降低计算复杂度
-
激活函数:
- 引入非线性变换,增强模型表达能力
- 常用ReLU:
f(x) = max(0, x)
-
全连接层:
- 在网络的末端,将提取的特征进行综合,输出最终分类结果
- 将多维特征图展平为一维向量进行处理
-
端到端训练:
-
通过反向传播和梯度下降优化所有参数
-
损失函数根据任务选择(如交叉熵损失用于分类)
-
-
七、循环神经网络(RNN)
-
作用: 循环神经网络是一种专门用于处理序列数据的神经网络架构,其主要作用是通过循环连接和内部状态记忆来捕捉序列中的时间依赖关系和上下文信息,实现对序列数据的建模、预测和生成。
-
为什么需要它:
- 处理变长序列:传统神经网络要求固定尺寸输入,RNN可以处理任意长度的序列数据。
- 时间依赖性:能够捕捉序列中元素之间的时间关联,如自然语言中词汇的上下文关系。
- 记忆能力:通过隐藏状态保留历史信息,对序列的长期模式进行建模。
- 序列建模:适用于需要理解顺序关系的任务,如语音识别、机器翻译、时间序列预测等。
-
它是怎么工作的:
-
循环结构:
- 每个时间步共享相同的权重参数
- 隐藏状态
h_t传递历史信息:h_t = f(W·[h_{t-1}, x_t] + b) - 其中
h_{t-1}是上一时刻隐藏状态,x_t是当前输入
-
基本单元计算:
- 输入门:接收当前输入
x_t和上一时刻隐藏状态h_{t-1} - 状态更新:
h_t = tanh(W_h·[h_{t-1}, x_t] + b_h) - 输出计算:
y_t = softmax(W_y·h_t + b_y)
- 输入门:接收当前输入
-
变体结构:
- LSTM:通过输入门、遗忘门、输出门控制信息流,解决梯度消失问题
- GRU:简化版LSTM,只有重置门和更新门
-
训练方式:
- 通过时间反向传播(BPTT)计算梯度
- 使用梯度裁剪防止梯度爆炸
- 序列损失函数优化(如交叉熵损失)
-