Logistic 回归是线性回归中一个很重要的部分。

Logistic 函数:

\[\sigma(x) = \frac {L} {1 + \exp(-k(x - x_0))}
\]

其中:

  • \(L\) 表示最大值
  • \(x_0\) 表示对称中心
  • \(k\) 表示倾斜度

一般来说,都将 \(L\) 设为 \(1\),而 \(k\) 和 \(x_0\) 在参数中控制。


认为特征只有一个,那么自然:

\[p(y = 1 | x) = \sigma(\omega_0 + \omega_1 x) = \frac 1 {1 + \exp(\omega_0 + \omega_1 x)}
\]

认为 \(\vec x\) 是特征向量,并且是增广向量,也就是:

\[\vec x = \begin{bmatrix}
x_0 & x_1 & \ldots & x_c & 1
\end{bmatrix}
\]

认为参数向量也是增广的:

\[\omega = \begin{bmatrix}
\omega_0 \\
\omega_1 \\
\vdots \\
\omega_c \\
1
\end{bmatrix}
\]

那么:

\[p(y = 1 | \vec x) = \sigma(\vec x \omega) = \frac 1 { 1 + \exp(\vec x \omega)}
\]

对于多组数据,\(X = \begin{bmatrix} \vec x_0 \\ \vec x_1 \\ \ldots \\ \vec x_m \end{bmatrix}\):

\[p(\vec y = 1 | X) = \sigma(X \omega)
\]

注意最终得到是一个向量,\(\sigma\) 函数作用于向量中的每个单独的元素。


利用交叉熵作为损失函数:

\[R(\omega) = - \frac 1 m \sum_{n = 1}^m \left(y_n \log \hat y_n + \left(1 - y_n \right)\log \left(1 - \hat y _n \right) \right)
\]

其中 \(\hat y\) 表示预测分类,而 \(y\) 表示实际分类。

由于 \(\sigma'(x) = \sigma(x)(1 - \sigma(x))\),自然的可以推出其偏导数:

\[
\begin{aligned}
\frac \delta {\delta \omega} R(\omega)
&= - \frac 1m \sum \left( y_n \frac {\hat y_n (1 - \hat y_n)}{\hat y_n} x_n + (1 - y_n) \frac {- \hat y_n (1 - \hat y_n)}{1 - \hat y_n} x_n \right) \\
&= - \frac 1m \sum \left( y_n - \hat y_n \right) x_n \\
\end{aligned}
\]

写成向量形式也就是:

\[- \frac 1 m (\hat y - y) \cdot x
\]

于是利用梯度下降算法:

\[\omega = \omega - \frac \alpha m X {\Large (}\sigma(X \omega) - y{\Large )}
\]

代码和梯度下降函数十分相似。


Feature Mapping

合理的利用线性回归可以解决很多复杂的问题。

大概率我们需要一个类似于圆的东西才可以拟合。

考虑到在高中我们学过:

\[C: Ax^2 + B y^2 + C x + D y + F =0
\]

可以表示一个圆,那么我们就可以利用重映射:

\[(x, y) \to \begin{bmatrix} 1 & x & y & xy & x^2 & y^2 \end{bmatrix}
\]

的方式将特征向量进行一点点简单的变换,那么自然就变成了对于多个参数的线性回归问题,一种可能的拟合是:

当然,我们也可以更复杂的利用这些参数,例如 \(x^3\),\(\sqrt x\),\(\frac 1 x\) 之类的参数,这取决于我们想要如何去拟合。


正则化参数

和平方损失函数的正则化方式一模一样,见 机器学习笔记(1): 梯度下降算法


Softmax Regression

其实就是多分类的 Logistic 回归:

\[p(y = c | \vec x) = {\rm softmax}(\vec x W) = \frac {\exp(\vec x W_c)}{\sum_{k = 1}^C \exp(\vec W_k)}
\]

其中 \(C\) 表示分类数,而 \(W = \begin{bmatrix} \omega_1 & \omega_2 & \ldots & \omega_C \end{bmatrix}\),其中 \(\omega_i\) 就表示某一个 Logistic 函数的参数。

由于其实就是多个 Logistic 函数,所以其偏导数和参数学习过程非常相似:

\[W = W - \frac \alpha m X \left( \sigma(X W) - Y \right)
\]

值得注意的是,对于每一个 \(\omega_i\) 减去同一个 \(\theta\) 结果不会改变,意味着一般都需要正则化。

机器学习笔记(2): Logistic 回归的更多相关文章

  1. 吴恩达机器学习笔记 —— 7 Logistic回归

    http://www.cnblogs.com/xing901022/p/9332529.html 本章主要讲解了逻辑回归相关的问题,比如什么是分类?逻辑回归如何定义损失函数?逻辑回归如何求最优解?如何 ...

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

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

  3. 机器学习(4)之Logistic回归

    机器学习(4)之Logistic回归 1. 算法推导 与之前学过的梯度下降等不同,Logistic回归是一类分类问题,而前者是回归问题.回归问题中,尝试预测的变量y是连续的变量,而在分类问题中,y是一 ...

  4. 机器学习实战笔记5(logistic回归)

    1:简单概念描写叙述 如果如今有一些数据点,我们用一条直线对这些点进行拟合(改线称为最佳拟合直线),这个拟合过程就称为回归.训练分类器就是为了寻找最佳拟合參数,使用的是最优化算法. 基于sigmoid ...

  5. 机器学习实战 - 读书笔记(05) - Logistic回归

    解释 Logistic回归用于寻找最优化算法. 最优化算法可以解决最XX问题,比如如何在最短时间内从A点到达B点?如何投入最少工作量却获得最大的效益?如何设计发动机使得油耗最少而功率最大? 我们可以看 ...

  6. 机器学习实战读书笔记(五)Logistic回归

    Logistic回归的一般过程 1.收集数据:采用任意方法收集 2.准备数据:由于需要进行距离计算,因此要求数据类型为数值型.另外,结构化数据格式则最佳 3.分析数据:采用任意方法对数据进行分析 4. ...

  7. 机器学习实践之Logistic回归

        关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月17日 19:18:31所撰写内容(http://blog.cs ...

  8. 机器学习之线性回归---logistic回归---softmax回归

    在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分类等问题 ...

  9. 机器学习(1):Logistic回归原理及其实现

    Logistic回归是机器学习中非常经典的一个方法,主要用于解决二分类问题,它是多分类问题softmax的基础,而softmax在深度学习中的网络后端做为常用的分类器,接下来我们将从原理和实现来阐述该 ...

  10. 机器学习实战之Logistic回归

    Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...

随机推荐

  1. 力扣183(MySQL)-从不订购的客户(简单)

    题目: 某网站包含两个表,Customers 表和 Orders 表.编写一个 SQL 查询,找出所有从不订购任何东西的客户. Customers 表: Orders 表:  解题思路: 需要查询出没 ...

  2. 力扣400(java)-第N位数字(中等)

    题目: 给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字. 示例 1: 输入:n = 3输出: ...

  3. 你的 Sleep 服务会梦到服务网格外的 bookinfo 吗

    简介: ASM 产品是基于社区 Istio 定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力.通过托管模式,解耦了 Istio 组件与所管理的 K8s 集群的生命周期管理 ...

  4. 知乎的 Flink 数据集成平台建设实践

    简介: 本文由知乎技术平台负责人孙晓光分享,主要介绍知乎 Flink 数据集成平台建设实践.内容如下: 1. 业务场景 : 2. 历史设计 : 3. 全面转向 Flink 后的设计 : 4. 未来 F ...

  5. 自己动手从0开始实现一个分布式RPC框架

    简介: 如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现.负载均衡.序列化协议.RPC通信协议.Socket通信.异步调用.熔断降级等技术,可以全方位的提升基本素质 ...

  6. DataWorks功能实践速览 — 参数透传

    ​简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率! ​ 往期回顾: DataWorks 功能实践速览01期--数据同步解决方案:为您介绍不同场景下可选的数 ...

  7. Pinpoint对k8s关键业务模块进行全链路监控(17)

    一.全链路监控概述 1.1 什么是全链路监控 在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中 的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开 ...

  8. Java中的读写锁ReentrantReadWriteLock详解,存在一个小缺陷

    写在开头 最近是和java.util.concurrent.locks包下的同步类干上了,素有 并发根基 之称的concurrent包中全是精品,今天我们继续哈,今天学习的主题要由一个大厂常问的Jav ...

  9. Nginx教程+笔记

    Nginx 学习视频: 2020最新 Nginx教程全面讲解(Nginx快速上手) https://www.bilibili.com/video/BV1W54y1z7GM?t=553&p=14 ...

  10. 06. C语言指针

    [指针] C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用 ...