逻辑回归
线性回归、逻辑回归直观感受
以身高举例,直觉告诉我们爸爸妈妈的身高会共同影响子女的身高,为了同时考虑到父母双方的身高的影响,可以取其两者的平均值作为因素进行研究。
这里父母的平均身高就是自变量x,而我们的身高就是因变量y,y和x之间存在线性关系。
y
=
w
x
+
b
y = wx+b
y=wx+b
那么我们如何求出w 和 b 呢,需要收集足够多的x,y,然后通过线性回归算法就可以拟合数据,帮助我们求出参数w和b
虽然线性回归模型在自变量的种类上面已经没有限制了,因变量只能是连续的数值却是一个很大的制约因素
因为在实际应用中,因变量是分类变量的情形太普遍了。分类变量中最简单、也是最常用的情形是二元变量(binary variable),比如明天会不会下雨,就是二元变量,这正是逻辑回归要解决的问题。
直观上,只要把线性回归的连续值想方设法的转换成0到1之间的数值,就成了逻辑回归
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
线性回归推导
极大似然估计
这里我们先介绍一个概念,极大似然估计,在机器学习中,这个概念是绕不过去的。
假设一个黑袋子里面有一堆球,有黑球和白球,但是我们不知道具体的分布情况。我们从里面抓 3 个球,2 个黑球,1 个白球。这时候,有人就直接得出了黑球 67%,白球占比 33% 。这个时候,其实这个人使用了极大似然估计的思想,通俗来讲,当黑球是 67% 的占比的时候,我们抓 3 个球,出现 2 黑 1 白的概率最大。
这种通过样本,反过来猜测总体的情况,就是似然。
再举个例子,有一枚硬币,一般我们认为他出现正面和反面的概率是相同的,都是 0.5 。你为了验证这一想法,你抛了 100 次,100 次出现的都是正面,在这样的事实下,我觉得似乎硬币的参数不是公平的,这时候,你修正你的看法,觉得硬币出现正面的概率是 1 ,而出现反而的概率是 0 ,这就是极大似然估计,按这个估计,出现 100 次都是正面的概率才最大。
同样,直观感受完之后,我们给出一个比较严谨的定义:
设总体分布为
f
(
x
,
θ
)
f(x, \theta)
f(x,θ),
X
1
,
X
2
,
⋯
,
X
n
X_{1}, X_{2}, \cdots, X_{n}
X1,X2,⋯,Xn 为该总体采样得到的样本。因为
X
1
,
X
2
,
⋯
,
X
n
X_{1}, X_{2}, \cdots, X_{n}
X1,X2,⋯,Xn 独立同分布,因此,对于联合密度函数:
L
(
X
1
,
X
2
,
⋯
,
X
n
;
θ
1
,
θ
2
,
⋯
,
θ
k
)
=
∏
i
=
1
n
f
(
X
i
;
θ
1
,
θ
2
,
⋯
,
θ
k
)
L\left(X_{1}, X_{2}, \cdots, X_{n} ; \theta_{1}, \theta_{2}, \cdots, \theta_{k}\right)=\prod_{i=1}^{n} f\left(X_{i} ; \theta_{1}, \theta_{2}, \cdots, \theta_{k}\right)
L(X1,X2,⋯,Xn;θ1,θ2,⋯,θk)=∏i=1nf(Xi;θ1,θ2,⋯,θk)
上式中,如果
θ
\theta
θ知道,我们就可以直接求出L了,总体分布的参数我们不是上帝,是没办法知道的。所以,我们换一种思路,反过来,因为样本已经存在,可以看成
X
1
,
X
2
,
⋯
,
X
n
X_{1}, X_{2}, \cdots, X_{n}
X1,X2,⋯,Xn是固定的,L是关于
θ
\theta
θ的函数,即似然函数。求
θ
\theta
θ。的值,使得似然函数取极大值,这种方法就是极大似然估计。
这说的是同一回事,都是说用样本去估计总体的参数值,这个参数值使得样本出现的概率最大。
线性回归的模型如下:
h
θ
(
x
1
,
x
2
,
⋯
,
x
n
)
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
⋯
+
θ
n
x
n
=
∑
i
=
0
n
θ
i
x
i
h_{\theta}\left(x_{1}, x_{2}, \cdots, x_{n}\right)=\theta_{0} x_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n}=\sum_{i=0}^{n} \theta_{i} x_{i}
hθ(x1,x2,⋯,xn)=θ0x0+θ1x1+θ2x2+⋯+θnxn=i=0∑nθixi
上式中
x
0
=
1
x_0 = 1
x0=1,使用矩阵表示为:
h
θ
(
X
)
=
θ
T
X
h_{\theta}(X)=\theta^{T} X
hθ(X)=θTX
上式中,X为m * n维矩阵,m为样本个数 ,n为样本特征数。
我们知道,样本基本是在所求线性回归
h
θ
(
X
)
=
θ
T
X
h_{\theta}(X)=\theta^{T} X
hθ(X)=θTX的附近,之间有会一个上下浮动的误差,记为
ε
\varepsilon
ε,表示为:
Y
=
θ
T
X
+
ε
Y=\theta^{T} X+\varepsilon
Y=θTX+ε
上式中,
ε
\varepsilon
ε是m*1维向量,代表m个样本相对于线性回归方程的上下浮动程度。
ε
\varepsilon
ε是独立同分布的,由中心极限
定理,
ε
\varepsilon
ε分布服从均值为 0 ,方差为
σ
2
\sigma^{2}
σ2的正态分布。
梯度下降法推导
下面我们使用梯度下降法来求解线性回归的参数 。上面已经提到成本函数为
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
对
θ
\theta
θ求偏导
∂
∂
θ
j
J
(
θ
)
=
∂
∂
θ
j
∑
i
=
1
m
1
2
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
\frac{\partial}{\partial \theta_{j}} J(\theta)=\frac{\partial}{\partial \theta_{j}} \sum_{i=1}^{m} \frac{1}{2 m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}
∂θj∂J(θ)=∂θj∂i=1∑m2m1(hθ(x(i))−y(i))2
=
1
2
m
⋅
2
⋅
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
∂
∂
θ
j
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
∂
∂
θ
j
∑
i
=
1
m
(
θ
x
(
i
)
−
y
(
i
)
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
∑
i
=
1
m
x
j
(
i
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
j
(
i
)
\begin{array}{l} =\frac{1}{2 m} \cdot 2 \cdot \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \frac{\partial}{\partial \theta_{j}} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \\ =\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \frac{\partial}{\partial \theta_{j}} \sum_{i=1}^{m}\left(\theta x^{(i)}-y^{(i)}\right) \\ =\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \cdot \sum_{i=1}^{m} x_{j}^{(i)} \\ =\frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \cdot x_{j}^{(i)} \end{array}
=2m1⋅2⋅∑i=1m(hθ(x(i))−y(i))∂θj∂∑i=1m(hθ(x(i))−y(i))=m1∑i=1m(hθ(x(i))−y(i))∂θj∂∑i=1m(θx(i)−y(i))=m1∑i=1m(hθ(x(i))−y(i))⋅∑i=1mxj(i)=m1∑i=1m(hθ(x(i))−y(i))⋅xj(i)
加入学习率,梯度下降算法可以描述为
重复
θ
∗
j
=
θ
∗
j
−
α
1
m
∑
∗
i
=
1
m
(
h
∗
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta * j=\theta * j-\alpha \frac{1}{m} \sum * i=1^{m}\left(h * \theta\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}
θ∗j=θ∗j−αm1∑∗i=1m(h∗θ(x(i))−y(i))xj(i)