程序员自然科普

52ML系列(1)--Logistic Regression逻辑

2019-03-03  本文已影响221人  beckhz

现在前面

希望对这段时间的机器学习做一个温故与总结,于是有了写52ML系列博客的想法

逻辑回归解决什么问题

逻辑回归是一个分类模型,输出样本属于某个类别的概率,但个人认为它也是一个回归问题,因为这个概率需要一个基于回归产生的分数。

什么意思呢?比如现在要做一个模型:根据毛发、耳朵长短、抓不抓老鼠,可不可爱等信息判断一个动物是不是猫,这看上去是一个二分类问题,要么是要么不是,输出为:1 or -1。但是我们换一个问法,判断这个动物是猫的概率?那么输出应该是一个[0,1]之间的值。这就跟我们一般的二分类问题有些不一样了,学术上称作软二分类问题('soft' binary classification),这种问题交给逻辑回归来处理就对了


逻辑回归模型思路

那么逻辑回归是如何解决这种问题呢?思路是我们可以利用毛发、耳朵长短、抓不抓老鼠,可不可爱等特征算出某种类似得分的东西,得分越高越有可能是猫对不对?那么接下来,再将得分按某种操作转化为百分比,就得到了概率。

那么问题就变成了两部分:算得分,求概率。

算得分,最直接的想法就是利用线性回归模型
s=\sum_{i=0}^{N}\omega_{i}x_{i}
s就是我们的得分。当然\omega是待求的模型参数,我们先放在那里,下面考虑第二部分。

如何将得分转化为概率?注意到得分的取值可能是(-\infty,+\infty),而结果是[0,1]之间的概率值,这是一种映射关系,那么怎么找到这种映射关系呢?不用找了,前辈们告诉你sigmoid函数天然的完成了这种映射,函数长这样:\theta(z)=\frac{1}{1+e^{-z}}

函数图形长图1这样:


图1

sigmoid函数很好的将(-\infty,+\infty)限制映射在[0,1]之间,得分越高,概率越高;相反得分越低,概率越低。

ok,现在我们有了逻辑回归的基本模型思路了,下面开始建立模型。


模型建立

考虑用平方误差做代价函数
J(W)=\frac{1}{N}\sum_{i=0}^N(\theta(W^Tx_i )- y_i)^2
但是这个函数并不是凸函数,无法用梯度下降找到最优解。

最大似然

换一种考虑方式:

考虑数据集D=\{(x_1,-1),(x_2,1),(x_3,-1)...(x_n, 1)\},想象上帝创造了这么一个函数f(x)提供一种概率分布能够产生这个数据集:
P(y|x) = \{\ _{1-f(x)\ \ \ \ for\ y = -1}^{f(x)\ \ \ \ \ \ \ for \ y = +1}
那么这个数据集的产生概率可以表示为:
P_f(D) = P(x_1)f(1-x_1)\cdot P(x_2)f(x_2)\cdot P(x_3)f(1-x_3)\cdots P(x_n)f(x_n)
如果我们找到了一个跟f(x)很像的函数h(x),那么也就代表我们求出了逻辑回归的模型。这个函数h(x)称作似然函数 (likelihood)

如何找到函数h(x)呢?

如果h(x)≈f(x),那么
P_h(D) ≈ P_f(D)
其中
P_h(D) = P(x_1)h(1-x_1)\cdot P(x_2)h(x_2)\cdot P(x_3)h(1-x_3)\cdots P(x_n)h(x_n)
P_f(D)是上帝创造的,概率通常是很大,因此我们只要找到能让P_h(D)最大的那个h(x)就可以了,这就是所谓的最大似然

用数学的方法表示就是这样:
\max_h\prod_{i=0}^Nh(y_ix_i)

tips:
根据
sigmoid
函数的特殊性:1-\theta(z) = \theta(-z),因此当y_i=-1时,h(y_ix_i) = 1-h(-x_i)

接下来将放置已久的\omega带入:
\max_h\prod_{i=0}^N\theta(y_iW^Tx_i)
采用log变换将连乘改成连加,并添加负号转化为求最小值问题,再引入一个求平均的操作:
\min_h\frac{1}{N}\sum_{i=0}^N-ln\theta(y_iW^Tx_i)
带入sigmoid函数:
\min_h\sum_{i=0}^Nln(1+exp(-y_iW^Tx_i))
ok, 这是一个凸函数,称作交叉熵误差函数
下面的操作不说也知道,梯度下降撸起吧。。。


PS

这个ps挺大的。。。因为内容还有点多
上面的模型用的标签是(+1,-1),那么对于(0,1)这种情况呢?
只需将概率模型修改下:
\{_{P(0|x;\omega) = 1- \theta(z)}^{P(1|x;\omega) = \theta(z)}\\
合并后得到:
p(y|x) = \theta(z)^y(1-\theta(z))^{1-y}
依然用极大似然:
\max_{\theta}\prod_{i=0}^N\theta(z_i)^y(1-\theta(z_i))^{1-y}
依然取对数将连乘转连加,并添加符号转化为求最小值,再引入平均:
\min_h\frac{1}{N}\sum_{i=0}^N-[yln\frac{\theta(z_i)}{1-\theta(z_i)}+ln(1-\theta(z_i)]
带入sigmoid函数之后依旧梯度下降开撸吧。。。


参考引用:

上一篇 下一篇

猜你喜欢

热点阅读