1.2 logistic 回归

视频:第二周 神经网络基础

整理:飞龙

logistic 回归属于广义线性回归。所谓广义线性回归,就是在线性回归的模型上加一些东西,使其适应不同的任务。

logitic 回归虽然名字里有回归,但是它解决的是二元分类问题。二元分类问题中,标签只有两个值。一个典型的二元分类是输入一张图片,判断是不是猫。

首先来看假设,我们的假设是这样的:

P(y=1|x)=σ(θTx)

P(y=1 | x) = \sigma(\theta^T x)

某个样本 (x,y)(x,y) 是正向分类的概率是 xx 乘权重 θ\theta 再套个 sigmoid 函数,非常简单。这两个东西都是列向量。

sigmoid 函数用 σ(x)\sigma(x) 表示,图像是 S 型的,值域是 (0,1)(0,1),正好符合概率的要求。它的导数用函数值来表达更加方便,dσdx=σ(1−σ)\frac{d\sigma}{dx} = \sigma(1-\sigma)。

注:

我的习惯是,把 ww(权重)和 bb(偏置)打包在一起,称为 θ\theta,因为这样节省很多计算。而且易于扩展,如果你需要偏置项,给 ww 多加一项,给 xx 添加一个 11,如果不需要,保持原样即可。

为了找出最优的 θ\theta,像通常一样,我们需要一个损失函数,然后使其最小。

z=θTxa=σ(z)l=−ylog(a)−(1−y)log(1−a)

z = \theta^T x \\\\ a = \sigma(z) \\\\ l = - y \log(a) - (1-y) \log(1-a)

这个函数为什么能用,需要解释一下。当 yy 是 11 的时候,l=−log(a)l = -\log(a)。如果我们要使 ll 最小,就是使 aa 最大。因为 sigmoid 函数最大值为 11,所以实际上,我们使 aa 接近 11。

当 yy 是 00 的时候,l=−log(1−a)l = -\log(1-a)。同理,我们使 aa 最小,因为 sigmoid 函数最小值为 00,就是使 aa 接近 00。

无论如何,我们都使 aa 尽可能接近 yy。

我们需要一个大的损失函数,衡量模型在所有样本上的表现。我们用 x(i)x^{(i)} 表示第 ii 个样本的特征。

J=−∑i(y(i)log(a(i))+(1−y(i))log(1−a(i)))

J = - \sum_i(y^{(i)} \log(a^{(i)}) + (1-y^{(i)}) \log(1-a^{(i)}))

然后我们需要求 JJ 对 θ\theta 的导数。

dJda(i)=1−y(i)1−a(i)−y(i)a(i)da(i)dz(i)=a(i)(1−a(i))dz(i)dθ=x(i)dJdz(i)=a(i)−y(i)dJdθ=∑i((a(i)−y(i))x(i))

\frac{dJ}{da^{(i)}} = \frac{1-y^{(i)}}{1-a^{(i)}} - \frac{y^{(i)}}{a^{(i)}} \\\\ \frac{da^{(i)}}{dz^{(i)}} = a^{(i)}(1-a^{(i)})\\\\ \frac{dz^{(i)}}{d\theta} = x^{(i)} \\\\ \frac{dJ}{dz^{(i)}} = a^{(i)} - y^{(i)} \\\\ \frac{dJ}{d\theta} = \sum_i((a^{(i)} - y^{(i)}) x^{(i)})

注:

(1)如果你拆成了 ww 和 bb,那么 dJdb\frac{dJ}{db} 就是 ∑idJdz(i)\sum_i \frac{dJ}{dz^{(i)}},dJdw\frac{dJ}{dw} 和 dJdθ\frac{dJ}{d\theta} 一样。

(2)所有导数以及 JJ 都需要除以 ndatan_{data},但为了简洁我省略了,下同。

(3)在机器学习(以及数值计算)中,没有必要区分导数和偏导数,导数可以看出偏导数的一元特例。所以这里我都使用了导数的符号。

我们可以看到最终的导数和线性回归一样,仍然是损失乘以特征再求和。

向量化

我的习惯是,将 x(i)x^{(i)} 按行堆叠变成 XX,也就是行是样本,列是特征,和咱们能够获得的绝大多数数据集一致。

X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⋮− x(i) −⋮⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⋯|xj|⋯⎤⎦⎥⎥⎥⎥⎥⎥

X = \begin{bmatrix} \vdots \\\\ - \ x^{(i)} \ - \\\\ \vdots \end{bmatrix} \\\\= \begin{bmatrix} & | & \\\\ \cdots & x_j & \cdots \\\\ & | & \end{bmatrix}

由于 XX 按行堆叠,我们需要把它放在矩阵乘法的左边。这样出来的 ZZ 也是按行堆叠的。

Z=Xθ=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⋮z(i)⋮⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥

Z = X \theta \\\\ = \begin{bmatrix} \vdots \\\\ z^{(i)} \\\\ \vdots \end{bmatrix}

AA 相当于对 ZZ 的每个元素应用 sigmoid 函数,也是类似的结构:

A=σ(Z)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⋮a(i)⋮⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥

A = \sigma(Z) \\\\ = \begin{bmatrix} \vdots \\\\ a^{(i)} \\\\ \vdots \end{bmatrix}

接下来是损失函数 JJ:

J=−Sum(Y∗log(A)+(1−Y)∗log(1−A))

J = - Sum(Y \ast \log(A) + (1 - Y) \ast \log(1 - A))

其中 ∗\ast 表示逐元素相乘。

接下来是导数:

dJdZ=A−Y

\frac{dJ}{dZ} = A - Y

这个还是比较好求的。

dZdθ=XdJdθ=XT(A−Y)

\frac{dZ}{d\theta} = X \\\\ \frac{dJ}{d\theta} = X^T(A - Y)

这里有一个方法,就是核对矩阵的维数。我们已经知道 dJdθ\frac{dJ}{d\theta} 是两个导数相乘,并且 dJdZ\frac{dJ}{dZ} 是n_data x 1的矩阵,dZdθ\frac{dZ}{d\theta} 是n_data x x_feature的矩阵,dJdθ\frac{dJ}{d\theta} 是n_feature x 1的矩阵。根据矩阵乘法,它只能是 XT(A−Y)X^T(A - Y)。

注:

严格来讲,向量化的导数应该称为梯度。这个笔记中不区分这两个术语。

梯度下降法

在代数中,如果我们需要求出一个凸函数的最值,我们可能会使导数等于 0,然后解出方程。但在机器学习中,我们使用梯度下降法来求凸函数的最值。

梯度下降法是,对于每个自变量 xx,迭代执行以下操作:

x:=x−αdydx

x := x - \alpha \frac{dy}{dx}

其中 α\alpha 是学习率,一般选取 0 ~ 1 之间的值。

下面直观地解释一下。这是一个一元函数,它的形状是一个碗,或者山谷。

我们可以随便选一个点作为初始值。你可以选0,也可以选1或者随机值。这个无所谓,因为函数是凸的,沿任意路径下降都会达到全局最优值。

如果你的初始值在右侧,那么导数为正,减去它的一部分相当于向左移动了一小步。如果你的初始值在左侧,导数为负,减去它的一部分相当于向右移动了一小步。总之,这样会使 x<script type="math/tex" id="MathJax-Element-69">x</script> 向着全局最优的方向移动。

多元的凸函数是这样。如果你的每个自变量都减去它的导数(梯度)的一部分,那么所有自变量就相当于向着最陡的方向移动了一小步。如果你在一个山谷中,沿着最陡的方向向下走,就会到达谷底。

代码

向量化的公式很容易用 NumPy 代码来表示。

theta = np.random.rand(n_features, 1)for _ in range(max_iter):Z = np.dot(X, theta)A = sigmoid(Z)dJ_dZ = (A - Y) / n_datadJ_dtheta = np.dot(X.T, dJ_dZ)theta -= alpha * dJ_dtheta

DeepLearningAI 学习笔记 1.2 logistic 回归相关推荐

  1. 吴恩达深度学习笔记2.2 logistic回归

    regression:回归  supervised:有监督的 logistic回归是一种学习算法被用于有监督学习问题,当y全都是0或1时 例子:判断是否有猫 给定一个由特征向量x代表的图像,那个算法将 ...

  2. 医咖会免费STATA教程学习笔记——二分类Logistic回归

    1.使用logistic回归前需要检查 (1)因变量为二分类变量 (2)因变量发生的概率小于15% 2.导入数据集 webuse lbw, clear 3.命令 logistic low age i. ...

  3. DeepLearningAI 学习笔记 1.1 深度学习概论

    1.1 深度学习概论 视频:第一周 深度学习概论 整理:飞龙 什么是神经网络? "深度学习"指的是训练神经网络,有时候规模很大,那么神经网络究竟是什么呢?在这个视频中,我会讲些直观 ...

  4. ESL3.5 学习笔记(主成分回归,偏最小二乘回归步骤详解)

    3.5 运用派生输入方向的方法 这是一篇有关<统计学习基础>,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻 ...

  5. 【学习笔记】二元Logistic回归预测

    目录 1.基本含义和思想 2.论文[3]进行回归预测的思路是什么? 3.求逻辑回归模型的数学过程 3.1 改写函数 3.2 函数变换 3.3 得到离散概率 3.4 最大似然法 3.5 牛顿法 4.逻辑 ...

  6. 学习笔记——sklearn监督学习:回归(简单数学知识罗列)

    文章目录 一.数学优化 损失函数 SoftMax 损失 二.回归分析 1.最小二乘回归 2.岭回归 3.Logistics 回归 4.Lasso 回归 三.实例 1.Linear Regression ...

  7. 医咖会免费STATA教程学习笔记——无序多分类回归

    1.代码 mlogit y x1 x2, rrr baseoutcome(1) 2.窗口 统计--分类结果--多项Logistic回归--选择因变量和自变量--切换到"报告"选项卡 ...

  8. DeepLearningAI 学习笔记 1.3 浅层 logistic 神经网络

    1.3 浅层 logistic 神经网络 视频:第三周 浅层神经网络 整理:飞龙 普通的 logistic 可看做无隐层的神经网络.下面我们做出一个单隐层的神经网络,它本质上是 logistic 套着 ...

  9. 学习笔记——逻辑斯蒂回归与最大熵模型

    逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法.最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy).都属于对数线性模型 ...

最新文章

  1. java实验报告二_Java实验报告(实验二)
  2. ABP 基础设施层——集成 Entity Framework
  3. return error怎么定义_自定义一个注解校验接口参数
  4. ACS AAA Tacacs+
  5. DOS下导入导出MySQL备份
  6. J0ker的CISSP之路:复习-Access Control(3)
  7. 几个预编译指令的用法
  8. 敏捷管理之绩效考核方案
  9. 菜鸟教程 mysql like_MySQL LIKE 子句
  10. 50个最有价值的数据可视化图表
  11. sama5d36 OUT0-OUT3 对应关系 带光模块的系统
  12. oracle修改字段长度sql_Oracle RAC修改参数文件位置
  13. php tp3.2 脚本大量数据操作思路
  14. 服务器imm装系统,通过IMM With Remote Console为服务器安装操作系统
  15. MongoDB数据库可视化工具
  16. 什么是前端总线,后端总线,内部总线、系统总线,外部总线,地址总线,数据总线,控制总线
  17. 简易http服务器的实现(实现)httpserver.c
  18. 计算机专业拜年语,适合拜年发的朋友圈祝福语:过年拜年的说说
  19. python中f‘{}‘用法
  20. 前端一键切换深色模式

热门文章

  1. (70)FPGA模块调用(system Verilog调用system Verilog)
  2. python3 在线工具_Curl转python在线工具
  3. STM32 连续操作flash
  4. 人工智能python基础知识_AI 人工智能基础知识-习题
  5. STC51-1602、12232、12864液晶
  6. STM32-SysTick定时器
  7. pixhawk学习笔记-----mavlink
  8. HTTP常见问题总结
  9. 关于C语言逻辑值的说法错误的是( ),2017年计算机二级c语言题库及答案
  10. 【LeetCode】剑指 Offer 46. 把数字翻译成字符串