介绍简单的线性回归和逻辑回归
介绍
线性回归和逻辑回归是深度学习中最基础的模型之一,也是解决许多实际问题的重要工具。线性回归和逻辑回归均属于监督学习中的模型。线性回归模型用于连续数值型数据的预测,逻辑回归模型用于分类问题。
在本教程中,我们将介绍线性回归和逻辑回归的基本概念,并用Python代码来实现简单的线性回归和逻辑回归模型。
线性回归
基本概念
线性回归是一种用于连续数值型数据的建模方法,主要用于预测因变量与一个或多个自变量之间的关系。在单变量线性回归中,模型假设因变量和一个自变量之间存在线性关系。 线性回归模型可以用下面的方程表示:
y
=
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
n
x
n
+
ϵ
y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n+ \epsilon
y=β0+β1x1+β2x2+...+βnxn+ϵ
ϵ
ϵ
ϵ其中,
y
y
y 是因变量,
x
1
,
x
2
,
.
.
.
,
x
n
x_1, x_2, ..., x_n
x1,x2,...,xn 是自变量,
β
0
,
β
1
,
β
2
,
.
.
.
,
β
n
\beta_0, \beta_1, \beta_2, ..., \beta_n
β0,β1,β2,...,βn 是模型的系数,常常称为权重或参数,
ϵ
\epsilon
ϵ是误差项,代表由于种种原因,导致的真实值和预测值之间的差异。在训练模型时,我们的目标是学习真实值和预测值之间的关系,即学习得到最合适的系数
β
0
,
β
1
,
β
2
,
.
.
.
,
β
n
\beta_0, \beta_1, \beta_2, ..., \beta_n
β0,β1,β2,...,βn。
我们的目标是找到一组参数 β 0 , β 1 , β 2 , . . . , β n \beta_0, \beta_1, \beta_2, ..., \beta_n β0,β1,β2,...,βn,使得模型能够最好地预测因变量的值。常用的方法是最小二乘法。
Python实现
我们将使用scikit-learn库中的线性回归模型来实现我们的线性回归模型。
# 导入必要的包
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建数据
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([3, 5, 7, 9, 11])
# 创建线性回归对象
lr = LinearRegression()
# 训练模型
lr.fit(x, y)
# 预测
x_test = np.array([6]).reshape(-1, 1)
print(lr.predict(x_test))
输出结果为:
[13.]
逻辑回归
基本概念
逻辑回归是一种广泛应用于分类问题的模型。逻辑回归模型使用 sigmoid 函数将连续变量转换为 0 或 1,从而将分类问题转化为回归问题。逻辑回归模型的概率形式可以表示为:
p
(
y
=
1
∣
x
)
=
1
1
+
e
−
(
w
0
+
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
)
p(y=1 \mid x) = \frac{1}{1 + e^{-(w_0 + w_1 x_1 + w_2 x_2 + ... + w_n x_n)}}
p(y=1∣x)=1+e−(w0+w1x1+w2x2+...+wnxn)1
其中,
p
(
y
=
1
∣
x
)
p(y=1 \mid x)
p(y=1∣x)表示在给定特征
x
x
x下
y
=
1
y=1
y=1的概率,
w
0
,
w
1
,
w
2
,
.
.
.
,
w
n
w_0,w_1,w_2,...,w_n
w0,w1,w2,...,wn是回归系数,
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn是特征。 我们的目标是找到一组最好的模型参数
w
0
,
w
1
,
w
2
,
.
.
.
,
w
n
w_0,w_1,w_2,...,w_n
w0,w1,w2,...,wn。
我们可以将表达式改写为以下形式:
l
o
g
i
t
(
p
(
y
=
1
∣
x
)
)
=
w
0
+
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
logit(p(y=1 \mid x)) = w_0 + w_1 x_1 + w_2 x_2 + ... + w_n x_n
logit(p(y=1∣x))=w0+w1x1+w2x2+...+wnxn
其中,
l
o
g
i
t
logit
logit 函数表示如下:
l
o
g
i
t
(
x
)
=
l
o
g
(
x
1
−
x
)
logit(x) = log(\frac{x}{1-x})
logit(x)=log(1−xx)
Python实现
我们将使用scikit-learn库中的逻辑回归模型来实现我们的逻辑回归模型。
# 导入必要的包
from sklearn.linear_model import LogisticRegression
import numpy as np
# 创建数据(使用二元变量作为因变量)
x = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1])
# 创建逻辑回归对象
lr = LogisticRegression()
# 训练模型
lr.fit(x, y)
# 预测
x_test = np.array([6]).reshape(-1, 1)
print(lr.predict(x_test))
输出结果为:
[1]
共同点和不同点
共同点:
- 线性回归和逻辑回归都是监督学习中常用的模型;
- 线性回归和逻辑回归都是基于特征与目标之间的关系进行建模的;
- 线性回归和逻辑回归都是基于梯度下降等算法进行优化的;
- 线性回归和逻辑回归都依赖于一定的假设(线性假设和sigmoid函数假设)。
不同点:
- 线性回归的目标是预测连续值,而逻辑回归的目标是预测离散类别;
- 线性回归使用的是线性假设,逻辑回归使用的是sigmoid函数假设;
- 线性回归使用的是最小二乘法或梯度下降等方法进行模型优化,逻辑回归使用的是极大似然估计或梯度下降等方法进行模型优化。
总结
在本教程中,我们介绍了线性回归和逻辑回归的基本概念,并用Python代码来实现简单的线性回归和逻辑回归模型。在实际使用中,我们可以使用更复杂的模型来解决实际问题,以提高模型的预测精度。