逻辑回归算法实验总结(3篇)

山崖发表网工作总结2024-03-03 22:03:0622

逻辑回归算法实验总结 第1篇

为了求出 F(\bm{w})的梯度\nabla F(\bm{w}),我们需要做一些准备工作。原谅我非常不喜欢看大串的数学公式,所以我尽可能用最简单的数学符号来描述。当然可能不够严谨,但是我觉得更容易看懂。

首先,我们需要知道向量是如何求导的。具体的推导过程以及原理请参见 矩阵求导

我们只要记住几个结论就行了:对于一个矩阵 \bm{A} 乘以一个向量的方程 \bm{A}\bm{x} ,对向量 \bm{w} 求导的结果是 \bm{A}^T 。在这里我们把函数 \bm{A}\bm{x} 对 \bm{w} 求梯度简单记作 (\bm{A}\bm{x})' 。因此(\bm{A}\bm{x})' = \bm{A}^T , 推论是 (\bm{x}^T\bm{A})' = \bm{A} ,我们把 \bm{x},\bm{w}^T 代入进去,可以知道 (\bm{w}^T\bm{x})' = \bm{x} 。

然后求 1-p 的值:

1-p=\frac{e^{-\bm{w}^T\bm{x}} }{ 1+e^{-\bm{w}^T\bm{x}} }

p是一个关于变量 \bm{w} 的函数,我们对p求导,通过链式求导法则,慢慢展开可以得:

\begin{aligned} p' = f'(\bm{w})&= (\frac{1}{1+e^{-\bm{w}^T\bm{x}}} )' \\ &= -\frac{1}{ (1+e^{-\bm{w}^T\bm{x}} )^2} · ( 1+e^{-\bm{w}^T\bm{x}})' \\ &= -\frac{1}{ (1+e^{-\bm{w}^T\bm{x}} )^2} · e^{-\bm{w}^T\bm{x}} · (-\bm{w}^T\bm{x})' \\ &= -\frac{1}{ (1+e^{-\bm{w}^T\bm{x}} )^2} · e^{-\bm{w}^T\bm{x}} · (-\bm{x} ) \\ &= \frac{e^{-\bm{w}^T\bm{x}} }{ (1+e^{-\bm{w}^T\bm{x}} )^2} · \bm{x} \\ &= \frac{1}{ 1+e^{-\bm{w}^T\bm{x}} } · \frac{e^{-\bm{w}^T\bm{x}} }{ 1+e^{-\bm{w}^T\bm{x}} } · \bm{x} \\ &= p(1-p)\bm{x} \end{aligned}

上面都是我们做的准备工作,总之我们得记住: p' = p(1-p)\bm{x} , 并且可以知道 (1-p)' = -p(1-p)\bm{x} 。

下面我们正式开始对 F(\bm{w}) 求导,求导的时候请始终记住,我们的变量只有 \bm{w} ,其他的什么 y_n,\bm{x}_n 都是已知的,可以看做常数。

\begin{aligned} \nabla F(\bm{w})& = \nabla ( \sum_{n=1}^{N}(y_n ln (p) + (1-y_n)ln(1-p)) )\\ &= \sum ( y_n ln'(p) + (1-y_n) ln'(1-p)) \\ &= \sum( (y_n \frac{1}{p}p')+(1-y_n)\frac{1}{1-p}(1-p)') \\ &= \sum(y_n(1-p)\bm{x}_n - (1-y_n)p\bm{x}_n) \\ &= \sum_{n=1}^{N}{(y_n-p)\bm{x}_n} \end{aligned}

终于,我们求出了梯度 \nabla F(\bm{w}) 的表达式了,现在我们再来看看它长什么样子:

\begin{aligned} \nabla F(\bm{w})&= \sum_{n=1}^{N}{(y_n-p)\bm{x}_n} \end{aligned}

它是如此简洁优雅,这就是我们选取sigmoid函数的原因之一。当然我们也能够把p再展开,即:

\begin{aligned} \nabla F(\bm{w})&= \sum_{n=1}^{N}{(y_n- \frac{1}{1+e^{-\bm{w}^T\bm{x}_n}} )\bm{x}_n} \end{aligned}

现在我们已经解出了损失函数 F(\bm{w})在任意 \bm{w} 处的梯度 \nabla F(\bm{w}),可是我们怎么算出来 \bm{w^*} 呢? 回到之前的问题,我们现在要求损失函数取最大值时候的\bm{w^*}的值:

\bm{w^*} = arg\max_{w}F(\bm{w})

逻辑回归算法实验总结 第2篇

提到逻辑回归我们先回顾一下线性回归。 线性回归就是给定一些数据,求得的线性函数尽量的包含所有数据。其表达式为 (1) f ( x ) = w T x + b f({\bf{x}}) = {{\bf{w}}^{\rm{T}}}{\bf{x}} + b \tag{1} f(x)=wTx+b(1) 其中, w {\bf{w}} w和 b b b都是通过学习得到的,最常用的方法就是最小二乘法。 下面举一个一元线性回归的例子。给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } = { ( x i , y i ) } i = 1 m D = \left\{ {\left( {{x_1},{y_1}} \right),\left( {{x_2},{y_2}} \right), \ldots ,\left( {{x_m},{y_m}} \right)} \right\} = \left\{ {\left( {{x_i},{y_i}} \right)} \right\}_{i = 1}^m D={(x1​,y1​),(x2​,y2​),…,(xm​,ym​)}={(xi​,yi​)}i=1m​ 而线性回归视图学得: (2) f ( x i ) = w T x i + b f({x_i}) = {w^{\rm{T}}}{x_i} + b \tag{2} f(xi​)=wTxi​+b(2) 使得 f ( x i ) ≈ y i f({x_i}) \approx {y_i} f(xi​)≈yi​。 显然,衡量使用均方误差来衡量 f ( x i ) f({x_i}) f(xi​)与 y i {y_i} yi​的差距。因此我们任务是将差距最小问题转化为均方误差最小化,即: (3) ( w ∗ , b ∗ ) = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \left( {{w^*},{b^*}} \right) = \mathop {\arg \min }\limits_{\left( {w,b} \right)} \sum\limits_{i = 1}^m {{{(f({x_i}) - {y_i})}^2}} = \mathop {\arg \min }\limits_{\left( {w,b} \right)} \sum\limits_{i = 1}^m {{{({y_i} - w{x_i} - b)}^2}} \tag{3} (w∗,b∗)=(w,b)argmin​i=1∑m​(f(xi​)−yi​)2=(w,b)argmin​i=1∑m​(yi​−wxi​−b)2(3) 其中, w ∗ , b ∗ {w^*},{b^*} w∗,b∗分别表示 w , b w,b w,b的最优解。 在线性回归中,最小二乘法就是试图找到一条直线,使得所有样本到直线上的欧氏距离之和最小。我们只需要将函数 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 {E_{(w,b)}} = \sum\limits_{i = 1}^m {{{({y_i} - w{x_i} - b)}^2}} E(w,b)​=i=1∑m​(yi​−wxi​−b)2 求导并令导数为0即可求解出 w , b w,b w,b的最优解 (4) w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w = {{\sum\limits_{i = 1}^m {{y_i}({x_i} - \bar x)} } \over {\sum\limits_{i = 1}^m {x_i^2 - {1 \over m}{{\left( {\sum\limits_{i = 1}^m {{x_i}} } \right)}^2}} }} \tag{4} w=i=1∑m​xi2​−m1​(i=1∑m​xi​)2i=1∑m​yi​(xi​−xˉ)​(4) (5) b = 1 m ∑ i = 1 m ( y i − w x i ) b = {1 \over m}\sum\limits_{i = 1}^m {({y_i} - w{x_i})} \tag{5} b=m1​i=1∑m​(yi​−wxi​)(5)

逻辑回归就是将样本的特征可样本发生的概率联合起来,概率就是一个数,所以就是解决分类问题,一般解决二分类问题。 对于线性回归中, f ( x ) = w T x + b f(x) = {w^{\rm{T}}}x + b f(x)=wTx+b ,这里 f ( x ) f(x) f(x)的范围为 [ − ∞ , + ∞ ] \left[ { - \infty , + \infty } \right] [−∞,+∞],说明通过线性回归中我们可以求得任意的一个值。对于逻辑回归来说就是概率,这个概率取值需要在区间[0,1]内,所以我们将线性回归进行修改: (6) p = σ ( w T x + b ) p = \sigma \left( {{w^{\rm{T}}}x + b} \right) \tag{6} p=σ(wTx+b)(6)此时,我们希望概率 p p p的取值仅在区间[0,1]内。通常我们使用Sigmoid函数表示 。 对于Sigmoid函数其表达式为 (7) σ ( t ) = 1 1 + e − t \sigma \left( t \right) = {1 \over {1 + {e^{ - t}}}} \tag{7} σ(t)=1+e−t1​(7) Sigmoid函数如下图所示:

下面是绘制Sigmoid函数的代码

由公式(7)可以看出, < σ ( t ) > 1 , i f t > 0 < \sigma \left( t \right) > 1,{\rm{ if }}t{\rm{ > 0 }} 0.5<σ(t)>1,ift>0 0 < σ ( t ) < , i f t < 0 0 < \sigma \left( t \right) < ,{\rm{ if }}t{\rm{ < 0 }} 0<σ(t)<0.5,ift<0

我们将线性回归问题转化为: (8) p = σ ( w T x + b ) = 1 1 + e − w T x + b p = \sigma \left( {{w^{\rm{T}}}x + b} \right) = {1 \over {1 + {e^{ - {w^{\rm{T}}}x + b}}}} \tag{8} p=σ(wTx+b)=1+e−wTx+b1​(8) 则 (9) f = { 1 , p ≥ 0 , p < f=\left\{\begin{array}{ll}{1,} & {p \geq } \\ {0,} & {p<}\end{array}\right. \tag{9} f={1,0,​p≥0.5p<0.5​(9) 那么问题来了,我们在给定样本集我们如何找到最优的参数 w , b w,b w,b? 在逻辑回归问题下比线性回归问题要稍微复杂一些。下面将介绍如何进行求解。

对于逻辑回归解决的是二分类问题,因此我们的损失函数也分成两类。对于错误分类的样本,我们对其惩罚越大,则损失函数的值越大,正确分类的样本对其惩罚越小。故对于损失函数来说,我们希望

因此逻辑回归的损失函数可定义为 (10) cost ⁡ = { − log ⁡ ( p ^ ) ,  if  y = 1 − log ⁡ ( 1 − p ^ ) ,  if  y = 0 \operatorname{cost}=\left\{\begin{array}{cc}{-\log (\hat{p}),} & {\text { if } y=1} \\ {-\log (1-\hat{p}),} & {\text { if } y=0}\end{array}\right. \tag{10} cost={−log(p^​),−log(1−p^​),​ if y=1 if y=0​(10) 其函数图像如下图所示

为了方便计算,我们将这两个损失函数结合起来 (11) c o s t = − y log ⁡ ( p ^ ) − ( 1 − y ) log ⁡ ( 1 − p ^ ) {\rm{cost}} = - y\log (\hat p) - (1 - y)\log (1 - \hat p) \tag{11} cost=−ylog(p^​)−(1−y)log(1−p^​)(11)对于一个样本,我们可以计算损失函数,如公式(11)所示,那么对于样本集所有数据,我们将所有的损失函数加起来得到 (12) J ( w ) = − 1 m ∑ i = 1 m y i log ⁡ ( p ^ i ) + ( 1 − y i ) log ⁡ ( 1 − p ^ i ) J(w) = - {1 \over m}\sum\limits_{i = 1}^m {{y_i}} \log ({\hat p_i}) + (1 - {y_i})\log (1 - {\hat p_i}) \tag{12} J(w)=−m1​i=1∑m​yi​log(p^​i​)+(1−yi​)log(1−p^​i​)(12) 其中, (13) p ^ i = 1 1 + e − w T x + b {\hat p_i} = {1 \over {1 + {e^{ - {w^{\rm{T}}}x + b}}}} \tag{13} p^​i​=1+e−wTx+b1​(13) 为了方便计算,重新定义 (14) p ^ i = 1 1 + e − w T x b {\hat p_i} = {1 \over {1 + {e^{ - {w^{\rm{T}}}{x^b}}}}} \tag{14} p^​i​=1+e−wTxb1​(14) 因此公式(12)可以转化为 (15) J ( w ) = − 1 m ∑ i = 1 m y i log ⁡ ( σ ( w x i b ) ) + ( 1 − y i ) log ⁡ ( 1 − σ ( w x i b ) ) J(w) = - {1 \over m}\sum\limits_{i = 1}^m {{y_i}} \log (\sigma (wx_i^b)) + (1 - {y_i})\log (1 - \sigma (wx_i^b)) \tag{15} J(w)=−m1​i=1∑m​yi​log(σ(wxib​))+(1−yi​)log(1−σ(wxib​))(15)那么,对于逻辑回归问题,我们的任务就是找到最佳的 w , b w,b w,b,使得损失函数 J ( w ) J(w) J(w)最小这里不能像线性回归那样使用最小二乘法,需要使用梯度下降法来进行求解。

首先来看看梯度下降的一个直观的解释。如下图所示,比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

梯度下降法的算法可以有代数法向量法两种表示类型的方法。这里详细描述代数法。

前面提到的是根据线性回归一步步引入到逻辑回归,为了和吴恩达老师的机器学习符号保持一致,我们将更改之前用到的符号。 参见之前的博客

假设函数用 h θ ( x 0 , x 1 , … , x n ) = θ 0 + θ 1 x 1 + … + θ n x n {h_\theta }\left( {{x_0},{x_1}, \ldots ,{x_n}} \right) = {\theta _0} + {\theta _1}{x_1} + \ldots + {\theta _n}{x_n} hθ​(x0​,x1​,…,xn​)=θ0​+θ1​x1​+…+θn​xn​表示,其中 θ i ( i = 0 , 1 , … , n ) {\theta _i}\left( {i = 0,1, \ldots ,n} \right) θi​(i=0,1,…,n)为模型参数, x i ( i = 0 , 1 , … , n ) {x_i}\left( {i = 0,1, \ldots ,n} \right) xi​(i=0,1,…,n) 为样本的特征值。则梯度下降法的算法流程

算法流程

总的来说,在机器学习中,最小二乘法只适用于线性模型(这里一般指线性回归);而梯度下降适用性极强,一般而言,只要是凸函数,都可以通过梯度下降法得到全局最优值(对于非凸函数,能够得到局部最优解)。梯度下降法只要保证目标函数存在一阶连续偏导,就可以使用 详细的描述见博客:

逻辑回归算法实验总结 第3篇

L(β)是所有观测到的y发生概率的乘积,这种情况求最大值比较麻烦,一般我们会先取对数,将乘积转化成加法。

取对数后,转化成下式:

log\mathcal{L}(\beta)= \sum_{i=1}^{n}\left([y_{i}\cdot log(\frac{1}{1+e^{ -{x}_{i}{\beta}}})]+[(1-y_{i}) \cdot log(1-\frac{1}{1+e^{-{x}_{i}{\beta}}})]\right)

接下来想办法求上式的最大值就可以了,求解前,我们要提一下逻辑回归的损失函数。

显示全文

注:本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即后台留言通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意

点击下载文档

文档为doc格式

发表评论

评论列表(7人评论 , 39人围观)

点击下载
本文文档