目录
一、代价函数
二、梯度下降
三、高级优化(Advanced Optimization)
四、多类别分类(Multiclass Classification)
在分类问题中,如果我们有一组训练集,那么如何根据这个训练集来选择合适的参数θ呢?
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYTMfhHLlN3XnxCM38FdsYkRGZkRG9lcvx2bjxCMy8VZ6l2csEUeiVjTpxUNTVXW1c3TyVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxSUhxGatJGbwhFT1Y0Mk9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLmdjNxcjZ3MTZzIzNjRDMiBTYkRzNhJWZkNWNhdzYwAzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
在回归问题中我们使用到了代价函数来衡量假设函数与数据集的拟合程度,使用梯度下降算法来找到代价函数的局部最小值从而得到合适的参数θ,而在分类问题中,我们同样使用代价函数和梯度下降算法。
一、代价函数
对于线性回归模型,我们定义的代价函数J(θ)为:
但是对于逻辑回归模型,我们不能使用上面的代价函数,否则会造成代价函数图像变成下图左方的形式,我们称之为非凸函数(non-convex function):
注:国外的凸函数定义与国内的相反
这意味着我们的代价函数有多个局部最小值(如上图左边函数图像),使得我们的梯度下降算法很难收敛到全局最小值。所以为了优化我们的代价函数变成上图右边的凸函数形式,我们重新定义代价函数为:
1、当y=1的时候,Cost(hθ(x),y)=−log(hθ(x)),我们得到Cost(hθ(x),y)与hθ(x)的关系图像为:
- 当hθ(x) -> 1时,代价函数趋向于0(代价函数越小代表选取的参数θ越好);
- 当hθ(x) -> 0时,代价函数趋向于无穷大。
2、当y=0的时候,Cost(hθ(x),y)=−log(1−hθ(x)),我们得到Cost(hθ(x),y)与hθ(x)的关系图像为:
- 当hθ(x) -> 1时,代价函数趋向于无穷大;
- 当hθ(x) -> 0时,代价函数趋向于0。
为了简化书写,我们还可以将Cost(hθ(x),y)写成更加简略的形式:
注:y等于0或1
从而得到简化的代价函数J(θ):
二、梯度下降
和线性回归中梯度下降算法一样,逻辑回归中的梯度下降算法也是要找出让代价函数J(θ)取得最小值的参数θ:
将代价函数的偏导代进公式里可以得到:
可以看到形式基本和我们之前在线性回归里面用到的梯度下降算法几乎一模一样,但这里要注意的是,式子里面的假设函数h(x)变了!!
推导过程:
其中:
三、高级优化(Advanced Optimization)
除了普通的优化算法梯度下降以外,还有一些更加高级的优化算法,比如说共轭梯度算法(Conjugate Gradient)、局部优化算法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化算法(LBFGS)。这三种算法有许多特点,如:
- 无需手动选择学习率α
- 收敛速度比梯度下降更快
- 但比梯度下降算法更加复杂
四、多类别分类(Multiclass Classification)
上面我们使用的例子是两个输出的分类,而当输出有多个的时候,我们会先将多类别问题变成多个二类别问题,然后分别使用二类别的方法求解。下面是一个三类别分类的例子,将例子变成三个二类别问题后再用二类别的方法求解即可,如下图右方所示: