好像在各种机器学习入门教程中,逻辑回归模型(Logistic/Logit Regression)经常被拿来作为入门的机器学习模型,比如我家的Andrew Ng就是这样做的。

看起来,逻辑回归模型实在太简单,甚至容易被认为是一个拍脑袋想出的naïve的模型。今天,小夕就非要把它当做宝贝好好夸一夸,哼哼哼...

 

流水账一样的看似没毛病而且简单易懂的讲法是这样的:

浅入

怎么将n维向量X=[x1,x2,...,xn]映射成一个点y呢?很容易想到就是将向量X与另一个向量做内积啦。这个向量我们称为参数θ,即θ=[θ1, θ2 ,..., θn]。所以做内积就是X*θ’【即行向量X乘以(行向量θ的转置)】得到一个数。

 

但是如果X=[0, 0, 0, ..., 0]时,输出y应等于1,那怎么办呢?这时X*θ’肯定也是0 呀。。。所以为了解决这个问题,要再加个常数b,所以现在是X*θ’+b。我们为了看起来好看简洁,在X的最开头加个1,把b扔到θ的最开头,所以就成了新版的X*θ’,当然此时X=[1,X], θ=[b,θ]

 

好像还不行,因为这时的值域是(-∞,+∞)呀,可是我们要得到的是0或者1,模型给我输出一个100000是怎么回事。。。所以要把值域限制一下啦,将值域正负无穷改为(0, 1),怎么改呢?出现了下面这个sigmoid函数:

 

浅入深出被人看扁的逻辑回归!_损失函数

 

在这个函数的限制下,哪怕输入为正无穷,输出也不会大于1,同样输入为负无穷,输出也不会为小于-1。所以现在模型成了:

sigmoid(X*θ’)。

 

这时,我们只需要认为当模型输出值大于0.5时,就认为是逻辑1;当输出值小于0.5时,就认为是逻辑0。预测函数(假设函数)完成!即htheta(X)= sigmoid(X*θ’),有了这个函数,我们就可以给样本贴类别标签啦。

 

好咯,然后还差什么?当然是训练模型用的损失函数/代价函数/目标函数啦。损失函数是什么呢?

 

浅入深出被人看扁的逻辑回归!_机器学习_02

 

诶?看起来很不错呀,仔细一看也能模模糊糊的看明白,反正当类别预测值与实际类别完全对起来的时候,J(θ)确实等于0的。

 

所以最后要干嘛呢?当然是得到我们的迭代公式然后梯度下降法啦。一求导就得到了下面的公式

 

浅入深出被人看扁的逻辑回归!_后验概率_03

 

然后坐等J(θ)收敛,从而得到最优模型参数θ了...

 

上面的讲解看起来没毛病呀~难道每一步真的都是这么恰好的信手拈来的吗?

前方超高能预警!

深出

 

慢慢来~从回归开始讲起啦。

 

回归的含义在高中就学过了,不过可能被老师解释的比较naïve(都忘了老师怎么讲的了。。。)。一个抽象而准确的描述是“回归即为两个或多个随机变量之间的相关关系建立数学模型”。设想一下,如果我们仅考虑两个随机变量,并且将其中一个随机变量看作机器学习的输入,也就是特征向量X,将另一个随机变量看作机器学习的输出,也就是类别预测y。那么...回归的意思是...

 

用一个数学模型直接描绘出X到y的映射关系!

 

如果还不懂的话,想一想我们之前的朴素贝叶斯模型是怎么用X训练模型求y的?是不是用贝叶斯定理呀~也就是下面这样:

 

浅入深出被人看扁的逻辑回归!_机器学习_04

 

等式左边就是随机变量y,而等式右边并不是直接用X表示的,而是用其他东西间接描述y。

 

所以!回归就是要直接用X描绘出y!是直接!

 

当随机变量X与随机变量y呈线性关系时,如果我们要用回归模型来描述这两个随机变量的关系,那么这里的回归模型是什么样子的呢?相信机智的你肯定想到啦,这里就是高中就学过的线性回归模型:y=aX+b。

 

那么当随机变量X与随机变量y呈。。。逻辑关系时呢?(逻辑不就是0/1嘛),也就是说当随机变量X取某值时,随机变量Y为某一个逻辑值(0或1),那么这里的回归模型是什么样子的呢?相信机智的你肯定想到啦,这里就是大学都没学过的逻辑回归模型:?????=?????

 

hhhh,小夕太调皮是不是不太好吖~

 

其实我们仔细想一下,逻辑回归模型是难以像线性回归一样直接写出类似于y=aX+b这么简洁的形式的,因为y的取值为离散的,只有0和1,所以要怎么表示呢?当然是用模型分别表示y取0的概率和y取1的概率了。也就是用模型表示出P(y=1|X)和P(y=0|X)。

 

其实为某种形式的回归建立数学模型并不是一件容易的事情,经过先烈的曲折探索,得出了一个神奇的公式,称为logit公式:

 

浅入深出被人看扁的逻辑回归!_损失函数_05

 

诶?看似简洁,然而有什么用呢?里面既没有X也没有y呀。。。

 

先等等,还记得深度学习中经常加在神经网络的顶层来求后验概率P(y=j|X)的softmax函数吗?对就是下面这个熟悉的函数:

 

浅入深出被人看扁的逻辑回归!_机器学习_06

 

对于我们的二分类问题来说,有P(y=0|X)+P(y=1|X)=1,那么如果我们令logit公式中的Q=P(y=0|X)呢?然后P(y=0|X)用softmax函数表示呢?是不是突然被下面推导的过程和结果惊呆了!!!:

 

浅入深出被人看扁的逻辑回归!_损失函数_07

 

而xTΔw的值不就是反映感知机模型的输出嘛!(即xTΔw>0则预测类别为正,xTΔw<0则预测类别为负)

 

我们再把xTΔw整理的好看一点,变成更正常的形式:w·x+b。然后就可以得到下面的结论!!!:

 

浅入深出被人看扁的逻辑回归!_机器学习_08

 

这就是我们前面苦苦寻找的逻辑回归模型!看,随机变量X与随机变量Y的关系竟然直接纳入了一个模型下面!也就是说后验概率直接用随机变量X表示了出来!而不是像贝叶斯定理一样间接表示后验概率。

 

有了上面直接表示的后验概率,于是建立似然函数,通过极大似然估计来确定模型的参数。因此设:

 

浅入深出被人看扁的逻辑回归!_损失函数_09

 

似然函数就表示为

浅入深出被人看扁的逻辑回归!_损失函数_10

 

对数似然函数即:

 

浅入深出被人看扁的逻辑回归!_机器学习_11

 

也就是本文的“浅入”环节的损失函数啦,原来是正儿八经的一步步推出来的!剩下的就交给梯度下降法优化出模型参数吧!

 

好咯,小夕只能帮你把逻辑回归模型挖的这么深啦,据说有更深的理解的,然而小夕已经驾驭不了了T_T。