版权声明:本文为博主原创文章,转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/details/77852060
1.1 sigmoid函数
由于二分类结果是1或者0,这与数学的阶跃函数很类似,但是阶跃函数在x=0的位置会发生突变,这个突变在数学上很难处理。所以一般使用sigmoid函数来拟合:
g ( z ) = 1 1 + e − z (1)
具体应用到逻辑回归算法中:
z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X (2)
其中
x i
表示样本属性(对于我们而言,就是标签IP)的值,
ω i
表示这个属性对应的系数(也就是算法需要计算的内容)。注意这里将
x 0
与
ω 0
也代入了上述公式,其中前者恒为1。于是问题就变成了在训练样本中,已知属性x与最终分类结果y(1或者0)时,如何求得这些系数
ω i
,使得损失最小。
1.2 极大似然估计MLE与损失函数
在机器学习理论中,损失函数(loss function)是用来衡量模型的预测值
f ( x )
与真实值
Y
的不一致程度,它是一个非负实值函数,损失函数越小,模型越优(还需考虑过拟合等问题)。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子
ω ∗ = arg min ω 1 m ∑ i = 1 m L ( y i , f ( x i ; ω ) ) + λ Φ ( ω ) (3)
其中m表示样本的数量。对于逻辑回归,其loss function是log损失,这可以通过极大似然估计进行推导得到。
首先,给定一个样本
x
,可以使用一个线性函数对自变量进行线性组合,即上述的(2)式子:
z = ω 0 + ω 1 x 1 + ω 2 x 2 + . . . . . . + ω n x n = ∑ i = 0 n ω i x i = ω T X (4)
根据sigmoid函数,我们可以得出预测函数的表达式为:
h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x (5)
上式表示
y = 1
的预测函数为
h ω ( x )
。在这里,假设因变量
y
服从伯努利分布,取值为
0
和
1
,那么可以得到下列两个式子:
p ( y = 1 | x ) = h ω ( x ) (6)
p ( y = 0 | x ) = 1 − h ω ( x ) (7)
而对于上面的两个表达式,通过观察,我们发现,可以将其合并为以下表达式:
p ( y | x ) = h ω ( x ) y ( 1 − h ω ( x ) ) 1 − y (8)
根据上面的式子,给定一定的样本之后,我们可以构造出似然函数,然后可以使用极大似然估计MLE的思想来求解参数。但是,为了满足最小化风险理论,我们可以将MLE的思想转化为最小化风险化理论,最大化似然函数其实就等价于最小化负的似然函数。对于MLE,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说是什么样的参数才能使我们观测到目前这组数据的概率最大。使用MLE推导LR的loss function的过程如下。
首先,根据上面的假设,写出相应的极大似然函数(假定有
m
个样本):
L ( ω ) = ∏ i = 1 m p ( y i | x i ; ω ) = ∏ i = 1 m h ω ( x i ) y i ( 1 − h ω ( x i ) 1 − y i (9)
上述式子中的
ω
及
x i
均为向量,并未显示其转置。
直接对上面的式子求导会不方便,因此,为了便于计算,我们可以对似然函数取对数,经过化简可以得到下式的推导结果:
log L ( ω ) = ∑ i = 1 m log [ ( h ω ( x i ) y i ( 1 − h ω ( x i ) ) 1 − y i ) ] = ∑ i = 1 m [ y i log h ω ( x i ) + ( 1 − y i ) log ( 1 − h ω ( x i ) ) ] (10)
因此,损失函数可以通过最小化负的似然函数得到,即下式:
J ( ω ) = − 1 m ∑ i = 1 m [ y i log h ω ( x i ) + ( 1 − y i ) log ( 1 − h ω ( x i ) ] (11)
在周志华版的机器学习中,将sigmiod函数代入
h ω ( x i )
,并使用ln代替log,上述公式表示为:
J ( ω ) = − 1 m ∑ i = 1 m [ y i ln h ω ( x i ) + ( 1 − y i ) ln ( 1 − h ω ( x i ) ] = − 1 m ∑ i = 1 m [ y i ln 1 1 + e − ω x i + ( 1 − y i ) ln e − ω x i 1 + e − ω x i ] = − 1 m ∑ i = 1 m [ ln 1 1 + e ω x i + y i ln 1 e − ω x i ] = 1 m ∑ i = 1 m [ − y i w x i + ln ( 1 + e ω x i ) ] (12)
在某些资料上,还有另一种损失函数的表达形式,但本质是一样的,如下【推导见下面1.4】:
J ( ω ) = 1 m ∑ i = 1 m l o g ( 1 + e − y i ω x ) (13)
1.3 梯度下降
这里就以梯度下降为例对逻辑回归进行求解,其迭代公式的推导过程如下:
∂ J ( ω ) ∂ ω j = − 1 m ∑ i m [ y i ( 1 − h ω ( x i ) ) ⋅ ( − x i , j ) + ( 1 − y i ) h ω ( x i ) ⋅ ( x i , j ) ] = − 1 m ∑ i m ( − y i ⋅ x i , j + h ω ( x i ) ⋅ x i , j ) = − 1 m ∑ i m ( h ω ( x i ) − y i ) x i , j (12)
上述中
x i , j
表示第
i
个样本的第
j
个属性的取值。 于是,
ω
的更新方式为:
ω j + 1 = ω j − α ∑ i = 1 m ( h ω ( x i ) − y i ) x x , j (13)
对于随机梯度下降,每次只取一个样本,则
ω
的更新方式为:
ω j + 1 = ω j − α ( h ω ( x ) − y ) x j (13)
其中
x
为这个样本的特征值,
y
为这个样本的真实值,
x j
为这个样本第
j
个属性的值。
这使用周志华版的损失函数更容易得出这个结论。
1.4 另一种形式的损失函数及其梯度
与上面相同,根据sigmoid函数,我们可以得出预测函数的表达式为:
h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x (5)
上式表示
y = 1
的预测函数为
h ω ( x )
。
但与上面不同,我们假设样本的分布为{-1,1},则
p ( y = 1 | x ) = h ω ( x ) (14)
p ( y = − 1 | x ) = 1 − h ω ( x ) (15)
对于sigmoid函数,有以下特性(简单推导一下就可以得到):
h ( − x ) = 1 − h ( x ) (14)
于是(14)(15)式可以表示为:
p ( y | x ) = h ω ( y x ) (16)
同样,我们使用MLE作估计,
L ( ω ) = ∏ i = 1 m p ( y i | x i ; ω ) = ∏ i = 1 m h ω ( y i x i ) = ∏ i = 1 m 1 1 + e − y i w x i (17)
对上式取对数及负值,得到损失为:
− log L ( ω ) = − log ∏ i = 1 m p ( y i | x i ; ω ) = − ∑ i = 1 m log p ( y i | x i ; ω ) = − ∑ i = 1 m log 1 1 + e − y i w x i = ∑ i = 1 m log ( 1 + e − y i w x i ) (18)
即对于每一个样本,损失函数为:
L ( ω ) = log ( 1 + e − y i w x i ) (19)
对上式求梯度,容易得到:
∂ J ( ω ) ∂ ω j = − y i x i 1 + e y i ω x i (20)