《机器学习by周志华》学习笔记-线性模型-02

ops/2024/10/10 13:59:24/

1、对数几率回归

1.1、背景

上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。

当联系函数g(\cdot )连续且充分光滑,考虑单调可微函数g(\cdot ),令:

y=g^{-1}(w^{T}+b)

1.2、概念

找一个单调可谓函数g(\cdot ),将分类任务的真实标记y_{i}与线性回归模型的预测值f(xi)联系起来,也叫做「Heaviside函数」。

在二分类任务中,输出的真实标记y_{i}\in \left \{ 0,1 \right \},而线性回归模型产生的预测值f(x)=w^{T}+b是实数值。于是我们将f(x)转化为0、1值。最理想的情况就是「单位阶跃函数(unit-step function)」,如下所示:

y=\begin{cases} 0, \text{ f(x)< 0 } \\ 0.5, \text{ f(x)= 0 } \\ 1, \text{ f(x)> 0 } \end{cases}

        若f(x)> 0,就判为正例;

        若f(x)< 0,就判为反例;

        若f(x)= 0,则可任意判别;

        如下图所示(红色部分)

黑色部分函数,则称为「对数几率函数」,简称「对率函数」。

从上图可以看出,「单位阶跃函数(unit-step function)」(2条红线+一个点)不连续,因此不能直接用做g^{-1},我们可以在上图中,用「单位阶跃函数」的「替代函数」(对率函数)来用作g^{-1}。并且需要该函数单调可微。可得出:

g^{-1}=y=\frac{1}{1+e^{-f(x)}}=\frac{1}{1+e^{-(w^{T}+b)}}

Sigmoid函数:

Sigmoid函数即S形函数。「对率函数」是Sigmoid函数最重要的代表。我们将会在后面「神经网络」将看到他在神经网络中的重要作用。

综上所述,「对率函数」将f(x)转化为一个接近0或1的y值。并且值得范围在f(x)=0附近变化斜率高。

上述式子可以变化为:

ln\frac{g^{-1}}{1-g^{-1}}=w^{T}+b

g^{-1}视作样本x为正例的可能性。则1-g^{-1}视作样本x为负例的可能性。两者的比值:

\frac{g^{-1}}{1-g^{-1}}

称为「几率(odds)」

几率(odds):

Odds=P/(1-P)

Odds(几率)的计算公式为Odds=P/(1-P),这里的P是指某个事件发生的概率。

Odds是用来表示一个事件发生与不发生的比例,当P=0.5时,Odds=1,当P=0,则Odds趋向于无穷大,反之,当P=1,则Odds趋向于0。

对几率(odds)取对数,则得到了「对数几率(log odds)」,也叫做logit。如下表示:

ln\frac{g^{-1}}{1-g^{-1}}

上述式子,有文献译为「逻辑回归」。但中文「逻辑」与logisitic和logit的含义较大,此处作者翻译为「对数几率回归」,简称「对率回归」。

因为ln\frac{g^{-1}}{1-g^{-1}}=w^{T}+b中的w^{T}+b=y,故我们可以得出:

该等式左边是:线性回归模型的预测结果

而等式右边是:该模型的真实标记yi

因此,我们得出的公式结果,实际上就是在用线性回归模型的预测结果,去逼近真实标记yi的对数几率。所以其对应的模型称为「对数几率回归」。

需要注意的是,它的名字中虽然有回归,但实际是却是一种分类学习方法。其优点如下:

  • 他是直接对分类可能性进行建模,无需事先假设数据分布,这样就避免分布不准确所带来的问题。
  • 它不仅是预测出「类别」,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用。
  • 此外,对数函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。

1.3、求解

根据1.2的概念,本章主要求解公式中的w和b。如果我们将上述式子中的g^{-1}视为「后验概率」估计p(y=1|x),,则上述式子可以重写为:


http://www.ppmy.cn/ops/13657.html

相关文章

JVM支持的可配置参数查看和分类

JVM参数大致可以分为三类: 标注指令:-开头。 这些是所有的HotSpot都支持的参数。可以用java-help 打印出来。 非标准指令: -X开头。 这些指令通常是跟特定的HotSpot版本对应的。可以用java -X打印出来。 不稳定参数: -XX 开头。 这一类参数是跟特定HotSpot版本对应的&#x…

Django项目无法安装python-ldap依赖解决方案

最近工作中安排了一个Python web项目&#xff0c;使用Pycharm从git拉取代码后&#xff0c;配置号Python的解释器和pip后&#xff0c;Pycharm自动下载安装项目所需的依赖&#xff0c;但是有一个依赖django-auth-ldap4.1.0安装始终失败&#xff0c;最初的异常信息提示是&#xff…

闲话 ASP.NET Core 数据校验(一):内置数据校验

前言 所谓输入的是垃圾&#xff0c;输出也必然是垃圾&#xff0c;有多少安全问题隐藏在请求的数据中&#xff0c;所以永远不能相信来自用户端的输入。 对请求数据的合法性进行校验&#xff0c;不仅有助于提升用户界面的友好性&#xff0c;而且有助于提高后台程序的安全性和稳…

01-服务与服务间的通信

这里是极简版&#xff0c;仅用作记录 概述 前端和后端可以使用axios等进行http请求 服务和服务之间也是可以进行http请求的spring封装的RestTemplate可以进行请求 用法 使用bean注解进行依赖注入 在需要的地方&#xff0c;自动注入RestTemplate进行服务和服务之间的通信 注…

ctfshow web入门 SQl注入 web191--web200

web191 多了一个正则绕过 上脚本布尔盲注 用ord #author:yu22x import requests import string url"http://70adf0cb-2208-4974-b064-50a4f4103541.challenge.ctf.show/api/index.php" sstring.ascii_lettersstring.digits flag for i in range(1,45):print(i)for j…

- Single-Spa如何加载、注册和管理子应用

Single-spa是一个用于构建微前端架构的JavaScript框架&#xff0c;它可以加载、注册和管理子应用。 加载子应用: 在主应用中引入Single-spa&#xff0c;通过npm或CDN引入single-spa.js或single-spa.min.js。在主应用的JavaScript文件中&#xff0c;使用import { registerAppl…

Qt 窗口的坐标体系

Qt 窗口的坐标体系 Qt 中使用的坐标系也是平面直角坐标系&#xff0c;但是呢又和我们平时在数学中使用的坐标系是不同的&#xff0c;我们在数学中使用的坐标系是 x 向右增长&#xff0c; y 向上增长。 但是在 Qt 中使用的是 x 轴不变&#xff0c;y 轴是向下增长的。 所以Qt 中…

1.C++入门(下)

目录 1.引用和指针 2.内联函数 2.1 概念&#xff1a; 2.2 特性&#xff1a; 2.3 与宏对比 3.auto关键字 3.1 简介&#xff1a; ​3.2 使用&#xff1a; 3.3 局限 4.基于范围的for循环 1.引用和指针 因为这个面试中常考&#xff0c;就接着上一篇&#xff0c;把这个放…