三、逻辑回归
解决二分类问题。
1. 换个思路推导出sigmoid函数
方案一
假定P(y=1|x)依赖于线性函数wx,但wx不可能在(0,1)内,所以先把wx的其中一个界换成0或1。所以对wx转换成exp(wx),值域变成了(0,+∞)。现在想不到如何对exp(wx)再转换,从而使值域变成(0,1),所以对P(y=1|x)动手。于是有:
令
命名此函数为sigmoid函数:
所以:
方案二
回到最初的那句话 “所以对wx转换成exp(wx),值域变成了(0,+∞)” ,这里可以继续转换变成sigmoid函数,使值域在(0,1)之间。把值域看成两个部分(0,1)∪(1,+∞)。(1,+∞)的倒数的值域是(0,1),而(0,1)的倒数的值域是(1,+∞)。也就是说,只要exp(wx)的值域变成(1,+∞)即可。所以有:exp(wx)变成1+exp(wx),这样值域就是(1,+∞)了。再取倒数,得 1 / [1+exp(wx)]。但是在一开始假设的时候,我们是假定P(y=1|x)依赖于wx,一般而言都是希望wx越大,P越大,呈正相关。但1 / [1+exp(wx)] 这条式子表明,wx越大,exp()越大,整体结果越小。因此还需要转换,使得在不改变exp()的值域是(0,+∞)的前提下,wx越大,exp()越小,这样整体结果就会越大。于是有:把exp(wx)转换成exp(-wx)。
所以最终得sigmoid函数:
2. 如何求解w?
利用极大似然法:估计的参数应使从模型中抽取n组样本观测值的概率最大。
为什么逻辑回归的损失函数不是误差平方和,因为逻辑回归是用于分类,label是类别,不是数值所以不可以用误差平方和。而线性回归是用误差平方和,是因为线性回归是用于回归,label是数值,所以可以。
极大似然法:
抛10次硬币,7次正面,3次反面。那么抛硬币得到正面的概率p是多少?按照常识,答案是0.5。但按照极大似然法,答案是argmax(p^7*p^3);意思是求得的概率p能够令 “7次正面,3次反面” 这种情况出现的概率最大;因此答案是0.7。
因为机器学习中的损失函数习惯是取最小值,所以损失函数为负极大似然函数。为了把连乘变成累加,对p取log,这样就变成了负对数极大似然。于是有:
先求sigmoid对wj(向量w中的一个值)的求导,待会会用到:(为了方便,下面把sigmoid写成s)
现在对损失函数求导:
3. 梯度下降法
采用梯度下降法不断迭代减小L(w)
(1)随机初始w,计算L(w)
(2)计算梯度▽L(w),下降方向:dir = -▽L(w)
(3)移动(步长λ)w' = w + λ·dir
(4)重新计算L(w'),若L(w')-L(w)较小,则停止,否则重复(2)(3)(4)
梯度下降法中,想象出一座山:
w:你所在的位置,minL(w):山谷,下降方向:-▽L(w)
多元线性回归与逻辑回归有相似的地方,可以结合起来记忆:
多元线性回归:
逻辑回归:
这两者的损失函数不一样:
多元线性回归损失函数:,这里 1/2 是为了在求导的时候把2变成1(加不加 1/2 都行)
逻辑回归损失函数:
但这两者的梯度可以化为相同的格式:
下降方向:
根据计算梯度的方法不同,梯度下降法有三种:
(1)批量梯度下降BGD
(2)随机梯度下降法SGD
(3)小批量梯度下降法MBGD
学习率 λ 该如何设置?
(1)动态调整法:
(2)折半调整:一开始设大一点,当L(w)变大的时候,就折半 λ
接下来,将引入softmax回归。
欢迎转载,转载请标明出处。