@Lecture 10: Logistic Regression
Logistic Regression Problem
对比二元分类问题,感兴趣的不是一个事件是否发生,而是一个事情发生的概率是多少
理想情况下,要想知道一个事情发生的概率是多少,需要样本中y的值是发生概率,但实际上一个事情发生的概率值很难获取,所以y还是0-1值,代表事情是否发生。
也就是说逻辑斯蒂回归和线性回归的数据集是一样的,可以看作数据集中y的值为实际意义上y的值加上一个噪声,并不影响使用。
逻辑斯蒂回归回归假设集合
先算一个分数,然后通过逻辑斯蒂回归函数(sigmoid)将得分转换到0-1之间(因为想要拿到的是一个概率值)
Logistic Regression Error
本节主要讲了逻辑斯蒂回归的交叉熵损失函数的推导。
大牛思考:反向思维,不去推损失函数是怎样的,而是去推如果拿到的假设就是理想的产生数据的函数,那产生目前样本的概率应该是最大的
用到两个经常的数学变换:使用log函数把连乘变连加,使用负号把求最大值换成求最小值
sigmoid函数的性质 1-sigmoid(x)=sigmoid(-x)
反向思维:
产生样本数据的概率:(理想情况下应该是最大的)
使用sigmoid函数的性质、log函数、max变min简化上述公式
推导过程如下:
首先利用simgod函数性质,将1-h(x)变成h(-x),把正负号用y来代替:因
因为h是关于w的函数,把w代到公式里面:
使用log函数把连乘变连加,使用负号把求最大值换成求最小值:
展开:
Gradient of Logistic Regression Error
本章主要讲如何找到w使得交叉熵函数最小
找损失函数梯度为0的点:
求梯度:
计算梯度为0:把sigmoid函数当作一个权重:需要权重相加之和=0
发现没有办法直接用数学公式推理出来,这时候想一想PLA算法是怎么更新早到权重的:
随机确定一个初始点w,用错误的点去更新w,每次更新的权重都是1或者-1
也就是梯度下降算法的思想的先驱。
Gradient Descent
梯度下降算法:
使用泰勒展开对Ein做逼近,可以得到往Ein的梯度的反方向走是最好的,也就是得到每一步走的方向
学习率的选择(是个超参数):每次超下降最快的方向走多少(可以形象理解为迈多大的步子)
学习率太小,会导致学习的很慢,学习率太大,会不符合泰勒展开,导致出现波动。所以最好的是学习率可以根据梯度进行调整
也就是说更新的多少要跟梯度成正比(梯度大,直观上陡,步子大一点,梯度小,直观上缓,就走的小一点)
观察下面公式:
红色圈里的东西其实就是一个比值,所以可以直接把他当作每次更新的多少
公式可以直接写成:
逻辑斯蒂回归算法的流程如下: