Logistic Regression

Logistic Regression step

我们用逻辑回归的方式直接找出w和b
Logistic Regression**函数σ(z)在0~1之间,以0.5为分界线,可以很好的解决二分类问题。
Logistic Regression如上图,**函数是怎么来的?由我之前的classification:probabilistic generative model这篇博客中可推出来σ(z)=P(C1|x),那么我直接找w,b,这个概率不就出来了吗?
Logistic Regression

Logistic Regression我们要怎么找出最好的w和b?如上图,假设训练集有N个样本,且只属于class1或class2。我们将这些样本都带进σ(z),然后将求class1的概率的乘积,注意,第三项是给的class2,所以我要用1减去class2的概率才能得到class1的概率。我们穷尽所有w,b,然后选取使L(w,b)最大的w和b

Logistic Regression
如果直接求最大L(w,b),那么求导太麻烦了,我们转换一下思想,如上图,将其转化为求-lnL(w,b)的最小值,因为ln可以打开成加法,求导很方便。于是就有了上图的转化过程。我们可以看到,每一部分都是一样的形式,只是有些的因子是0被约掉了而已,具体请看下图:两个伯努利分布的交叉熵(大概知道有这回事就行了)
Logistic Regression
Logistic Regression现在,我们来求这个-lnL(w,b)的最小值:
Logistic Regression
Logistic Regression如下图,求完一阶导之后的最终化简结果,然后我们对其进行梯度下降,找到w
Logistic Regression

why not to use square error?

为什么逻辑回归不使用线性回归的error的平方来作为损失函数?
如下图推理,如果使用了error的平方,那么当y的实际值是1时,而预测的值也是1,那么损失为0,说明接近目标,但是当预测的值为0时,损失仍然为0,折就不对了!!!
Logistic Regression
Logistic Regression我们来看看逻辑回归使用交叉熵和使用平方误差的不同,我们可以看到使用交叉熵时,离最低点越远的点倾斜度愈大,梯度下降的越快,这是恰当的,而使用square error时,距离最低点很远的点下降的很慢。
Logistic Regression
Logistic Regression如下图,我们可以看到逻辑回归和线性回归的梯度下降的式子一样。
Logistic Regression

Discriminative v.s. Generative

discriminative是直接找w,b,而generative是要先找μ1,μ2等参数然后才能计算出w和b,所以用这两种方式找出来的w和b不一样。
Logistic RegressionLogistic Regression

Logistic Regression下面来看一个例子:第一个向量人类来看直接就会分为class1,而利用朴素贝叶斯结果又如何?
Logistic Regression
Logistic Regression我们发现,用朴素贝叶斯得出来的结论是小于0.5,也就是它被归为了class2.
Logistic Regression通常情况下discrimination会更好,因为他是使用我确实有的有限样本去预测的。那么generative就一定不好吗?当然不是!!
Generative对可能的分布进行假设,所需要的训练数据更少,然后对垃圾样本的影响不敏感。回想一下之前预测的那只龟,他并不在我的有限训练数据里,难道我就直接断定p(x|C)等于0了吗?肯定不是,因为我的样本是有限的,可能仅仅是我的水属性样本里面确实没有这只宝可梦,但是不代表在无限样本的水属性宝可梦里没有这只,我们需要用高斯分布那个概率公式去计算。
Logistic Regression
Logistic RegressionLogistic Regression上图的以往经验就可以看成是高斯分布的那个概率公式。

Multi-class classification

多分类的问题我们采取下图的方法,比如有三个分类,当传入一个x时,经过下图的步骤,将这个x的结果分别映射到三个0~1的数上,然后比较一下这三个数,谁更大就是哪一类。
Logistic Regression
Logistic Regression

limitation of logistic regression

如下图这种情况,我无法找到一条线将其区分。
Logistic Regression这时,我们可以用某种方法将这四个点的位置转换一下就可以了。但是转化不总是容易的,我们不能花太多的时间在转化这个上面。
Logistic Regression其中一个比较好的方法就是级联逻辑回归,也就是将几个逻辑回归拼起来。将每个点的x1和x2用逻辑回归都转换成新的x1和x2,然后将新的再次使用逻辑回归得出结果
Logistic Regression结果如下:
Logistic Regression再将新的x1和x2作为input传入,然后输出最终结果

Logistic Regression若干个逻辑回归级联就是深度学习!!
Logistic Regression