机器学习系列笔记九: 逻辑回归
文章目录
Intro
为了说明逻辑回归的重要性,先post一张图:
这是kaggle在2017年对工作最常用的数据科学方法的排名统计,可以看到逻辑回归LogicRegression是各个行业中(除了军事和安全领域)最为常用的数据科学方法。这也说明对于机器学习算法并不见得是越复杂越好的,要根据实际的使用场景选择最合适的算法。
没有免费午餐定理:并没有哪个算法比哪个算法更好,只是在特定的场景中的效果有差别。
那么逻辑回归是什么?其实如果修过吴恩达的机器学习课程的同学都不陌生,在此做一个系统的总结。
首先明确一个容易混淆的概念:逻辑回归是解决二分类问题的。
Logistic Regression原理
逻辑回归的原理是将样本特征和样本发生的概率联系起来,由于概率是一个数,所以称之为回归,然后会根据这个发生概率是否高于阈值(p=0.5)来把结果划分为0,1两个固定的结果(类别),所以解决的是一个二分类问题。
假设通过回归计算得出的结果 y ^ \hat{y} y^是一个数,为了将之转换为概率我们通常需要在回归的结果上通过一个激活函数(比如sigmoid)使之映射到0~1区间。
σ ( y ^ ) = > p ^ ∈ ( 0 , 1 ) \sigma(\hat{y})=>\hat{p}\in(0,1) σ(y^)=>p^∈(0,1)
然后通过判断 p ^ \hat{p} p^ (该样本发生的概率)是否在50%以上做一个划分
y ^ = { 0 p ^ < 0.5 1 p ^ > 0.5 \hat{y}=\begin{cases} 0& \hat{p}<0.5\\ 1& \hat{p}>0.5\\ \end{cases} y^={
01p^<0.5p^>0.5
所以最终结果就变为了类别0或者类别1这样的结果。
逻辑回归就是在线性回归的基础上通过激活函数把结果映射为概率值
激活函数
在逻辑回归中,如何寻找合适的激活函数将回归结果映射为概率就成为了一个重要问题,通常可以采用sigmoid函数作为激活函数 σ ( t ) \sigma(t) σ(t):
σ ( t ) = 1 1 + e − t \sigma(t)=\frac{1}{1+e^{-t}} σ(t)=1+e−t1
该函数的图像如下:
可以看到这个函数的值域是(0,1),这符合概率的值域,当t>0时,p>0.5,t<0则p<0.5.所以分界点就是t=0.
考虑将线性回归的结果带入t中可以得出一个结论:在使用sigmoid函数处理线性回归结果之前,我们需要将回归结果进行标准化处理,使之均值为0,而这个0就是所谓的决策边界。
逻辑回归的损失函数
不同于线性回归中所采用的损失函数 M S E = ( y ^ − y ) 2 MSE=(\hat{y}-y)^2 MSE=(y^−y)2 ,对于逻辑回归,因为其最终结果非0即1,所以要对损失函数的定义进行一个转换(这里有一点绕,需要在逻辑上进行一个类比):
然后,我们希望通过一个函数来表达这样的一个损失cost:
cos t = { − log ( p ^ ) i f y = 1 − log ( 1 − p ^ ) i f y = 0 \cos t=\begin{cases} -\log \left( \hat{p} \right)& if\ \ y=1\\ -\log \left( 1-\hat{p} \right)& if\ \ y=0\\ \end{cases} cost={
−log(p^)−log(1−p^)if y=1if y=0
将上式稍作修改就变成了如下形式:
cos t = − y log ( p ^ ) − ( 1 − y ) log ( 1 − p ^ ) \cos t=-y\log \left( \hat{p} \right) -\left( 1-y \right) \log \left( 1-\hat{p} \right) cost=−ylog(p^)−(1−y)log(1−p^)
进而最终对于逻辑回归的损失函数定义如下:
J ( θ ) = − 1 m ∑ i m y ( i ) log ( p ^ ( i ) ) − ( 1 − y ( i ) ) log ( 1 − p ^ ( i ) ) J\left( \theta \right) =-\frac{1}{m}\sum_i^m{y^{\left( i \right)}}\log \left( \hat{p}^{\left( i \right)} \right) -\left( 1-y^{\left( i \right)} \right) \log \left( 1-\hat{p}^{\left( i \right)} \right) J(θ)=−m1i∑my(i)log(p^(i))−(1−y(i))log(1−p^(i))
- y ( i ) y^{(i)} y(i) 表示第i个样本的真实分类
- p ^ ( i ) =