1.逻辑回归与线性回归的联系与区别
线性回归是机器学习中最简单的回归算法,它可以写为一个熟悉的表达式:
z
=
θ
0
+
θ
1
+
.
.
.
+
θ
n
x
n
z=\theta_0+\theta_1+...+\theta_n x_n
z=θ0+θ1+...+θnxn
θ
\theta
θ被称为为模型的参数,其中
θ
0
\theta_0
θ0被称为截距,
θ
1
∽
θ
n
\theta_1{\backsim}\theta_n
θ1∽θn被称为系数,这个表达式可以用矩阵表示:
z
=
[
θ
0
,
θ
1
,
θ
2
.
.
.
θ
n
]
∗
[
x
o
x
1
x
2
.
.
.
x
n
]
=
θ
T
x
(
x
0
=
1
)
z=[\theta_0,\theta_1,\theta_2...\theta_n]*\begin{bmatrix}{x_o}\\ x_1\\x_2\\...\\x_n\end{bmatrix}=\theta^Tx(x_0=1)
z=[θ0,θ1,θ2...θn]∗⎣⎢⎢⎢⎢⎡xox1x2...xn⎦⎥⎥⎥⎥⎤=θTx(x0=1)
而构造
θ
T
和
θ
0
\theta^T和\theta_0
θT和θ0是我们主要的工作,最小二乘法是我们做常用的工具,通过函数
z
z
z,线性回归使用输出的特征矩阵
X
X
X来输出一组连续型的标签值y
p
r
e
d
_{pred}
pred来完成预测任务,特性的比如(房价预测,公司业务增长等)。如果标签是离散型变量,尤其是满足
1
∽
0
1\backsim0
1∽0之间变量该如何处理,这时候我们需要引入联系函数,将
z
z
z也映射到
0
∽
1
0\backsim1
0∽1之间。这个联系函数对逻辑回归来说就是
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数:
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g(z)=1+e−z1
线性回归中
z
=
θ
T
x
z=\theta^Tx
z=θTx,于是我们将
z
z
z带入,会得到什么样的结果呢:
g
(
z
)
=
y
(
x
)
=
1
1
+
e
−
θ
T
x
g(z)=y(x)=\frac{1}{1+e^{-\theta^Tx}}
g(z)=y(x)=1+e−θTx1
而
g
(
z
)
就
是
我
们
逻
辑
回
归
返
回
的
标
签
值
,
此
时
,
y
(
x
)
的
取
值
在
[
0
,
1
]
之
间
g(z)就是我们逻辑回归返回的标签值,此时,y(x)的取值在[0,1]之间
g(z)就是我们逻辑回归返回的标签值,此时,y(x)的取值在[0,1]之间,因此
y
(
x
)
和
1
−
y
(
x
)
相
加
为
1
y(x)和1-y(x)相加为1
y(x)和1−y(x)相加为1,我们令二者相除,得到:
l
n
y
(
x
)
1
−
y
(
x
)
=
l
n
1
1
+
e
−
θ
T
x
1
−
1
1
+
θ
T
x
ln\frac{y(x)}{1-y(x)}=ln\frac{\frac{1}{1+e^{-\theta^Tx}}}{1-\frac{1}{1+\theta^Tx}}
ln1−y(x)y(x)=ln1−1+θTx11+e−θTx1
.
.
.
...
...
=
θ
T
x
\theta^Tx
θTx
不难发现,
g
(
x
)
的
形
式
几
率
取
对
数
的
本
质
就
是
我
们
的
线
性
回
归
z
,
我
们
实
际
是
在
对
线
性
回
归
模
型
的
预
测
结
果
取
对
数
让
无
限
逼
近
0
和
1
,
因
此
,
其
对
应
的
模
型
被
称
为
“
对
数
几
率
回
归
”
g(x)的形式几率取对数的本质就是我们的线性回归z,我们实际是在对线性回归模型的预测结果取对数让无限逼近0和1,因此,其对应的模型被称为“对数几率回归”
g(x)的形式几率取对数的本质就是我们的线性回归z,我们实际是在对线性回归模型的预测结果取对数让无限逼近0和1,因此,其对应的模型被称为“对数几率回归”,也就是我们的逻辑回归。
虽然逻辑回归在相关书籍描述较少,但是其在工商业任然有你可替代的地位:
1.逻辑 回归对线性关系的拟合效果非常好
2.逻辑回归计算快
3.逻辑回归返回分类结果并不是固定在0,1,而是以小数形式呈现的概率数字
2.skearn中的 LogisticRegression
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,
)
------参考菜菜的skearn课堂