• 替换成logistic回归 C o s t ( h ( θ ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h θ ( x ) ) , y = 0 C o s t ( h ( θ ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h...
假设函数

h(θ)=11+e−θTX$h\left(\theta \right)=\frac{1}{1+{e}^{-{\theta }^{T}X}}$$h(\theta)={1\over{1+e^{-\theta^TX}}}$

为什么使用sigmod

这个网上有很多文章，但是还是不太看懂。大概就是0-1之间增函数，还有是指数分布簇。

代价函数

J(θ)=−1m∑i=1m[yilog(hθ(xi))+(1−yi)log(1−hθ(xi))]$J\left(\theta \right)=-\frac{1}{m}\sum _{i=1}^{m}\left[{y}^{i}\mathrm{log}\left({h}_{\theta }\left({x}^{i}\right)\right)+\left(1-{y}^{i}\right)\mathrm{log}\left(1-{h}_{\theta }\left({x}^{i}\right)\right)\right]$$J(\theta)=-{1\over m}\sum\limits_{i=1}^m[y^i\log(h_{\theta}(x^i))+(1-y^i)\log(1-h_{\theta}(x^i))]$

代价函数推导

伯努利分布
P(X=n)={1−p,n=0p,n=1$P\left(X=n\right)=\left\{\begin{array}{rl}& 1-p,n=0\\ & p,n=1\end{array}$
P(X=n)=\left\{
\begin{aligned}
&1-p,n=0  \\
&p,n=1
\end{aligned}
\right.

求p的最大似然估计量

P{X=x}=px(1−p)1−p=0,1${p}^{x}\left(1-p{\right)}^{1-p}=0,1$$p^x(1-p)^{1-p} =0,1$

设x1,x2,…,xn${x}_{1},{x}_{2},\dots ,{x}_{n}$$x_1,x_2,…,x_n$是给定的样本值

对应的似然函数

L(p)=∏i=1npxi(1−p)1−xi(0<p<1)$L\left(p\right)=\prod _{i=1}^{n}{p}^{{x}_{i}}\left(1-p{\right)}^{1-{x}_{i}}\left(0$L(p)=\prod\limits_{i=1}^n p^{x_i}(1-p)^{1-x_i} (0 求L(p)的最大值点

取对数

lnL(p)=∑i=1nln[pxi(1−p)1−xi]$\mathrm{ln}L\left(p\right)=\sum _{i=1}^{n}\mathrm{ln}\left[{p}^{{x}_{i}}\left(1-p{\right)}^{1-{x}_{i}}\right]$$\ln{L(p)}=\sum\limits_{i=1}^n \ln{[p^{x_i}(1-p)^{1-x_i}]}$

​             =∑i=1n[xilnp+(1−xi)ln(1−p)]$=\sum _{i=1}^{n}\left[{x}_{i}\mathrm{ln}p+\left(1-{x}_{i}\right)\mathrm{ln}\left(1-p\right)\right]$$=\sum\limits_{i=1}^n [x_i\ln{p} + (1-x_i)\ln{(1-p)}]$

替换成logistic回归

Cost(h(θ),y)={−log(hθ(x)),y=1−log(1−hθ(x)),y=0$Cost\left(h\left(\theta \right),y\right)=\left\{\begin{array}{rl}& -log\left({h}_{\theta }\left(x\right)\right),y=1\\ & -log\left(1-{h}_{\theta }\left(x\right)\right),y=0\end{array}$
Cost(h(\theta),y)=\left\{
\begin{aligned}
&-log(h_{\theta}(x)),y=1  \\
&-log(1-h_{\theta}(x)),y=0
\end{aligned}
\right.
(价函数
J(θ)=−1m[∑I=1myiloghθ(xi)+(1−yi)log(1−hθ(xi))]$J\left(\theta \right)=-\frac{1}{m}\left[\sum _{I=1}^{m}{y}^{i}log{h}_{\theta }\left({x}^{i}\right)+\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right)\right)\right]$$J(\theta)=-{1\over m}[\sum\limits_{I=1}^my^ilogh_{\theta}(x^i)+(1-y^i)log(1-h_{\theta}(x^i))]$

代价函数求导

J(θ)=−1m[∑I=1myiloghθ(xi)+(1−yi)log(1−hθ(xi))]$J\left(\theta \right)=-\frac{1}{m}\left[\sum _{I=1}^{m}{y}^{i}log{h}_{\theta }\left({x}^{i}\right)+\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right)\right)\right]$$J(\theta)=-{1\over m}[\sum\limits_{I=1}^my^ilogh_{\theta}(x^i)+(1-y^i)log(1-h_{\theta}(x^i))]$
∂∂θj=−1m∑I=1m∂∂θj[yiloghθ(xi)+(1−yi)log(1−hθ(xi))]$\frac{\mathrm{\partial }}{\mathrm{\partial }{\theta }_{j}}=-\frac{1}{m}\sum _{I=1}^{m}\frac{\mathrm{\partial }}{\mathrm{\partial }{\theta }_{j}}\left[{y}^{i}log{h}_{\theta }\left({x}^{i}\right)+\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right)\right)\right]$$\frac{\partial }{\partial \theta_j}=-{1\over m}\sum\limits_{I=1}^m\frac{\partial }{\partial \theta_j}[y^ilogh_{\theta}(x^i)+(1-y^i)log(1-h_{\theta}(x^i))]$
=−1m∑I=1m[yiloghθ(xi)]′+[(1−yi)log(1−hθ(xi))]′$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}log{h}_{\theta }\left({x}^{i}\right){\right]}^{\prime }+\left[\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right)\right){\right]}^{\prime }$$=-{1\over m}\sum\limits_{I=1}^m [y^ilogh_{\theta}(x^i)]'+[(1-y^i)log(1-h_{\theta}(x^i))]'$   ……….((u+v)′=u′+v′$\left(u+v{\right)}^{\prime }={u}^{\prime }+{v}^{\prime }$$(u+v)'=u'+v'$)
=−1m∑I=1m[yiloghθ(xi)]′+[(1−yi)log(1−hθ(xi))]′$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}log{h}_{\theta }\left({x}^{i}\right){\right]}^{\prime }+\left[\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right)\right){\right]}^{\prime }$$=-{1\over m}\sum\limits_{I=1}^m [y^ilogh_{\theta}(x^i)]'+[(1-y^i)log(1-h_{\theta}(x^i))]'$   ……….((uv)′=u′v−uv′$\left(uv{\right)}^{\prime }={u}^{\prime }v-u{v}^{\prime }$$(uv)'=u'v-uv'$)
=−1m∑I=1m[(yi)′loghθ(xi)+yi(loghθ(xi))′]+[(1−yi)′log(1−hθ(xi))+(1−yi)log(1−hθ(xi))′]$=-\frac{1}{m}\sum _{I=1}^{m}\left[\left({y}^{i}{\right)}^{\prime }log{h}_{\theta }\left({x}^{i}\right)+{y}^{i}\left(log{h}_{\theta }\left({x}^{i}\right){\right)}^{\prime }\right]+\left[\left(1-{y}^{i}{\right)}^{\prime }log\left(1-{h}_{\theta }\left({x}^{i}\right)\right)+\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right){\right)}^{\prime }\right]$$=-{1\over m}\sum\limits_{I=1}^m [(y^i)'logh_{\theta}(x^i)+y^i(logh_{\theta}(x^i))']+[(1-y^i)'log(1-h_{\theta}(x^i))+(1-y^i)log(1-h_{\theta}(x^i))']$
=−1m∑I=1m[(yi)′loghθ(xi)+yi(loghθ(xi))′]+[(1−yi)′log(1−hθ(xi))+(1−yi)log(1−hθ(xi))′]$=-\frac{1}{m}\sum _{I=1}^{m}\left[\left({y}^{i}{\right)}^{\prime }log{h}_{\theta }\left({x}^{i}\right)+{y}^{i}\left(log{h}_{\theta }\left({x}^{i}\right){\right)}^{\prime }\right]+\left[\left(1-{y}^{i}{\right)}^{\prime }log\left(1-{h}_{\theta }\left({x}^{i}\right)\right)+\left(1-{y}^{i}\right)log\left(1-{h}_{\theta }\left({x}^{i}\right){\right)}^{\prime }\right]$$=-{1\over m}\sum\limits_{I=1}^m [(y^i)'logh_{\theta}(x^i)+y^i(logh_{\theta}(x^i))']+[(1-y^i)'log(1-h_{\theta}(x^i))+(1-y^i)log(1-h_{\theta}(x^i))']$……….(h(θ)=11+e−θTX$h\left(\theta \right)=\frac{1}{1+{e}^{-{\theta }^{T}X}}$$h(\theta)={1\over{1+e^{-\theta^TX}}}$带入)
=−1m∑I=1m[yi(log(11+e−θTxi)′]+[(1−yi)log(1+e−θTxi−11+e−θTxi)′]$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}\left(log\left(\frac{1}{1+{e}^{-{\theta }^{T}{x}^{i}}}{\right)}^{\prime }\right]+\left[\left(1-{y}^{i}\right)log\left(\frac{1+{e}^{-{\theta }^{T}{x}^{i}}-1}{1+{e}^{-{\theta }^{T}{x}^{i}}}{\right)}^{\prime }\right]$$=-{1\over m}\sum\limits_{I=1}^m [y^i(log({1\over{1+e^{-\theta^Tx^{i}}}})']+[(1-y^i)log({{1+e^{-\theta^Tx^{i}}-1}\over{1+e^{-\theta^Tx^{i}}}})']$ ……….((Cu)′=Cu′,(log(u))′=1uu′$\left(Cu{\right)}^{\prime }=C{u}^{\prime },\left(log\left(u\right){\right)}^{\prime }=\frac{1}{u}{u}^{\prime }$$(Cu)'=Cu',(log(u))'={1\over u}u'$)
=−1m∑I=1m[yi(1+e−θTxi)(11+e−θTxi)′]+[(1−yi)(1+e−θTxie−θTxi)(e−θTxi1+e−θTxi)′]$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}\left(1+{e}^{-{\theta }^{T}{x}^{i}}\right)\left(\frac{1}{1+{e}^{-{\theta }^{T}{x}^{i}}}{\right)}^{\prime }\right]+\left[\left(1-{y}^{i}\right)\left(\frac{1+{e}^{-{\theta }^{T}{x}^{i}}}{{e}^{-{\theta }^{T}{x}^{i}}}\right)\left(\frac{{e}^{-{\theta }^{T}{x}^{i}}}{1+{e}^{-{\theta }^{T}{x}^{i}}}{\right)}^{\prime }\right]$$=-{1\over m}\sum\limits_{I=1}^m [y^i({1+e^{-\theta^Tx^{i}}})({1\over{1+e^{-\theta^Tx^{i}}}})']+[(1-y^i)({{1+e^{-\theta^Tx^{i}}}\over{e^{-\theta^Tx^{i}}}})({{e^{-\theta^Tx^{i}}}\over{1+e^{-\theta^Tx^{i}}}})']$ ……….((uv)′=u′v−uv′v2,(e−Cx)′=−Ce−Cx$\left(\frac{u}{v}{\right)}^{\prime }=\frac{{u}^{\prime }v-u{v}^{\prime }}{{v}^{2}},\left({e}^{-Cx}{\right)}^{\prime }=-C{e}^{-Cx}$$({u \over v})'={{u'v-uv'}\over{v^2}},(e^{-Cx})'=-Ce^{-Cx}$)
=−1m∑I=1m[yi(1+e−θTxi)(0−(1+e−θTxi)′(1+e−θTxi)2)]−[(1−yi)(1+e−θTxie−θTxi)((e−θTxi)′(1+e−θTxi)2)]$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}\left(1+{e}^{-{\theta }^{T}{x}^{i}}\right)\left(\frac{0-\left(1+{e}^{-{\theta }^{T}{x}^{i}}{\right)}^{\prime }}{\left(1+{e}^{-{\theta }^{T}{x}^{i}}{\right)}^{2}}\right)\right]-\left[\left(1-{y}^{i}\right)\left(\frac{1+{e}^{-{\theta }^{T}{x}^{i}}}{{e}^{-{\theta }^{T}{x}^{i}}}\right)\left(\frac{\left({e}^{-{\theta }^{T}{x}^{i}}{\right)}^{\prime }}{\left(1+{e}^{-{\theta }^{T}{x}^{i}}{\right)}^{2}}\right)\right]$$=-{1\over m}\sum\limits_{I=1}^m [y^i({1+e^{-\theta^Tx^{i}}}) ({{0-(1+e^{-\theta^Tx^{i}})'}\over{(1+e^{-\theta^Tx^{i}})^2}}) ]-[(1-y^i)({{1+e^{-\theta^Tx^{i}}}\over{e^{-\theta^Tx^{i}}}})({{(e^{-\theta^Tx^{i}})'}\over{(1+e^{-\theta^Tx^{i}})^2}})]$
=−1m∑I=1m[yi(−(1+e−θTxi)′(1+e−θTxi))]−[(1−yi)(xi(1+e−θTxi))]$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}\left(\frac{-\left(1+{e}^{-{\theta }^{T}{x}^{i}}{\right)}^{\prime }}{\left(1+{e}^{-{\theta }^{T}{x}^{i}}\right)}\right)\right]-\left[\left(1-{y}^{i}\right)\left(\frac{{x}^{i}}{\left(1+{e}^{-{\theta }^{T}{x}^{i}}\right)}\right)\right]$$=-{1\over m}\sum\limits_{I=1}^m [y^i({{-(1+e^{-\theta^Tx^{i}})'}\over{(1+e^{-\theta^Tx^{i}})}}) ]-[(1-y^i)({{x^i}\over{(1+e^{-\theta^Tx^{i}})}})]$……….((e−Cx)′=−Ce−Cx$\left({e}^{-Cx}{\right)}^{\prime }=-C{e}^{-Cx}$$(e^{-Cx})'=-Ce^{-Cx}$)
=−1m∑I=1myixe−θTxi−x+xyi1+e−θTxi$=-\frac{1}{m}\sum _{I=1}^{m}\frac{{y}^{i}x{e}^{-{\theta }^{T}{x}^{i}}-x+x{y}^{i}}{1+{e}^{-{\theta }^{T}{x}^{i}}}$$=-{1\over m}\sum\limits_{I=1}^m {{y^ixe^{-\theta^Tx^{i}}-x+xy^i}\over{1+e^{-\theta^Tx^{i}}}}$
=−1m∑I=1myi(1+e−θTxi−1)1+e−θTxixj$=-\frac{1}{m}\sum _{I=1}^{m}\frac{{y}^{i}\left(1+{e}^{-{\theta }^{T}{x}^{i}}-1\right)}{1+{e}^{-{\theta }^{T}{x}^{i}}}{x}_{j}$$=-{1\over m}\sum\limits_{I=1}^m {{y^i(1+e^{-\theta^Tx^{i}}-1)}\over{1+e^{-\theta^Tx^{i}}}}x_j$
=−1m∑I=1myi(1+e−θTxi−1)1+e−θTxixj$=-\frac{1}{m}\sum _{I=1}^{m}\frac{{y}^{i}\left(1+{e}^{-{\theta }^{T}{x}^{i}}-1\right)}{1+{e}^{-{\theta }^{T}{x}^{i}}}{x}_{j}$$=-{1\over m}\sum\limits_{I=1}^m {{y^i(1+e^{-\theta^Tx^{i}}-1)}\over{1+e^{-\theta^Tx^{i}}}}x_j$
=−1m∑I=1myi−11+e−θTxixi$=-\frac{1}{m}\sum _{I=1}^{m}{y}^{i}-\frac{1}{1+{e}^{-{\theta }^{T}{x}^{i}}}{x}^{i}$$=-{1\over m}\sum\limits_{I=1}^m y^i-{{1}\over{1+e^{-\theta^Tx^{i}}}}x^i$
=−1m∑I=1m[yi−hθ(xi)]xj$=-\frac{1}{m}\sum _{I=1}^{m}\left[{y}^{i}-{h}_{\theta }\left({x}^{i}\right)\right]{x}_{j}$$=-{1\over m}\sum\limits_{I=1}^m[y^i-h_{\theta}(x^i)]x_j$
展开全文
• 代价函数得来 首先确定： hθ(x)=g(θTx)=11+e−θTx h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1...函数hθ(x)h_{\theta}(x)hθ​(x)即logistic回归公式。 为了得到一个凸函数，logistic回归似然函数： L(...
代价函数得来
首先确定：
$h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}}$
函数$h_{\theta}(x)$即logistic回归的公式。
为了得到一个凸函数，logistic回归似然函数：
$L(\theta)=\prod_{i=1}^{m} P\left(y_{i} | x_{i} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)\right)^{y_{i}}\left(\left(1-h_{\theta}\left(x_{i}\right)\right)\right)^{1-y_{i}}$
取对数：
$l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y_{i} \operatorname{logh}_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right)$
其中$m$为样本个数
代价函数为：$J(\theta)=-\frac{1}{m} l(\theta)$
梯度的推导首先要明白一个公式(对$\theta$求导)：$h_{\theta}(x)' = g(\theta^{T}x)' = g(\theta^{T}x)(1-g(\theta^{T}x))x$
代价函数导数为：
$\frac{\delta}{\delta_{\theta_{j}}} J(\theta) = -\frac{1}{m}(\sum_{i=1}^{m}y^{i}(1-h_\theta(x^i)x^i - (1-y^i)h_\theta(x^i)x^i))\newline =-\frac{1}{m}(\sum_{i=1}^m(y^i - h_\theta(x^i)x^i))\\ =\frac{1}{m}(\sum_{i=1}^m(h_\theta(x^i)-y^i)x^i))$
每次只要更新$\theta_j = \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^i)-y^i)x_j^i)$
下面是python实现代码：
# coding: utf-8

import numpy as np
import pandas as pd

# change 3 kinds of Iris to 1,2,3
# add a feature x0 = 1 (w * x + b to (b.w)*(x0,x))
def transform_classification(Iris_df):
Iris = Iris_df.copy()
classification = {}
for i,c in enumerate(Iris.iloc[:,-1]):
if c not in classification:
classification[c] = len(classification) + 1
Iris.iloc[i,-1] = len(classification)
else:
Iris.iloc[i,-1] = classification[Iris.iloc[i,-1]]
Iris.insert(4,'10',pd.DataFrame(np.ones(len(Iris)+1)))
return Iris

# def predict function
def predict(theta, x):
a = [- (theta * x[i].T) for i in range(len(x))]
h_theta = 1/(1 + np.exp(a))
return h_theta

# define loss function
def eval_loss(theta, x, y):
J_theta = -np.array([y[i] *np.log(predict(theta, x[i])) + (1 - y[i]) *np.log(1 - predict(theta, x[i])) for i in range(len(x))])
clf = np.where(J_theta >= 0.5, 1, 0)
correct_rate = (clf == y).mean()
return J_theta.mean(), correct_rate

def get_gradient(y_pred, y_real, x):
d_theta = np.array([((y_pred - y_real) *x[:,i]).mean() for i in range(x.shape[1])])
return d_theta

# update theta
def update_theta(batch_x, batch_y, theta, lr):
batch_y_pred = predict(theta, batch_x)
d_theta = get_gradient(batch_y_pred, batch_y, batch_x)
theta -= lr*d_theta
return theta

# train function
def train(x, y, batch_size, epoch, lr):
x = np.mat(x)
#     give theta a random value
theta = np.random.random(x.shape[1])
for epo in range(epoch):
#         chose samples randomly
ids = np.random.choice(len(x), batch_size)
batch_x = x[ids]
batch_y = y[ids]
theta = update_theta(batch_x, batch_y, theta, lr)
loss, accuracy = eval_loss(theta, batch_x, batch_y)
print('epoch:{}\nθ:{}\nloss = {}\naccuracy = {}\n'.format(epo+1, theta, loss, accuracy))
return theta

def run():
Iris = transform_classification(Iris)
Iris.iloc[:,-1] = np.where(Iris.values[:,-1] == 1, 1, 0)
#     split data to train
data = Iris.values
idxs = np.array(list(range(len(data))))
np.random.shuffle(idxs)
k = int(1*len(idxs))
train_x = data[idxs[:k],:-1]
train_y = data[idxs[:k],-1]
test_x =  data[idxs[k:],:-1]
test_y =  data[idxs[k:],:1]

lr = 0.001
batch_size = 100
epoch = 100
#     train
theta = train(train_x[:,:], train_y, batch_size, epoch, lr)

if __name__ == '__main__':
run()



展开全文
• 　本文首先阐述Logistic回归的定义，然后介绍一些最优化算法，其中包括基本的梯度上升法和一个改进的随机梯度上升法，这些最优化算法将用于分类器的训练，最好本文将给出一个Logistic回归的实例
1，引言
logistic回归是机器学习中最常用最经典的分类方法之一，有人称之为逻辑回归或者逻辑斯蒂回归。虽然他称为回归模型，但是却处理的是分类问题，这主要是因为它的本质是一个线性模型加上一个映射函数Sigmoid，将线性模型得到的连续结果映射到离散型上。它常用于二分类问题，在多分类问题的推广叫softmax。
本文首先阐述Logistic回归的定义，然后介绍一些最优化算法，其中包括基本的梯度上升法和一个改进的随机梯度上升法，这些最优化算法将用于分类器的训练，最好本文将给出一个Logistic回归的实例，预测一匹病马是否能被治愈。
在我们的日常生活中遇到过很多最优化问题，比如如何在最短时间内从A点到达B点？如何投入最少工作量却获得最大的效益？如何设计发动机使得油耗最少而功率最大？可见，最优化的作用十分强大，所以此处我们介绍几个最优化算法，并利用它们训练出一个非线性函数用于分类。
现在假设有一些数据点，我们用一条直线对这些点进行拟合（该线称为最佳拟合直线），这个拟合过程就称作回归。利用logistic回归进行分类的主要思想是：根据现有数据对分类边界线建立回归公式，以此进行分类，这里的“回归”一词源于最佳拟合，表示要找到最佳拟合参数集。训练分类器时的做法就是寻找最佳拟合参数，使用的是最优化算法，下面我们首先介绍一下这个二值型输出分类器的数学原理。
那么逻辑回归与线性回归是什么关系呢？
逻辑回归（Logistic Regression）与线性回归（Linear Regression）都是一种广义线性模型（generalized linear model）。逻辑回归假设因变量 y 服从伯努利分布，而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处，去除Sigmoid映射函数的话，逻辑回归算法就是一个线性回归。可以说，逻辑回归是以线性回归为理论支持的，但是逻辑回归通过Sigmoid函数引入了非线性因素，因此可以轻松处理0/1分类问题。
2，Logistic回归的一般过程

（1）收集数据：采用任意方法收集数据

（2）准备数据：由于需要进行距离计算，因此要求数据类型为数值型。另外，结构化数据格式则最佳

（3）分析数据：采用任意方法对数据进行分析

（4）训练算法：大部分时间将用于训练，训练的目的是为了找到最佳的分类回归系数

（5）使用算法：首先，我们需要输入一些数据，并将其转换成对应的结构化数值；接着，基于训练好的回归系数就可以对这些数值进行简单的回归计算，判定他们属于哪个类别；在这之后，我们就可以在输出的类别上做一些其他分析工作。

3，Logistic回归的优缺点
**优点：**计算代码不多，易于理解和实现，计算代价不高，速度快，存储资源低
**缺点：**容易欠拟合，分类精度可能不高
**适用数据类型：**数值型和标称型数据
4，基于Logistic回归和Sigmoid函数的分类
**我们想要的函数应该是：能接受所有的输入，然后预测出类型。**例如，在两个类的情况下，上述函数输出0或1。该函数称为海维赛德阶跃函数（Heaviside step function），或者直接称为单位阶跃函数。然而，海维赛德阶跃函数的问题在于：该函数在跳跃点上从0瞬间跳跃到1，这个瞬间跳跃过程有时很难处理。幸好，另一个函数也有类似的性质（可以输出0或者1），且数学上更易处理，这就是Sigmoid函数。Sigmoid函数具体的计算公式如下：
自变量取值为任意实数，值域[0, 1]
图5-1给出了Sigmoid函数在不同坐标尺度下的两条曲线图。当x为0时，Sigmoid函数值为0.5。随着x的增大，对应的Sigmoid值将逼近于1；而随着x的减少，Sigmoid值将逼近于0.如果横坐标刻度足够大，Sigmoid函数看起来很像一个阶跃函数。

**解释Sigmoid函数：**将任意的输入映射到了 [0, 1]区间，我们在线性回归中可以得到一个预测值，再将该值映射到 Sigmoid函数中这样就完成了由值到概率的转换，也就是分类任务。
因此，为了实现Logistic回归分类器，我们可以在每个特征上都乘以一个回归系数，然后把所有的结果值相加，将这个总和带入Sigmoid函数中，进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类，小于0.5即被归入0类，所以，Logistic回归也可以被看成是一种概率估计。
确定了分类器的函数形式之后，现在的问题变成了：最佳回归系数是多少？如何确定其大小。
5，基于最优化方法的最佳回归系数确定
Sigmoid函数的输入记为z，由下面公式得到：

如果采用向量的写法，上述公式可以写成  z = wTx  ，它表示将这两个数值向量对应元素相乘，然后全部加起来即得到z值。

其中的向量x是分类器的输入数据，向量w也就是我们要找到的最佳参数（系数），从而使得分类器尽可能的准确，为了寻找该最佳参数，需要用到最优化理论的一些知识。
然后再看看我们的Logistic回归模型的公式：

这里假设 W>0，Y与X各维度叠加的图形关系，如下图所示（x为了方便取1维）：

下面首先学习梯度上升的最优化方法，我们将学习到如何使用该方法求得数据集的最佳参数，接下来，展示如何绘制梯度上升法产生的决策边界图，该图将梯度上升法的分类效果可视化的呈现出来，最后我们将学习随机梯度上升算法，以及如何对其进行修改以获得很好地结果。

可能我们最常听到的是梯度下降算法，它与这里的梯度上升算法是一样的，只是公式中的加法需要变成减法，梯度上升算法用来求函数的最大值，而梯度下降算法是用来求函数的最小值

6，梯度上升法
梯度上升法基于的思想是：要找到某函数的最大值，最好的方法是沿着该函数的梯度方向探寻，如果梯度记为，则函数 f(x,y) 的梯度由下面式子表示：

这个梯度意味着要沿着x的方向移动
，沿着y方向移动
，其中函数f(x,y)必须要在待计算的点上有定义并且可微，一个具体的函数例子见图5-2：

上图中的梯度上升算法沿梯度方向移动了一步，可以看出，梯度算子总是指向函数值增长最快的方向。这里所说的移动方向，而未提到移动量的大小。该量值称为步长，记为。用向量来表示的话，梯度算法的迭代公式如下：

该公式将一直被迭代执行，直至达到某个停止条件为止，比如迭代次数达到某个指定值或算法达到某个可以允许的误差范围。
基于上面的内容，我们来看一个Logistic回归分类器的应用例子，从图5-3可以看到我们采用的数据集。

梯度上升法的公式推导（LR 损失函数）
在LR中，应用极大似然估计法估计模型参数，由于Sigmoid函数的特性，我们可以做如下的假设：

上式即为在已知样本X和参数θ的情况下。样本X属性正类（y=1）和负类（y=0）的条件概率，将两个公式合并成一个，如下：

假定样本与样本之间相互独立，那么整个样本集生成的概率即为所有样本生成概率的乘积（也就是n个独立样本出现的似然函数如下）：

为了简化问题，我们对整个表达式求对数（即为LR 损失函数）：

满足似然函数（θ）的最大的θ值即时我们需要求解的模型。
那么梯度上升法就像爬坡一样，一点一点逼近极值，而上升这个动作用数学公式表达即为：

其中，α 为步长。
回到Logistic回归问题，我们同样对函数求偏导。
对这个公式进行分解，先看：

我们可以看到，对函数求偏导，分解为三部分，然后我们对这三部分分布求导。
其中：

再由：

可得：

接下来：
最后：

综合三部分即得到：

如果上面链式分解不好理解的话，可以看下面直接求导（结果是一样的）：

注意上面是将梯度上升求最大值，转换为梯度下降了，本质没变。
因此梯度迭代公式为：

如果为梯度下降，我们注意符号的变化，如下：

7，训练算法：使用梯度上升找到最佳参数
上图有100个样本点，每个点包含两个数值型特征：X1和X2，在此数据集上，我们将通过使用梯度上升法找到最佳回归系数，也就是拟合出Logistic回归模型的最佳参数。
所以我们的目标：建立分类器，求解出theta参数
设定阈值，根据阈值判断结果
8 Python中的sklearn.linear_model.LogisticRegression
sklearn.linear_model.LogisticRegression官方API：http://scikitlearn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0,fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None,solver='liblinear', max_iter=100, multi_class='ovr', verbose=0,warm_start=False, n_jobs=1)

ogistic回归（aka logit，MaxEnt）分类器。
在多类情况下，如果将“ multi_class”选项设置为“ ovr”，则训练算法将使用“一对多休息”（OvR）方案；如果将“ multi_class”选项设置为“多项式”，则使用交叉熵损失’。（当前，只有“ lbfgs”，“ sag”，“ saga”和“ newton-cg”求解器支持“多项式”选项。）
该类使用“ liblinear”库，“ newton-cg”，“ sag”，“ saga”和“ lbfgs”求解器实现正则逻辑回归。请注意，默认情况下将应用正则化。它可以处理密集和稀疏输入。使用C排序的数组或包含64位浮点数的CSR矩阵可获得最佳性能；其他任何输入格式将被转换（并复制）。
“ newton-cg”，“ sag”和“ lbfgs”求解器仅支持带有原始公式的L2正则化，不支持正则化。'liblinear’求解器支持L1和L2正则化，仅针对L2罚分采用对偶公式。仅“ saga”求解器支持Elastic-Net正则化。

笔记
底层的C实现在拟合模型时使用随机数生成器选择特征。因此，对于相同的输入数据具有略微不同的结果并不罕见。如果发生这种情况，请尝试使用较小的tol参数。
在某些情况下，预测输出可能与独立liblinear的输出不匹配。请参见 叙述文档中与liblinear的区别。
参考文献
L-BFGS-B –大规模约束优化软件
朱次有，理查德·伯德，豪尔赫·诺德达尔和何塞·路易斯·莫拉莱斯。 http://users.iems.northwestern.edu/~nocedal/lbfgsb.html
LIBLINEAR –大型线性分类的库
https://www.csie.ntu.edu.tw/~cjlin/liblinear/
凹陷-马克·施密特（Mark Schmidt），尼古拉斯·勒·鲁（Nicolas Le Roux）和弗朗西斯·巴赫（Francis Bach）
用随机平均梯度最小化有限求和 https://hal.inria.fr/hal-00860051/document
SAGA – Defazio，A.，Bach F.和Lacoste-Julien S.（2014）。
SAGA：一种支持非强凸复合物镜的快速增量梯度方法 https://arxiv.org/abs/1407.0202
于祥富，黄芳兰，林志仁（2011）。双坐标下降
逻辑回归和最大熵模型的方法。机器学习85（1-2）：41-75。 https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf
例子
>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
[9.7...e-01, 2.8...e-02, ...e-08]])
>>> clf.score(X, y)
0.97...


使用实例sklearn.linear_model.LogisticRegression


展开全文
• logistic回归模型是一种线性生成模型。本文将介绍logistic回归模型相关的知识，为了更好地理解模型的决策边界函数，本文同时分析了多元变量的协方差对概率分布的影响。本文脉络:logistic回归模型的含义logistic模型...
logistic回归模型是一种线性生成模型。本文将介绍logistic回归模型相关的知识，为了更好地理解模型的决策边界函数，本文同时分析了多元变量的协方差对概率分布的影响。本文脉络:logistic回归模型的含义logistic模型的决策边界函数分析logistic模型的参数最优化logistic回归模型与感知机模型的比较总结logistic回归模型的含义我们把分类模型分成两个阶段，推断阶段和决策阶段，推断阶段对联合概率分布建模，然后归一化，得到后验概率。决策阶段确定每个新输入x的类别。我们用推断阶段的方法来推导logistic回归模型，首先对类条件概率密度  和类先验概率分布  建模，然后通过贝叶斯定理计算后验概率密度。考虑二分类的情形，类别C1的后验概率密度;令 则: 式中的  就是logistic函数因此，logistic回归的值等于输入变量为x的条件下类别为C1的概率 (1) 当  分类结果为C1(2) 当  分类结果为C2结论：logistic回归值表示所属类的后验概率，无论是二分类还是多分类，分类结果都是后验概率最大所对应的类。logistic的决策边界函数分析决策边界函数，简而言之，就是函数的两侧是不同的分类结果。可定性的分析协方差的三种情况与分布图的关系。(a) 图表示正常的协方差矩阵的高斯分布图。(b) 图表示协方差矩阵是对角矩阵的高斯分布图。(c) 图表示协方差矩阵是对角矩阵且对角元素都相等的高斯分布图。logistic的决策边界函数分析logistic曲线如下图，红色直线(a=0)表示决策边界函数:假设类条件概率密度是高斯分布，即P(x|Ck),然后求解后验概率的表达式，即P(Ck|x)。我们知道，logistic回归值就是所求的后验概率。假设类条件概率密度的协方差相同，类条件概率密度为:由上面的推导公式得后验概率为:其中:由后验概率  的表达式可知，当类条件的协方差矩阵相等时，决策边界函数是随x线性变化的直线。结论：如下图，若两类的条件概率密度的协方差相同时（如C1和C2的协方差相同），则决策边界函数是直线；若两类的条件概率密度的协方差不相同时（如C1和C3，C2和C3），则决策边界函数是曲线。判断协方差矩阵是否相同可以根据分布图形形状是否相同来判断，如C1和C2的协方差相同，C3和C1、C2的协方差不相同。假设类条件概率密度符合高斯分布且具有相同的协方差矩阵，则决策边界函数是一条直线；若类条件概率密度符合更一般的指数分布且缩放参数s相同，决策边界函数仍然是一条直线。logistic模型的参数最优化logistic模型损失函数logistic回归模型的含义是后验概率分布，因此可以从概率的角度去设计损失函数。考虑两分类情况，假设有N个训练样本，logistic模型是  表示后验概率y=1的概率，则  表示y=0的概率，变量  取值1或0，且分别代表模型 因此，似然函数 损失函数 logistic模型的参数最优化损失函数最小化等价于模型参数的最优化，如下图:利用梯度下降法求最优解，学习速率  :具体求法本文不介绍，只给出算法的思想。为了避免过拟合问题，则在原来的损失函数增加正则项，然后利用梯度下降法求最优解，这里也不展开。logistic模型与感知机模型的比较logistic模型与感知机模型的相同点由上面的分析可知，假设类条件概率分布的协方差相同，则logistic模型的决策边界函数是随x线性变化的直线，因此，感知机模型与logistic模型的分类策略一样，即决策边界函数是一样的。如下图:感知机模型：当点落在直线上方，y>0,则分类结果为C1；反之为C2。logistic模型：当点落在上方，y>0，则后验概率P(C1|X)>0.5,分类结果为C1；反之为C2。考虑到对输入变量x进行非线性变换  ,感知机和logistic模型的分类策略仍一样，决策边界函数相同，如下图:感知机模型:当点落在圆外，y>0，则分类结果为C1；反之为C2。logistic模型：当点落在圆外，y>0，则后验概率P(C1|X)>0.5,分类结果为C1；反之为C2。logistic模型与感知机模型的异同点(1) logistic回归模型限制值的范围在0~1,感知机模型对值范围没有限制，因此logistic模型相比感知机模型，对异常点有更强的鲁棒性。如下图，当有异常数据时，logistic模型要好于感知机模型。(2) 感知机模型用误分类点到超平面的距离衡量损失函数，而logistic模型则从概率角度去衡量损失函数。总结logistic回归的含义是后验概率分布，用概率的角度去设计似然函数，logistic模型相比于感知机模型对异常数据具有更好的鲁棒性。
展开全文
• 今天下午碰到一个老师咨询我有关Logistic回归结果解读的问题，我觉得有必要给大家整理分享一下。首先，我们要先了解什么是Logistic回归logistic回归主要用来预测离散因变量(分类因变量)与一组解释变量(自变量)之间...
• Logistic分布设X是连续随机变量，Logistic分布指的是一种连续型的概率分布，其分布函数Logistic分布分布函数和密度函数分别如图所示。Logistic分布密度函数其中，μ是位置参数，γ(γ>0)是形状参数。密度函数f(x)...
• 在我们做统计分析之前，面对大量杂乱无章的数字往往会做个散点图，以对数据有直观的了解。例如，某超市的销售主管想要知道，顾客的收入水平是否对购买新的智能手机有影响。...因此可得以下回归直线：P=...
• 因变量为无序多分类资料，或者因变量虽为有序多分类但不满足比例优势假定(平行性检验P>0.05)，可采用无序多分类的logistic...无序多分类的logistic回归模型与有序多分类的logistic回归模型不同。有序多分类的logi...
• 编者按logistic回归又称logistic回归分析，是一种广义的线性回归分析模型，常用于数据挖掘，疾病自动诊断等领域。例如，探讨引发疾病的危险因素，并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例，选择两组...
• Logistic回归原理及公式推导
• 1.&nbsp;引言 此前的博客中，我们已经介绍了几个分类算法。...逻辑斯蒂回归。 他凭借易于实现与优异的性能，拥有着十分广泛的使用，他不仅可以进行二分类问题的解决，也可以解决多分类问题，简单起见，...
• Logistic回归为概率型非线性回归模型，是研究二分类观察结果与一些影响因素之间关系的一种多 变量分析方法。通常的问题是，研究某些因素条件下某个结果是否发生，比如医学中根据病人的一些症状来判断它是 否患有...
• Logistic回归损失函数的极大似然推导：西瓜书公式3.27怎么推来的？ Logistic回归损失函数的最优化算法：什么是牛顿法、拟牛顿法？ 为什么不用线性回归做分类？ Logistic回归为什么不像线性回归那样用平方损失函数...
• 最近学习Logistic回归算法，在网上看了许多博文，笔者觉得这篇文章http://blog.kamidox.com/logistic-regression.html写得最好。但其中有个关键问题没有讲清楚：为什么选择-log(h(x))作为成本函数(也叫损失函数)。 ...

...