逻辑回归(LogisticRegression)详解,公式推导及代码实现
逻辑回归(Logistic Regression)
什么是逻辑回归:
  逻辑回归(Logistic Regression)是⼀种基于概率的模式识别算法,虽然名字中带"回归",但实际上是⼀种分类⽅法,在实际应⽤中,逻辑回归可以说是应⽤最⼴泛的机器学习算法之⼀
回归问题怎么解决分类问题?
  将样本的特征和样本发⽣的概率联系起来,⽽概率是⼀个数.换句话说,我预测的是这个样本发⽣的概率是多少,所以可以管它叫做回归问题在许多机器学习算法中,我们都是在追求这样的⼀个函数
例如我们希望预测⼀个学⽣的成绩y,将现有数据x输⼊模型 f(x) 中,便可以得到⼀个预测成绩y
但是在逻辑回归中,我们得到的y的值本质是⼀个概率值p
在得到概率值p之后根据概率值来进⾏分类
当然了这个1和0在不同情况下可能有不同的含义,⽐如0可能代表恶性肿瘤患者,1代表良性肿瘤患者
逻辑回归既可以看做是回归算法,也可以看做是分类算法,通常作为分类算法⽤,只可以解决⼆分类问题,不过我们可以使⽤⼀些其他的技巧(OvO,OvR),使其⽀持解决多分类问题
下⾯我们来看⼀下逻辑回归使⽤什么样的⽅法来得到⼀个事件发⽣的概率的值
在线性回归中,我们使⽤
来计算,要注意,因为Θ0的存在,所以x⽤⼩的X b来表⽰,就是每来⼀个样本,前⾯还还要再加⼀个1,这个1和Θ0相乘得到的是截距,但是不管怎样,这种情况下,y的值域是(-infinity, +infinity)
⽽对于概率来讲,它有⼀个限定,其值域为[0,1]
所以我们如果直接使⽤线性回归的⽅式,去看能不能到⼀组Θ来与特征x相乘之后得到的y值就来表达这个事件发⽣的概率呢?
其实单单从应⽤的⾓度来说,可以这么做,但是这么做不够好,就是因为概率有值域的限制,⽽使⽤线性回归得到的结果则没有这个限制
为此,我们有⼀个很简单的解决⽅案:
我们将线性回归得到的结果再作为⼀个特征值传⼊⼀个新的函数,经过转换,将其转换成⼀个值域在[0,1]之间的值
Sigmoid函数:
将函数绘制出来:
其最左端趋近于0,最右端趋近于1,其值域在(0,1),这正是我们所需要的性质
当传⼊的参数 t > 0 时, p > 0.5, t < 0 时, p < 0.5,分界点是 t = 0
使⽤Sigmoid函数后:
现在的问题就是,给定了⼀组样本数据集X和它对应的分类结果y,我们如何到参数Θ,使得⽤这样的⽅式可以最⼤程度的获得这个样本数据集X对应的分类输出y
这就是我们在训练的过程中要做的主要任务,也就是拟合我们的训练样本,⽽拟合过程,就会涉及到逻辑回归的损失函数
逻辑回归的损失函数:
我们定义了⼀个这样的损失函数:
画出图像:
让我们看⼀下这个函数有什么样的性质,据图像我们很容易发现:
  当y=1时,p趋近于零的时候,在这个时候可以看此时-log(p)趋近于正⽆穷,这是因为当p趋近于0的时候,按照我们之前的这个分类的⽅式,我们就会把这个样本分类成0这⼀类,但是这个样本实际是1这⼀类,显然我们分错了,那么此时我们对它进⾏惩罚,这个惩罚是正⽆穷的,随着p逐渐的增⾼,可以看我们的损失越来越⼩,当我们的p到达1的时候,也就是根据我们的分类标准,我们会将这个样本x分类成1,此时,它和这个样本真实的y等于1是⼀致的,那么此时损失函数取0也就是没有任何损失,当y=0时同理
现在这个损失函数还是太过复杂,需要判定y的值,我们对其进⾏简化:
这个函数与上⾯的是等价的
这样,根据我们求出的p,就可以得出这次估计的损失是多少
最后,再把损失相加求平均值,其公式为:
将两个式⼦整合:
正则化逻辑回归模型
下⾯我们要做的事情,就是到⼀组Θ,使得J(Θ)最⼩
对于这个式⼦,我们很难像线性回归那样推得⼀个正规⽅程解,实际上这个式⼦是没有数学解的,也就是⽆法把X和直接套进公式获得Θ
不过,我们可以使⽤梯度下降法求得它的解,⽽且,这个损失函数是⼀个凸函数,不⽤担⼼局部最优解的,只存在全局最优解
现在,我们的任务就是求出J(Θ)的梯度,使⽤梯度下降法来进⾏计算
⾸先,求J(Θ)的梯度的公式:
⾸先,我们对Sigmoid函数求导:
得到其导数,再对logσ(t)求导,求导步骤:
由此可知, 前半部分的导数:
   其中y(i)是常数
再求后半部分:
这其中
将结果代⼊,化简得:
就得到后半部分的求导结果:
将前后部分相加:
即:
就可以得到:
此时我们回忆⼀下线性回归的向量化过程
参考这个,可以得到:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。