logistic regression
对于逻辑回归,就是运用已知的数据集(training set)去拟合一组
θ
\theta
θ,等同于在空间中拟合出一条曲线,不过这条曲线不同于线性回归,这条曲线是用于空间划分,对于二分类,就是用曲线将平面划分成两个区域,那么对于这两个不同的区域
θ
T
x
\theta^Tx
θTx对应于大于等于0和小于0,随后再代入
g
(
z
)
g(z)
g(z)即sigmoid函数的时候,就对应于大于等于0.5和小于0.5,这个时候联系概率就将对应区域等同于
y
=
1
y=1
y=1和
y
=
0
y=0
y=0,当然和线性回归一样,是建立在我们已经完成特征选取和模型假设之后,我们所用模型为:
h
θ
(
x
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^T x}}
hθ(x)=g(θTx)=1+e−θTx1
具体步骤其实就是迭代下面两个方程:
第一个是参数更新方程
θ
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(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
第二个是代价函数
J
(
θ
)
=
−
1
m
(
∑
i
=
1
m
y
(
i
)
log
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
)
J(\theta) = -\frac{1}{m}(\sum_{i=1}^my^{(i)}\log h_\theta(x^{(i)})+(1-y^{(i)})\log (1-h_\theta(x^{(i)})))
J(θ)=−m1(i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))))
化成矩阵形式就是:
θ
:
=
θ
−
α
1
m
X
T
(
g
(
X
θ
)
−
y
)
J
(
θ
)
=
−
1
m
(
y
T
log
g
(
X
θ
)
+
(
1
−
y
T
)
log
(
1
−
g
(
X
θ
)
)
)
\begin{aligned} \theta :&= \theta-\alpha\frac{1}{m}X^T(g(X\theta)-y)\\ J(\theta) & = -\frac{1}{m}(y^T\log g(X\theta)+(1-y^T)\log (1-g(X\theta))) \end{aligned}
θ:J(θ)=θ−αm1XT(g(Xθ)−y)=−m1(yTlogg(Xθ)+(1−yT)log(1−g(Xθ)))
matlab 代码实现:
J = - 1/m * (y' * log(sigmoid(X * theta)) + ...
(1-y') * log(1 - sigmoid(X * theta)));
grad = theta - alpha * 1/m * (X' * (sigmoid(X * theta) - y));