1.什么是逻辑回归
逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
注:代价函数是衡量我们训练的模型的好坏程度,为了训练逻辑回归模型的参数w和参数b,我们需要一个代价函数,通过训练代价函数来得到参数 w w w和 b b b;要注意区别代价函数和损失函数,代价函数 J ( w , b ) J(w,b) J(w,b)是对于整个训练样本来说的,而损失函数 L ( y ^ , y ) L(\hat{y},y) L(y^,y)是对于单个的训练样本来说的。
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)
回归模型中,y是一个定性变量,比如 y y y=0或1,logistic方法主要应用于研究某些事件发生的概率
2.逻辑回归的优缺点
优点:
- 速度快,适合二分类问题
- 简单易于理解,直接看到各个特征的权重
- 能容易地更新模型吸收新的数据
缺点:
- 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强
3.Regression的常规步骤
- 寻找 h h h函数(即预测函数)
- 构造 J J J函数(即损失函数)
- 想办法使得 J J J函数最小求得回归参数 θ \theta θ
4.构造预测函数 h ( x ) h(x) h(x)
LR逻辑回归是一种监督学习分类算法,其实现了给定数据集到0,1的一种映射。
给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\} D={(x1,y1),(x2,y2),...,(xm,ym)}其中 ( x i , y i ) (x_{i},y_{i}) (xi,yi)表示第i个样本,其中 x i = ( x i 1 , x i 2 , . . . , x i n ) x_{i}=(x_{i_{1}},x_{i_{2}},...,x_{i_{n}}) xi=(xi1,xi2,...,xin),即每个数据有n个特征,类别 y = { 0 , 1 } y=\{0,1\} y={0,1},要求训练数据,将数据分成两类0或1。
假定
x
i
x_{i}
xi的个特征为线性关系,即:
z
=
θ
+
b
=
θ
1
x
1
+
θ
2
x
2
+
.
.
.
θ
n
x
n
+
b
z=\theta+b=\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n}+b
z=θ+b=θ1x1+θ2x2+...θnxn+b
现将数据样本
x
i
x_{i}
xi添加一个特征
x
0
=
1
x_{0}=1
x0=1,将
b
b
b作为
θ
0
\theta_{0}
θ0,有:
z
=
θ
+
b
z=\theta+b
z=θ+b
=
b
∗
1
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
θ
n
x
n
=b*1+\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n}
=b∗1+θ1x1+θ2x2+...θnxn
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
θ
n
x
n
+
b
=
θ
T
X
=\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...\theta_{n}x_{n}+b=\theta^TX
=θ0x0+θ1x1+θ2x2+...θnxn+b=θTX
以上实现了用样本
x
i
x_{i}
xi的n个特征来表示样本的表达式,现在需要寻找一个映射使得
z
z
z可以转换为0或1,这里选用Sigmoid函数,函数形式为:
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
当输入一个
z
z
z时,
y
y
y输出一个0-1之间的数,假定y>0.5则最终结果判为1 ,y<0.5最终结果为0。当y=0.8时,最终结果为1,y=0.8也表征了此时输出为1的概率,令:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
X
h_\theta(x)=\frac{1}{1+e^{-\theta^TX}}
hθ(x)=1+e−θTX1
将样本特征线性表示,然后输入到Sigmoid函数,输出结果在0-1之间,并且输出结果表征了分类结果为类别1和类别0的概率,即:
P
(
y
=
1
│
x
;
θ
)
=
h
θ
(
x
)
P(y=1│x;θ)=h_\theta (x)
P(y=1│x;θ)=hθ(x)
P
(
y
=
0
│
x
;
θ
)
=
1
−
h
θ
(
x
)
P(y=0│x;θ)=1-h_\theta(x)
P(y=0│x;θ)=1−hθ(x)
即
h
(
x
)
h(x)
h(x)输出刚好代表了结果为1的概率
现将两式合并为:
P
(
y
∣
x
;
θ
)
=
h
θ
(
x
)
y
∗
(
1
−
h
θ
(
x
)
)
1
−
y
P(y|x;\theta)=h_\theta(x)^y*(1-h_\theta(x))^{1-y}
P(y∣x;θ)=hθ(x)y∗(1−hθ(x))1−y
可以在y=0和y=1的情况下验证此式
5.构造损失函数 J J J(m个样本,每个样本具有n个特征)
代价函数(成本(cost)函数)h和
J
J
J函数如下,它们是基于最大似然估计推导得到的:
c
o
s
t
(
h
θ
(
x
)
,
y
)
=
{
−
l
o
g
(
h
θ
(
x
)
)
,
y
=
1
−
l
o
g
(
1
−
h
θ
(
x
)
)
,
y
=
0
cost(h_\theta(x),y)=\left\{\begin{matrix} -log(h_\theta(x)),y=1\\ -log(1-h_\theta(x)),y=0\\ \end{matrix}\right.
cost(hθ(x),y)={−log(hθ(x)),y=1−log(1−hθ(x)),y=0
J
(
θ
)
=
1
m
∑
i
=
1
m
c
o
s
t
(
h
θ
(
x
i
)
,
y
i
)
=
−
1
m
[
∑
i
=
1
i
=
m
(
y
i
∗
l
o
g
h
θ
(
x
i
)
+
(
1
−
y
i
)
∗
l
o
g
(
1
−
h
θ
(
x
i
)
)
)
]
J(\theta)= \frac{1}{m}\sum{^m_{i=1}}cost(h_\theta(x_i),y_i)=-\frac{1}{m} \begin{bmatrix} \sum{^{i=m}_{i=1}}(y_i*logh_\theta(x_i)+(1-y_i)*log(1-h_\theta(x_i))) \end{bmatrix}
J(θ)=m1∑i=1mcost(hθ(xi),yi)=−m1[∑i=1i=m(yi∗loghθ(xi)+(1−yi)∗log(1−hθ(xi)))]
6.推导损失函数的过程
假设每个样本均独立同分布,则根据最大似然估计有:
L
(
θ
)
=
∏
i
=
1
i
=
m
P
(
y
i
∣
x
i
;
θ
)
=
∏
i
=
1
i
=
m
h
θ
(
x
i
)
y
i
∗
(
1
−
h
θ
(
x
i
)
)
1
−
y
i
L(\theta)=\prod^{i=m}_{i=1}P(y_i|x_i;\theta)=\prod^{i=m}_{i=1}h_\theta(x_i)^{y_i}*(1-h_\theta(x_i))^{1-y_i}
L(θ)=i=1∏i=mP(yi∣xi;θ)=i=1∏i=mhθ(xi)yi∗(1−hθ(xi))1−yi
进而求最大对数似然估计:
l
(
θ
)
=
l
o
g
L
(
θ
)
l(\theta)=logL(\theta)
l(θ)=logL(θ)
=
∑
i
=
1
i
=
m
(
y
i
∗
l
o
g
h
(
x
i
)
+
(
1
−
y
i
)
∗
l
o
g
(
1
−
h
(
x
i
)
)
)
=\sum{^{i=m}_{i=1}}(y_i*logh(x_i)+(1-y_i)*log(1-h(x_i)))
=∑i=1i=m(yi∗logh(xi)+(1−yi)∗log(1−h(xi)))
最大似然估计就是求使得
l
(
θ
)
l(\theta)
l(θ)取最大值时的
θ
\theta
θ
记损失函数为:
J
(
θ
)
=
−
1
m
l
(
θ
)
J(\theta)=-\frac{1}{m}l(\theta)
J(θ)=−m1l(θ)
=
−
1
m
∑
i
=
1
m
(
y
i
∗
l
o
g
h
θ
(
x
i
)
+
(
1
−
y
i
)
∗
l
o
g
(
1
−
h
θ
(
x
i
)
)
)
=-\frac{1}{m}\sum{^{m}_{i=1}}(y_i*logh_\theta(x_i)+(1-y_i)*log(1-h_\theta(x_i)))
=−m1∑i=1m(yi∗loghθ(xi)+(1−yi)∗log(1−hθ(xi)))
损失函数表征预测值与真实值之间的差异程度,如果预测值与真实值越接近则损失函数应该越小,在此损失函数可以取为最大似然估计函数的相反数,其次除以m这一因子并不改变最终求导极值结果,通过除以m可以得到平均损失值,避免样本数量对于损失值的影响。
接下来采取梯度下降法,让损失函数
J
J
J对于
θ
\theta
θ求偏导:
得到
θ
j
\theta_j
θj的迭代式:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
x
i
j
,
j
=
0
,
1
,
2
,
.
.
.
,
n
\theta_j:=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}(h_\theta(x_i)-y_i)x_{i_j},j=0,1,2,...,n
θj:=θj−αm1∑i=1m(hθ(xi)−yi)xij,j=0,1,2,...,n
7.向量化
向量化(Vectorization)是使用矩阵计算来代替for循环,以简化计算过程,提高效率。
向量化过程:
约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值:
g
(
A
)
g(A)
g(A)的参数
A
A
A为一列向量,所以实现
g
g
g函数时要支持列向量作为参数,并返回列向量。
θ
\theta
θ迭代式可以改为:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
x
i
j
=
θ
j
−
α
1
m
∑
i
=
1
m
e
i
x
i
j
=
θ
j
−
α
1
m
x
T
E
;
i
=
1
,
2
,
.
.
.
,
m
,
j
=
0
,
1
,
2
,
.
.
.
,
n
\theta_j:=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}(h_\theta(x_i)-y_i)x_{i_j}=\theta_j-\alpha\frac{1}{m}\sum{^m_{i=1}}e_ix_{i_j}=\theta_j-\alpha\frac{1}{m}x^TE;i=1,2,...,m,j=0,1,2,...,n
θj:=θj−αm1∑i=1m(hθ(xi)−yi)xij=θj−αm1∑i=1meixij=θj−αm1xTE;i=1,2,...,m,j=0,1,2,...,n
综上所述,Vectorization后θ更新的步骤如下:
- 求 A = x ∗ θ A=x*\theta A=x∗θ
- 求 E = g ( A ) − y E=g(A)-y E=g(A)−y
- 求 θ = θ j − α 1 m x T E \theta=\theta_j-\alpha\frac{1}{m}x^TE θ=θj−αm1xTE
8.正则化
暂时未学到,后面补充