分类损失函数
矩阵表达形式
梯度下降法
Repeat {
}
分解之后得到:
repeat {
}
矩阵表达式
高级最优化
比梯度下降法更高效的求损失函数最小值的方法有
- Conjugate gradient
- BFGS
- L-BFGS
用这些方法,我们只需要提供损失函数 $J(\theta)$ , 初始化 $\theta$ 和其梯度 $\frac{\partial}{\partial \theta_{j}}J(\theta)$ 即可.
用matlab来表达
function [Jval, gradient] = costFunction(theta)
jVal = [...code to computer J(theta)...];
gradient = [... code to computer derivative of J(theta) ];
end
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2, 1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
多类分类器(Multiclass classfication: One-Vs-All)
基本思路: 分别对每一类做二类分类,得到每一类对应的预测值,预测值哪一类最大,那么这个样本就属于那一类。
正规化(regularization)
Underfitting, or High Bias: 就是得到的曲线误差跟样本的误差太大,可能是模型太简单或者特征值 太少。比如真实的情况应该是一个二次曲线,那么我们用直线模型去预测的话就会导致误差巨大,这种问题 我们称之为Underfitting or High Bias.
Overfitting, or high variance: 就是得到的曲线对样本拟合的非常好,误差非常小,但是如果有新样本 加入的话,模型的误差就会变得非常大。
那么怎么克服这两种情况呢?
- Under fitting, 可以适当增加特征值,或者增加样本数目来克服
- Overfitting, 这种情况可以通过加少特征值或者减少某些特征值的权重来克服。
正规化拟合
线性拟合和分类方法都可以进行正规化操作。
损失函数
梯度下降法
我们可以通过修改梯度下降法的公式来加入正规化操作,如下边公式,
repeat{
}
其中, $\frac{\lambda}{m}\theta_{j}$ 就是正规化项。
公式也可以表达成下边的形式:
$1 - \alpha \frac{\lambda}{m}$ 总是小于1,我们可以看出,每一次迭代,$\theta_{j}$ 都会减小影响力。