Logistic Regression算法是一种被广泛使用的分类算法,Logistic Regression算法是典型的线性分类器,由于算法的复杂度低、容易实现等特点,在工业界得到了广泛的应用,如:利用Logistic Regression算法实现广告的点击率预估。
Logistic Regression模型
Logistic Regression 模型是广义线性模型的一种, 属于线性的分类模型。对于如下图所示的线性可分的问题,需要找到一条直线将两条不同的类区分开,这条直线也称为超平面。
上述的超平面可以用如下的线性函数表示:Wx+b=0
其中W 为权重,b为偏置,若在如下线性不可分的情况下,权重W和偏置b则均为向量形式,也即分离超平面为
WX+b=b+W1x1+W2x2+⋯+Wnxn=0
W
X
+
b
=
b
+
W
1
x
1
+
W
2
x
2
+
⋯
+
W
n
x
n
=
0
。
在Logistic Regression算法中,通过对训练样本的学习,最终得到该超平面,将数据分成正负两个类别。那么对于一个具体的样本,怎么判别它属于哪个类别呢?此时,可以使用阈值函数,将样本映射到不同的类别中,常见的阈值函数有Sigmoid函数,其形式如下所示:
sigmoid函数的输出是介于(0,1)之间的,这样我们可以将sigmoid函数看成样本数据的概率密度函数 ,对于输入向量X,其属于正例的概率为:
其中,σ 表示的是Sigmoid函数。那么,对于输入向量X,其属于负例的概率为:
损失函数
为求得分离超平面曲线Wx+b=0,需要求解曲线中的参数权重矩阵W和偏置向量b,求解这些参数,需要先定义损失函数。
在上述的Logistic Regression算法中,一个样本属于类别y的概率为:
要求上述问题中的参数W和b,可以使用极大似然法对其进行估计:
假设训练集里有m个训练样本
{(X(1),y(1)),(X(2),y(2)),⋯,(X(m),y(m))}
{
(
X
(
1
)
,
y
(
1
)
)
,
(
X
(
2
)
,
y
(
2
)
)
,
⋯
,
(
X
(
m
)
,
y
(
m
)
)
}
则其似然函数为:
对于似然函数的极大值的求解,通常使用Log似然函数,在Logistic Regression算法中,通常是将负的Log似然函数作为其损失函数,即the negative log-likelihood (NLL)作为其损失函数,此时,需要计算的是NLL的极小值。损失函数
lW,b
l
W
,
b
为
此时我们要求解的问题是:
为求解损失函数的lwb的最小值,使用梯度下降的方法进行求解。
梯度下降法
首先计算损失函数对W,b的梯度:
其中,
x(i)j
x
j
(
i
)
表示样本
X(i)
X
(
i
)
的第j个分量,则根据梯度下降法,有以下的参数更新公式:
其中
α
α
为学习率。
参考文献
[1] Python机器学习算法(赵志勇著 电子工业出版社)
[2] 统计学习方法(李航著 清华大学出版社)