前言
这一章节将学习一个全新的机器学习算法: 逻辑回归(Logistic Regression)。在学习什么是逻辑回归之前,值得一提的是,在2017年,著名的某人工智能竞赛网站进行了一个统计,统计中逻辑回归这个算法被排为在各个行业中(除了军事和安全领域)使用最多的一种机器学习算法,而且比第二名决策树高了不少。可见逻辑回归这种算法是非常有用的,虽然它本身并不难。那么在这里,希望学习机器学习的小伙伴重视逻辑回归的学习。
那么进入正题,我们首先来看什么是逻辑回归?
逻辑回归(Logistic Regression)
逻辑回归,听名字,好像是一个回归算法,但是它其实解决的是分类问题。可能有些小伙伴就会奇怪了,回归算法怎么解决分类问题?
实际上,逻辑回归的原理是将样本的特征和样本发生的概率联系起来,换句话说,我预测的是样本发生的概率是多少,因为概率是一个数,所以可以叫做一个回归问题。
对于机器学习,它的本质就是求出一个函数
f
(
x
)
f(x)
f(x),如果有一个样本
x
x
x,那么我们将
x
x
x 带入
f
f
f 中,就会得到一个预测值
y
y
y 。但是在逻辑回归中,我们得到的
y
y
y 的值的本质是一个概率值
p
p
p。那么对于逻辑回归来说,我们是要得到一个
f
f
f,来了一个样本
x
x
x,我们将
x
x
x 带入
f
f
f ,然后会得到一个概率值
p
p
p,之后我们根据概率值
p
p
p 来进行分类,如果
p
>
=
0.5
p >= 0.5
p>=0.5,我们就让
y
=
1
y = 1
y=1,如果
p
<
=
0.5
p <= 0.5
p<=0.5,我们就让
y
=
0
y = 0
y=0。
所以,逻辑回归既可以看做是回归算法,也可以看做是分类算法。如果我们不进行最后一步,即将
p
p
p 转化成
y
y
y ,它就是一个回归算法,如果有最后一步,就是一个分类算法。逻辑回归通常作为分类算法使用,只可以解决二分类问题。但是我们也可以使用一些技巧,使得我们的逻辑回归可以解决多分类问题。
下面我们看一下怎么使用逻辑回归来得到一个事件发生的概率?
之前学习的线性回归,来了一个样本,这个样本中有若干特征,然后通过 y = f ( x ) y = f(x) y=f(x) ,我们就可以得到相应的 y y y 的预测值,其实 f ( x ) f(x) f(x) 就是 θ T ⋅ x b θ^T·x_b θT⋅xb ,但是这样我们得到的 y y y 的值是在负无穷到正无穷之间的,但是对于概率来讲,它只能是在 [0, 1] 之间的,所以我们直接使用线性回归的方式来做,可以这么做,但是这样做不够好,是因为概率有值域的限制,而我们使用线性回归得到的结果没有值域的限制,使得我们最终拟合出的这个直线也好,或者用多项式回归拟合出的曲线也好,它的可信程度非常差。
为此,我们的解决方案也很简单,我们就是使用线性回归的方式,只不过将得到的结果再作为一个特征值送给一个
σ
σ
σ 这样的一个函数,通过这个函数的一个转换,使得其值域在 [0, 1] 之间。
下面,我们称上面的
σ
σ
σ 函数为
S
i
g
m
o
i
d
Sigmoid
Sigmoid 函数,那么我们的关键就是
S
i
g
m
o
i
d
Sigmoid
Sigmoid 函数:
对于这个函数,它的表达式是:
下面我们可视化的方法看一下
S
i
g
m
o
i
d
Sigmoid
Sigmoid 函数是什么样子的。
下面我们来分析这根曲线。
这根曲线的最左端趋近于 0,但是达不到 0,最右端趋近于 1,但是也达不到 1,换句话说这根曲线的值域为 ( 0 , 1 ) (0, 1) (0,1),这就是我们想要得到的结果,我们希望最后的结果是在 0-1 之间,这样就可以非常方便的表达概率。
我再将上图的坐标轴画出来。
我们发现,当
t
>
0
t > 0
t>0 时,
p
>
0.5
p > 0.5
p>0.5;当
t
<
0
t < 0
t<0 时,
p
<
0.5
p < 0.5
p<0.5。这里的分界点就是
t
=
0
t = 0
t=0,当
t
=
0
t = 0
t=0,代入
S
i
g
m
o
i
d
Sigmoid
Sigmoid 函数,等于 0.5。
如果我们整体将 θ T ⋅ x b θ^T·x_b θT⋅xb 代入 s i g m o i d sigmoid sigmoid 函数中,就会得到下列式子:
到这里,想必大家已经对
S
i
g
m
o
i
d
Sigmoid
Sigmoid 函数有了一定的了解,现在的问题是对于给定的样本数据集
X
X
X,
y
y
y,我们如何找到参数
θ
θ
θ,使得这样的方式,可以最大程度获得样本数据集
X
X
X 对应的分类输出
y
y
y?也就是我们如何拟合这个样本数据集?请听下回分解。
具体代码 50 什么是逻辑回归.ipynb