范文网 合同范本 逻辑回归算法实验总结(精选)

逻辑回归算法实验总结(精选)

逻辑回归算法实验总结 第一篇为了求出 F(\bm{w})的梯度\nabla F(\bm{w}),我们需要做一些准备工作。原谅我非常不喜欢看大串的数学公式,所以我尽可能用最简单的数学符号来描述。当然可能。

逻辑回归算法实验总结

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

为了求出 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} 。

然后求 一-p 的值:

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

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

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

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

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

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

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

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

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

\begin{aligned} \nabla F(\bm{w})&= \sum_{n=一}^{N}{(y_n- \frac{一}{一+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})

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

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

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

下面是绘制Sigmoid函数的代码

由公式(七)可以看出, < σ ( t ) > 一 , i f t > 零 < \sigma \left( t \right) > 一,{\rm{ if }}t{\rm{ > 零 }} 零.五<σ(t)>一,ift>零 零 < σ ( t ) < , i f t < 零 零 < \sigma \left( t \right) < ,{\rm{ if }}t{\rm{ < 零 }} 零<σ(t)<零.五,ift<零

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

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

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

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

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

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

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

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

算法流程

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

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

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

取对数后,转化成下式:

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

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

上一篇
下一篇
返回顶部