逻辑回归
标签(空格分隔): ML 斯坦福视频 笔记
分类问题
对于二元分类问题,将因变量y的可能分类称为正向类(1)和负向类(0)。
逻辑回归算法是为了使线性回归的输出在0-1之间。
假设表说
假设函数是预测值在0-1之间的某个函数,线性回归的值可能超出0-1,因此引入逻辑回归,假设:
hθ(x)=g(ΘTx)
h
θ
(
x
)
=
g
(
Θ
T
x
)
Z=ΘTx
Z
=
Θ
T
x
g(z)=11+e−z
g
(
z
)
=
1
1
+
e
−
z
其中新的模型g(z)称为逻辑函数或sigmoid函数, hθ(x) h θ ( x ) 的输出可视为可能性。
判定边界(decision boundary):
θTx≥0⇒y=1
θ
T
x
≥
0
⇒
y
=
1
θTx<0⇒y=0
θ
T
x
<
0
⇒
y
=
0
代价函数
J(θ)=1m∑mi=1=Cost(hθ(x(i)),y(i))ify=1ify=0
J
(
θ
)
=
1
m
∑
i
=
1
m
=
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
i
f
y
=
1
i
f
y
=
0
Cost(hθ(x),y)=−log(hθ(x))ify=1
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
l
o
g
(
h
θ
(
x
)
)
i
f
y
=
1
Cost(hθ(x),y)=−log(1−hθ(x))ify=0
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
l
o
g
(
1
−
h
θ
(
x
)
)
i
f
y
=
0
从以上公式可以看出, hθ(x) h θ ( x ) 和y之间的差距越大,代价函数的值越大。如果相等,log计算的值为0。这样保证了代价函数是凸函数。可将公式合并;
Cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
log
(
h
θ
(
x
)
)
−
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
向量化:
h=g(Xθ)J(θ)=1m⋅(−yTlog(h)−(1−y)Tlog(1−h))
h
=
g
(
X
θ
)
J
(
θ
)
=
1
m
⋅
(
−
y
T
log
(
h
)
−
(
1
−
y
)
T
log
(
1
−
h
)
)
有了代价函数就可以用梯度下降来求解代价函数最小时的参数了:
Repeat{θj:=θj−α∂∂θjJ(θ)}
R
e
p
e
a
t
{
θ
j
:=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
}
求导:
Repeat{θj:=θj−αm∑i=1m(hθ(x(i))−y(i))x(i)j}
R
e
p
e
a
t
{
θ
j
:=
θ
j
−
α
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
}
向量化:
θ:=θ−αmXT(g(Xθ)−y⃗ )
θ
:=
θ
−
α
m
X
T
(
g
(
X
θ
)
−
y
→
)
改进的代价函数
用库里的方法,代价函数:
function [jVal, gradient] = costFunction(theta)
jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
matlab提供的寻找最小值函数:
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
多分类:一对多,将一个类别拿出来,将剩下的类别作为一个类。重复这个过程,不断地进行二分类。
y={0,1,2,……,n} (n+1分类)从可能性的角度考虑:
y∈{0,1...n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)⋯h(n)θ(x)=P(y=n|x;θ)prediction=maxi(h(i)θ(x))
y
∈
{
0
,
1
.
.
.
n
}
h
θ
(
0
)
(
x
)
=
P
(
y
=
0
|
x
;
θ
)
h
θ
(
1
)
(
x
)
=
P
(
y
=
1
|
x
;
θ
)
⋯
h
θ
(
n
)
(
x
)
=
P
(
y
=
n
|
x
;
θ
)
p
r
e
d
i
c
t
i
o
n
=
max
i
(
h
θ
(
i
)
(
x
)
)