logistic回归是一种分类方法,用于两分类的问题,其基本思想为:

  1. 寻找合适的假设函数,即分类函数,用来预测输入数据的结果;
  2. 构造损失函数,用来表示预测的输出结果与训练数据中实际类别之间的偏差;
  3. 最小化损失函数,从而获得最优的模型参数。

首先来看一下sigmoid函数:

\(g(x)=\frac{1}{1-e^{x}}\)

它的函数图像为:

logistic回归中的假设函数(分类函数):

\(h_{\theta }(x)=g(\theta ^{T}x)=\frac{1}{1+e^{-\theta ^{T}x}}\)

解释:

\(\theta \) —— 我们在后面要求取的参数;

\(T\) —— 向量的转置,默认的向量都是列向量;

\(\theta ^{T}x\) —— 列向量\(\theta\)先转置,然后与\(x\)进行点乘,比如:

\(\begin{bmatrix}1\\ -1\\ 3\end{bmatrix}^{T}\begin{bmatrix}1\\ 1\\ -1\end{bmatrix} = \begin{bmatrix}1 & -1 & 3\end{bmatrix}\begin{bmatrix}1\\ 1\\ -1\end{bmatrix}=1\times 1+(-1)\times1+3\times(-1) = -3\)

logistic分类有线性边界和非线性边界两种:

线性边界形式为:\(\theta_{0}+\theta_{1}x_{1}+\cdots+\theta_{n}x_{n}=\sum_{i=0}^{n}\theta_{i}x_{i}=\theta^{T}x\)

非线性边界的形式为:\(\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{1}^{2}+\theta_{4}x_{2}^{2}\)

在概率上计算输入\(x\)结果为1或者0的概率分别为:

\(P(y=1|x;\theta)=h_{\theta}(x)\)

\(P(y=0|x;\theta)=1-h_{\theta}(x)\)

损失函数被定义为:\(J(\theta)=\frac{1}{m}\sum_{m}^{i=1}cost(h_{\theta}(x^{i}), y^{i})\)

其中:

这里\(m\)是所有训练样本的数目;

\(cost(h_{\theta}(x), y)=\left\{\begin{matrix}\ \ \ \ \ -log(h_{\theta}(x)) \ \ \ if\ y=1\\ -log(1-h_{\theta}(x)) \ \ \ if \ y=0\end{matrix}\right.\)

\(cost\)的另一种形式是:\(cost(h_{\theta}(x), y)=-y\times log(h_{\theta}(x))-(1-y)\times log(1-h_{\theta}(x))\)

将\(cost\)代入到\(J(\theta)\)中可以得到损失函数如下:

\(J(\theta)=-\frac{1}{m}[\sum_{m}^{i=1}y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]\)

梯度法求\(J(\theta)\)的最小值

\(\theta\)的更新过程如下:

\(\theta_{j}:=\theta_{j}-\alpha\frac{\partial }{\partial\theta_{j}}J(\theta),\ \ \ (j=0\cdots n)\)

其中:\(\alpha\)是学习步长。

\(\begin{align*} \frac{\partial }{\partial\theta_{j}}J(\theta) &= -\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)}\frac{1}{h_{\theta}(x^{(i)})} \frac{\partial }{\partial\theta_{j}}h_{\theta}(x^{(i)})-(1-y^{(i)})\frac{1}{1-h_{\theta}(x^{(i)})}\frac{\partial }{\partial\theta_{j}}h_{\theta}(x^{(i)})\right )  \\  &=-\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)}\frac{1}{g\left ( \theta^{T}x^{(i)} \right )}-\left ( 1-y^{(i)} \right )\frac{1}{1-g\left ( \theta^{T}x^{(i)} \right )} \right )\frac{\partial }{\partial\theta_{j}}g\left ( \theta^{T}x^{(i)} \right ) \\   &= -\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)}\frac{1}{g\left ( \theta^{T}x^{(i)} \right )}-\left ( 1-y^{(i)} \right )\frac{1}{1-g\left ( \theta^{T}x^{(i)} \right )} \right ) g\left ( \theta^{T}x^{(i)} \right ) \left ( 1-g\left ( \theta^{T}x^{(i)} \right ) \right ) \frac{\partial }{\partial\theta_{j}}\theta^{T}x^{(i)} \end{align*}\)

\(\begin{align*} \frac{\partial }{\partial\theta_{j}}J(\theta) &= -\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)}\left ( 1-g\left ( \theta^{T}x^{(i)} \right ) \right )-\left ( 1-y^{(i)} \right )g\left ( \theta^{T}x^{(i)}\right) \right )x_{j}^{\left (i  \right )} \\ &= -\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)} -g\left ( \theta^{T}x^{(i)}\right) \right )x_{j}^{\left (i  \right )} \\ &=-\frac{1}{m}\sum_{m}^{i=1}\left ( y^{(i)} -h_{\theta}\left ( x^{(i)}\right) \right )x_{j}^{\left (i  \right )} \\&=\frac{1}{m}\sum_{m}^{i=1}\left ( h_{\theta}\left ( x^{(i)}\right)-y^{(i)} \right )x_{j}^{\left (i  \right )} \end{align*}\)

把偏导代入更新过程那么可以得到:

\(\theta_{j}:=\theta_{j}-\alpha\frac{1}{m}\sum_{m}^{i=1}\left ( h_{\theta}\left ( x^{(i)}\right)-y^{(i)} \right )x_{j}^{\left (i  \right )}\)

学习步长\(\alpha\)通常是一个常量,然后省去\(\frac{1}{m}\),可以得到最终的更新过程:

\(\theta_{j}:=\theta_{j}-\alpha\sum_{m}^{i=1}\left ( h_{\theta}\left ( x^{(i)}\right)-y^{(i)} \right )x_{j}^{\left (i  \right )}, \ \ \ \ \left ( j=0\cdots n \right )\)

向量化梯度

训练样本用矩阵来描述就是:

\(X= \begin{bmatrix} x^{(1)}\\ x^{(2)}\\ \cdots \\ x^{(m)}\end{bmatrix}=\begin{bmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \cdots & x_{n}^{(1)}\\ x_{0}^{(2)} & x_{1}^{(2)} & \cdots & x_{n}^{(2)}\\ \cdots & \cdots & \cdots & \cdots \\  x_{0}^{(m)} & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{bmatrix}, \ \ Y=\begin{bmatrix} y^{\left ( 1 \right )}\\  y^{\left ( 2 \right )}\\  \cdots \\ y^{\left ( m \right )}\end{bmatrix}\)

参数\(\theta\)的矩阵形式为:

\(\Theta=\begin{bmatrix} \theta^{\left ( 1 \right )}\\  \theta^{\left ( 2 \right )}\\  \cdots \\ \theta^{\left ( m \right )}\end{bmatrix}\)

先计算\(X\cdot \Theta\),并记结果为\(A\):

\(A=X\cdot\Theta\),其实就是矩阵的乘法

再来求取向量版的误差\(E\):

\(E=h_{\Theta}\left ( X \right )-Y=\begin{bmatrix} g\left ( A^{1} \right )-y^{\left (1  \right )}\\ g\left ( A^{1} \right )-y^{\left (1  \right )}\\  \cdots \\  g\left ( A^{1} \right )-y^{\left (1  \right )}\end{bmatrix} = \begin{bmatrix} e^{(1)}\\ e^{(2)}\\ \cdots \\ e^{(m)}\end{bmatrix}\)

当\(j=0\)时的更新过程为:

\(\begin{align*} \theta_{0}&=\theta_{0}-\alpha\sum_{m}^{i=1}\left ( h_{\theta}\left ( x^{(i)}\right)-y^{(i)} \right )x_{0}^{\left (i  \right )}, \ \ \ \ \left ( j=0\cdots n \right ) \\  &= \theta_{0}-\alpha\sum_{m}^{i=1}e^{\left ( i \right )}x_{0}^{\left ( i \right )} \\ &= \theta_{0}-\alpha \begin{bmatrix} x_{0}^{\left ( 1 \right )} & x_{0}^{\left ( 2 \right )} & \cdots & x_{m}^{\left ( 0 \right )} \end{bmatrix} \cdot E \end{align*}\)

对于\(\theta_{j}\)同理可以得到:

\(\theta_{j} = \theta_{j}-\alpha \begin{bmatrix} x_{j}^{\left ( 1 \right )} & x_{j}^{\left ( 2 \right )} & \cdots & x_{j}^{\left ( m \right )} \end{bmatrix} \cdot E\)

用矩阵来表达就是:

\(\begin{align*}\begin{bmatrix} \theta_{0}\\ \theta_{1}\\ \cdots \\ \theta_{n}\end{bmatrix} &= \begin{bmatrix} \theta_{0}\\ \theta_{1}\\ \cdots \\ \theta_{n}\end{bmatrix} - \alpha \cdot \begin{bmatrix} x_{0}^{\left ( 1 \right )} & x_{0}^{\left ( 2 \right )} & \cdots & x_{0}^{\left (m \right )}\\  x_{1}^{\left ( 1 \right )} & x_{1}^{\left ( 2 \right )} & \cdots & x_{1}^{\left (m \right )}\\ \cdots & \cdots  &  \cdots &  \cdots\\ x_{n}^{\left ( 1 \right )} & x_{n}^{\left ( 2 \right )} & \cdots & x_{n}^{\left (m \right )}\\ \end{bmatrix} \cdot E \\  &= \theta - \alpha \cdot x^{T} \cdot E \end{align*}\)

以上就三个步骤:

1. 求取模型的输出:\(A=X \cdot \Theta\)

2. sigmoid映射之后求误差:\(E=g\left ( A \right )-Y\)

3. 利用推导的公式更新\(\Theta\),\(\Theta:=\Theta-\alpha \cdot X^{T} \cdot E\),然后继续回到第一步继续。

logistic回归学习的更多相关文章

  1. 机器学习5—logistic回归学习笔记

    机器学习实战之logistic回归 test5.py #-*- coding:utf-8 import sys sys.path.append("logRegres.py") fr ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归

    机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...

  3. 《机器学习实战》学习笔记第五章 —— Logistic回归

    一.有关笔记: 1..吴恩达机器学习笔记(二) —— Logistic回归 2.吴恩达机器学习笔记(十一) —— Large Scale Machine Learning 二.Python源码(不带正 ...

  4. 机器学习实战3:逻辑logistic回归+在线学习+病马实例

    本文介绍logistic回归,和改进算法随机logistic回归,及一个病马是否可以治愈的案例.例子中涉及了数据清洗工作,缺失值的处理. 一 引言 1 sigmoid函数,这个非线性函数十分重要,f( ...

  5. SAS学习笔记29 logistic回归

    变量筛选 当对多个自变量建立logistic回归模型时,并不是每一个自变量对模型都有贡献.通常我们希望所建立的模型将具有统计学意义的自变量都包含在内,而将没有统计学意义的自变量排除在外,即进行变量筛选 ...

  6. 吴恩达深度学习:2.12向量化logistic回归

    1.不使用任何for循环用梯度下降实现整个训练集的一步迭代. (0)我们已经讨论过向量化如何显著加速代码,在这次视频中我们会设计向量化是如何实现logistic回归,这样酒桶同时处理m个训练集,来实现 ...

  7. 神经网络、logistic回归等分类算法简单实现

    最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...

  8. 如何在R语言中使用Logistic回归模型

    在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...

  9. Logistic回归分类算法原理分析与代码实现

    前言 本文将介绍机器学习分类算法中的Logistic回归分类算法并给出伪代码,Python代码实现. (说明:从本文开始,将接触到最优化算法相关的学习.旨在将这些最优化的算法用于训练出一个非线性的函数 ...

随机推荐

  1. mosquitto 配置文件解说

    #配置文件为mosquitto #参见mosquitto.conf(5)了解更多信息. #显示默认值,取消注释以更改. #使用#字符来表示注释,但只有当它是 #第一个字符就行了. #========= ...

  2. [转]如何在Windows 10中更改文件夹背景颜色

    ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Wi ...

  3. HTTP 请求头 详解

    转载:https://kb.cnblogs.com/page/92320/ HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了 ...

  4. thinkphp AOP(面向切面编程)钩子和行为

    在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的 ...

  5. CentOS 安装Mosquitto及测试

    系统信息,阿里云服务器 安装工具 yum install gcc gcc-c++ yum install openssl-devel yum install c-ares-devel yum inst ...

  6. 未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的文件。

    莫名其妙的,在 VS 中添加数据库连接就报这个错误,经过查找,解决方法是重新安装下两个sql server的组件:SharedManagementObjects.msi 和 SQLSysClrType ...

  7. [MeetCoder] Crossing Bridge

    Crossing Bridge Description N people wish to cross a bridge at night. It’s so dark around there that ...

  8. Android Webview SSL 自签名安全校验解决方案

    服务器证书校验主要针对 WebView 的安全问题. 在 app 中需要通过 WebView 访问 url,因为服务器采用的自签名证书,而不是 ca 认证,使用 WebView 加载 url 的时候会 ...

  9. 802.11ax前瞻4:802.11ax与HiperLan

    序言 在早期wi-fi发展过程中,欧洲还出现过一个同期的无线局域网协议.HiperLan .所谓网络发展始终是"分久必合.合久必分".不管是有线网络当前SDN的引入.还是无线网络下 ...

  10. c语言实现xor加密

    异或运算:^ 定义:它的定义是:两个值相同时,返回false,否则返回true.也就是说,XOR可以用来判断两个值是否不同. 特点:如果对一个值连续做两次 XOR,会返回这个值本身. ^ // 第一次 ...