诚然,数据线性可分可以使用线性分类器,如果数据线性不可分,可以使用非线性分类器,这里似乎没有逻辑回归什么事情。但是如果我们想知道对于一个二类分类问题,对于具体的一个样例,我们不仅想知道该类属于某一类,而且还想知道该类属于某一类的概率多大,有什么办法呢?
线性回归和非线性回归的分类问题都不能给予解答,因为线性回归和非线性回归的问题,假设其分类函数如下: y = w x + b y = wx+b y=wx+b
y的阈值处于 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞),此时不能很好的给出属于某一类的概率,因为概率的范围是[0,1],我们需要一个更好的映射函数,能够将分类的结果很好的映射成为[0,1]之间的概率,并且这个函数能够具有很好的可微分性。在这种需求下,人们找到了这个映射函数,即逻辑斯谛函数,也就是我们常说的sigmoid函数,其形式如下:
1 1 + e − z \frac{1}{1+e^{-z}} 1+e−z1
sigmoid函数图像如下图所示
sigmoid函数完美的解决了上述需求,而且sigmoid函数连续可微分。假设数据离散二类可分,分为0类和1类,如果概率值大于1/2,我们就将该类划分为1类,如果概率值低于1/2,我们就将该类划分为0类。当z取值为0的时候,概率值为1/2,这时候需要人为规定划分为哪一类。上式将分类为0和分类和1的概率计算公式合二为一。假设分类器分类足够准确,此时对于一个样本,如果它是属于1类,分类器求出的属于1类的概率应该尽可能大,即p(y=1lx)尽可能接近1;如果它是0类,分类器求出的属于0类的概率应该尽可能大,即p(y=0lx)尽可能接近1。
通过上述公式对二类分类的情况分析,可知我们的目的是求取参数w和b,使得p(ylx)对0类和1类的分类结果尽可能取最大值,然而实际上我们定义的损失函数的是求最小值,于是,很自然的,我们想到对p(ylx)式子加一个负号,就变成了求最小值的问题,这就得到了逻辑回归中的损失函数。
不过,为了计算方便,我们通常对上述式子取log,因而得到下式:
公式(1)是对概率公式取log,公式(2)是对公式(1)取相反数。上述公式的函数图像如下图所示。这是一个凸函数(斜率是非单调递减的函数即凸函数),因此可以用梯度下降法求其最小值。 根据损失函数是单个样本的预测值和实际值的误差,而成本函数是全部样本的预测值和实际值之间的误差,于是对所有样本的损失值取平均数,得到我们的成本函数: 损失函数是凸函数,m个损失函数的和仍然是凸函数,因而可以用梯度下降法求最小值。逻辑斯谛函数将原本输出结果从范围 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞) 映射到(0,1),从而完成概率的估测。
逻辑回归得判定的阈值能够映射为平面的一条判定边界,随着特征的复杂化,判定边界可能是多种多样的样貌,但是它能够较好地把两类样本点分隔开,解决分类问题。
求解逻辑回归参数的传统方法是梯度下降,构造为凸函数的代价函数后,每次沿着偏导方向(下降速度最快方向)迈进一小部分,直至N次迭代后到达最低点。
参考: http://blog.csdn.net/han_xiaoyang/article/details/49123419 http://blog.csdn.net/zjuPeco/article/details/77165974 http://blog.csdn.net/star_liux/article/details/39666737
