Logistic Regression :::: Gradient Descent - Chad Salinas ::: Data Scientist
Use Slidify to create motion charts to share with the world on rPubs Chad Salinas or GitHub.
Slidify, rPubs Chad Salinas, Motion Charts, Hans Rosling
1326
post-template-default,single,single-post,postid-1326,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Logistic Regression :::: Gradient Descent

Simplified Cost Function & Gradient Descent

这个是逻辑回归的代价函数
完整的代价函数是通过 将m个训练样本的代价函数求和获得的
每一个代价函数代表在不同的样本y上的预测误差
这个函数是我们之前的单个训练样本的代价函数
需要提醒一下
在分类问题中,我们的训练集
所有的标签y的取值只包括0和1两种可能
这个是y的数学定义

由于y只能是0或者1
在这段视频中我们将寻找一个更简洁的方法来表示代价函数
值得一提的是,与其写出上述的代价函数(罚函数)
以两种情况的形式,分别是y=1和y=0的情况
不如我给你们展示一种如何将两行的公式
压缩到一个公式
这会有利于于简化罚函数的形式以及
梯度下降的推导
具体而言,我们能像下面这样表述罚函数
我们说,H(x),y相关的罚函数
我会把这个罚函数写成
-y*logh(x)-(1-y)*log(1-h(x))
-y*logh(x)-(1-y)*log(1-h(x))
我将迅速像你展示这个表达式,这个公式
是之前罚函数的等同表达式,或者说更加精简的表达式
用以表述我们关于罚函数的定义。
我们来看这是为什么。

我们知道只有两种可能的情况。
Y必须为零或1。
让我们假设 Y 等于1。

如果 y 等于 1,这就是说罚函数值等于,
如果 y 等于 1,这就是说罚函数值等于,
那么1减去 y 将等于 0,对吧?
因此, 如果 y 等于 1, 则1减去 y 是1减去 1, 因此是0。
所以第二项乘以0就消失了。
所以我们这里只有第一项了,就是-y*logh(x)
因为y=1,所以罚函数就等于 -log h(x)
如果 y = 1, 这个等式正是我们之前罚函数表达式的第一种情况。
另一个例子是 y = 0。
如果是这样的话,那我们的罚函数就告诉我们
如果 y 等于 0, 那么第一项就等于零。
而1减去 y, 如果 y 等于零(1-y)将等于 1,
因为1减去 y 变成1减去 0, 这是等于1。
所以代价函数被简化成了这里的最后一项,对吧
因为这里的第一项乘以0,所以它消失了
所以,这个式子只剩下最后一项,即 -log(1-h(x))
你可以证明这一项确实符合我们给出的这个式子
当 y 等于0的时候

所以这个新的代价函数的定义是更为简洁的形式
包括了 y=1 和 y=0 这两种情况
并且用了一种只有一行,更加方便的形式
因此,我们可以将我们逻辑回归的代价函数写成这样
因此,我们可以将我们逻辑回归的代价函数写成这样
它是 m 分之一乘以这些代价函数的和
将之前我们得到的代价函数定义替换进式子里 最终我们得到了这个式子
将之前我们得到的代价函数定义替换进式子里⏎最终我们得到了这个式子
我们把负号提取到式子外面
关于为什么我们要选择这个特殊的函数作为代价函数
尽管看起来我们可以选择其他的代价函数
在这节课上我没有时间来深入了解这一点
使用最大似然估计法 从统计数据中可以得出这个代价函数
使用最大似然估计法⏎从统计数据中可以得出这个代价函数
这是统计学中的一种思想
即如何有效地为不同模型找到参数数据
这个代价函数有一个十分优秀的属性——凸性
所以这个代价函数
是几乎每个人在逻辑回归模型中都会使用的
如果你不懂的话 我是指如果你不明白什么是最大似然估计的话
我是指如果你不明白什么是最大似然估计的话,不用担心
但这只是一个更深层次的理由
在选择这个特殊的代价函数的理由 我有时间的话会在这个课上讲解
给出这个代价函数,是为了拟合参数
我们接下来要做的事情是 尝试找到使 J 函数最小化的参数 θ
所以,如果我们要尝试最小化函数 J 它会给我们一个 θ 的数据集
最后,如果给我们一个新的包含特征 x 集合的例子
我们能够得到拟合给出训练集的 θ 并输出像这样的预测函数
在这里提醒一下,我输出的预测函数可以这样理解
即 y 等于1的可能性
在给出输入 x 并且参数为 θ 的情况下
你可以把这个看作我的假设函数 预测 y 等于1的概率
你可以把这个看作我的假设函数 预测 y 等于1的概率
所以接下来要做的就是 如何计算使函数 J 最小化的参数 θ
所以接下来要做的就是 如何计算使函数 J 最小化的参数 θ
即我们能够得到拟合我们训练集的参数
我们最小化代价函数的方法是梯度下降法
这是我们的代价函数 如果我们想要把它最小化为 θ 的函数
梯度下降法是我们常用的方法
我们反复更新参数 θ
令 θ 等于 θ 减去 学习速率 α 乘这一项的导数
如果你懂微积分,你可以比较轻松地计算这一项的导数
并且如果你可以化简它你会得到和我一样的答案
但即使你不会微积分也不必担心

如果你真的计算了
那你会得到写在这里的这个方程
这是从 i 从1到m项 预测误差和 xi 的第j项乘积之和
所以,如果你将这个偏导数项插回这里
之后我们可以把我们的梯度下降法写成以下这样

Chad Salinas working on Plotly

Chad Salinas working on analytics project.

Chad Salinas late nighter
我做的就是 把前一页幻灯片的导数项插在这里
所以.我们需要弄清楚
所以,如果你有n个特征 你会有一个向量参数 θ
这个向量参数 θ 包括 θ1,θ2…θn
在你更新时,需要同步更新全部 θ 值
在你更新时,需要同步更新全部 θ 值
现在,如果你采取这个更新规则
并将其与我们做的线性回归进行比较
你有可能惊奇地发现
这个方程就是我们我们在线性回归时用的
事实上,如果你看了之前的视频
如果你看了线性回归的梯度下降更新规则
会发现它和我在蓝框里写的式子一摸一样
所以,线性回归和逻辑回归 是不同的算法吗?
当然不同,观察逻辑回归的式子
预测函数 hθ 的定义改变了
关于线性回归 我们有 hθ 等于 θ 的转置乘 X
在逻辑回归中,hθ 的定义改变了
现在 hθ 等于 1加上e的-θ 转置乘X次幂分之一
所以,即使这个更新规则表面上看起来一样
但是因为 hθ 的定义改变了
所以这个和线性回归的梯度下降法确实不同
在前面的视频中 我们曾经讲过关于线性规划的梯度下降法
我们曾讲过怎样观测梯度下降
以便确定它是收敛的
对于逻辑回归,我通常使用相同的函数
来观测梯度下降以便确定它正确得收敛
当然我们希望
你可以想出如何将这项技术 应用到逻辑回归中

当使用梯度下降法实现逻辑回归时
我们有所有这些不同的参数值
从 θ1 到 θn 这些 我们需要使用这个表达式进行更新的参数值
我们可以采用一个for循环
for循环 i 从0到 n,或者 i 从1到 n+1
因此依次更新这些参数值中的每一个
当然比采用for循环更理想的方法是
我们可以采用向量化实现方法
所以一次向量化实现方法 可以更新全部的n+1个参数
所以一次向量化实现方法 可以更新全部的n+1个参数
检查你自己的理解程度 你可以查看你是否能够指出
如何用这个算法做向量化实现

所以,你现在知道 如何实现逻辑回归的梯度下降法
最后,这还有一个我们之前讨论过的概念
在线性回归中的特征值缩放
我们看到在线性回归中 特征值缩放是如何帮助梯度下降法更快收敛
要使其最小化 我们需要用一个算法
特征值缩放同样适用于 逻辑回归中的梯度下降法
逻辑回归的实际学习算法
当我们有特征值范围差异巨大时
应用特征值缩放同样可以使 逻辑回归的梯度下降法更快收敛

就是如此,你现在知道了如何实现逻辑回归
这是一个十分强大
并且可能是世界上应用最广泛的分类算法
而你现在知道如何让它为你自己工作

Let the dataset change your mindset

– Hans Rosling
No Comments

Sorry, the comment form is closed at this time.