机器学习(2)-回归、分类模型中成本函数、梯度下降

66 阅读2分钟

成本函数

用于量化模型预测结果与真实结果之间的差异

回归问题成本函数

  • 均方误差(Mean Squared Error, MSE): J(θ)=12mi=1m(hθ(x(i))y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2
  • 其他比如:均值方根误差、平均绝对误差等

分类问题成本函数

  • 对数损失:J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)})) \right]
  • 分类问题中损失函数为什么取对数?在分类问题中,模型的输出是概率,表示输入数据属于某个类别的概率。对数损失函数是凸函数,对于优化算法(如梯度下降)来说,具有良好的性质,有助于找到全局最优解。这使得优化过程更稳定,更容易收敛

梯度下降

通过最小化损失函数来寻找模型参数的最佳值。计算损失函数的梯度,逐步调整参数,使损失函数的值逐渐减小。

回归问题梯度下降

  • 损失函数对θ0\theta_0 的偏导数:
J(θ0,θ1)θ0=1mi=1m((θ0+θ1x(i))y(i))\frac{\partial J(\theta_0, \theta_1)}{\partial \theta_0} = \frac{1}{m} \sum_{i=1}^{m} \left( (\theta_0 + \theta_1 x^{(i)}) - y^{(i)} \right)
  • 损失函数对 θ1\theta_1 的偏导数:
J(θ0,θ1)θ1=1mi=1m(((θ0+θ1x(i))y(i))x(i))\frac{\partial J(\theta_0, \theta_1)}{\partial \theta_1} = \frac{1}{m} \sum_{i=1}^{m} \left( \left( (\theta_0 + \theta_1 x^{(i)}) - y^{(i)} \right) x^{(i)} \right)
  • 更新θ0\theta_0
θ0=θ0α(1mi=1m((θ0+θ1x(i))y(i)))\theta_0 = \theta_0 - \alpha \left( \frac{1}{m} \sum_{i=1}^{m} \left( (\theta_0 + \theta_1 x^{(i)}) - y^{(i)} \right) \right)
  • 更新θ1\theta_1
θ1=θ1α(1mi=1m((θ0+θ1x(i))y(i))x(i))\theta_1 = \theta_1 - \alpha \left( \frac{1}{m} \sum_{i=1}^{m} \left( (\theta_0 + \theta_1 x^{(i)}) - y^{(i)} \right) x^{(i)} \right)
  • 注意:

image.png

分类问题梯度下降

  • 代价函数关于参数求导(偏导)就行:

image.png

判断是否收敛(找到最小成本)

  • 学习曲线,横轴迭代次数,纵轴成本函数;若学习曲线不随迭代次数增加成本函数曲线平滑,则可能学习率设置太大或者代码出错
  • 自动收敛测试,epsilon ϵ\epsilon

多类特征

注意公式中是否带向量(箭头符号)

特征缩放

使梯度下降更快。数据预处理中的一个重要步骤,旨在将不同量纲的特征值调整到相同的尺度。

  • 标准化公式:x=xμσx' = \frac{x - \mu}{\sigma},比如:

image.png

  • 其他,如最小-最大归一化

过拟合与欠拟合

过拟和,高方差,欠拟合,高偏差。解决过拟合,更多数据,更少特征

  • 正则化是一种防止机器学习模型过拟合的技术。通过在损失函数中加入一个罚项(即正则化项),限制模型的复杂度。
  • 带L1正则化的代价函数:
J(θ)=12mi=1m(hθ(xi)y(i))2+λj=1nθjJ(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{i}) - y^{(i)} \right)^2 + \lambda \sum_{j=1}^{n} |\theta_j|

带L2正则化的代价函数:

J(θ)=12mi=1m(hθ(x(i))y(i))2+λ2j=1nθj2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 + \frac{\lambda}{2} \sum_{j=1}^{n} \theta_j^2
  • 带Elastic Net正则化的代价函数:
J(θ)=12mi=1m(hθ(x(i))y(i))2+λ1j=1nθj+λ22j=1nθj2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 + \lambda_1 \sum_{j=1}^{n} |\theta_j| + \frac{\lambda_2}{2} \sum_{j=1}^{n} \theta_j^2

Elastic Net正则化,结合了L1的稀疏性和L2的稳定性。

其他

  • α\alpha,学习率,步幅
  • 数学中点乘np.dot(w,x)处理更快,np.dot()使用并行硬件(cpu/gpu)
  • 决策边界其实就是分类问题中线性或非线性的分隔线