本笔记来源于深享网课程《深度学习理论与实战TensorFlow》
Logistic回归模型是一种广义的回归模型,其与多元线性回归有很多相似之处,模型的基本形式相同,虽然也被称为回归模型,但是需要注意的是,Logistic更多应用在分类问题中,但是又以二分类最为常见。
Logistic模型在生活中有非常广泛的应用,比如“学习五个小时,考试能通过还是 不能通过?”,“今天要踢足球比赛,赢还是输?”,"这个包看上去很好看,价格超过1000还是没超过?“这些都是Logistic回归可以解决的分类问题。
回归和分类
回归模型:回归问题得到的结果都是连续的,我们可以拟合出任意的函数结果,这个结果是一个连续的值。比如通过学习时间预测成绩,通过房屋信息预测房价等。
分类问题:分类问题将数据分成几类,得到的结果是离散的。分类问题希望把数据集分成某几类。比如根据邮件信息将邮件分成垃圾邮件和有效邮件两种。
Logistic回归模型
Logistic模型的基本形式如下:
y
i
^
=
σ
(
ω
x
+
b
)
\widehat{y_{i}}=\sigma \left ( \omega x+b \right )
yi
=σ(ωx+b)
Logistic回归模型的形式和线性回归一样,都是
y
=
w
x
+
b
y=wx+b
y=wx+b,其中x是一个多维特征,唯一不同的是Logistic回归会对y作用一个Logistic函数,将其变成一种概率的结果。Logistic是Logistic回归的核心,也被称为sigmoid函数。
sigmoid函数
sigmoid函数的公式如下:
f
(
x
)
=
1
1
+
e
−
x
f\left ( x \right )=\frac{1}{1+e^{-x}}
f(x)=1+e−x1
sigmoid函数的范围是在0到1之间,所以任何一个值经过sigmoid函数的作用,都会变成0~1之间的一个值,这个值可以形象理解为一个概率,比如对于二分类问题,这个值越小就表示越可能属于第一类,值越大就表示属于第二类。
这里需要注意的是,sigmoid函数的前提是所用的数据具有比较好的线性区分性。
损失函数
在前一节的回归问题中,我们有一个loss去衡量误差,对于分类问题,我们用损失函数来对此进行衡量。
Logistic回归使用sigmoid函数将结果变到0—1之间,对于任意一个输入数据,经过sigmoid函数之后结果记为
y
^
\widehat{y}
y
,表示这个数据输入第二类的概率,那么其属于第一类的概率就是
1
−
y
^
1-\widehat{y}
1−y
,如果这个数属于第二类,则我们希望
y
^
\widehat{y}
y
越大越好,也就是越靠近1越好,如果这个数属于第一类,则我们希望他越小越好。随意我们可以这样设计loss函数:
l
o
s
s
=
−
(
(
y
∗
l
o
g
(
y
^
)
)
+
(
1
−
y
)
∗
l
o
g
(
1
−
y
^
)
)
loss=-(\left ( y*log\left ( \widehat{y} \right ) \right )+\left ( 1-y \right )*log\left ( 1-\widehat{y} \right ))
loss=−((y∗log(y
))+(1−y)∗log(1−y
))
其中y表示真实的label,只能取{0,1}两个数,因为
y
^
\widehat{y}
y
表示经过Logistic回归预测之后的结果,是一个0—1之间的小数,如果y是0,表示这个数据属于第一类,我们希望
y
^
\widehat{y}
y
越小越好,同时上面的loss函数变为:
l
o
s
s
=
−
(
l
o
g
(
1
−
y
^
)
)
loss=-\left ( log\left ( 1-\widehat{y} \right ) \right )
loss=−(log(1−y
))
在训练模型的时候我们希望最小化loss函数,根据log函数的单调性,也就是最小化
y
^
\widehat{y}
y
,与我们的要求一致。
而如果y是1,表示该数据属于第二类,我们希望
y
^
\widehat{y}
y
越大越好,同时上面的loss函数变为:
l
o
s
s
=
−
(
l
o
g
(
y
^
)
)
loss=-\left ( log\left ( \widehat{y} \right ) \right )
loss=−(log(y
))
我们希望最小化loss函数也就是最小化
y
^
\widehat{y}
y
,这与我们的要求一致。