《机器学习》读书笔记2--线性模型

2023-11-18

目录

线性模型基本形式

线性回归

对数几率回归

线性判别分析

多分类学习

类别不平衡问题


ps.写在前面,本文是在参加datawhale组队学习,学习周志华老师的《机器学习》过程的学习笔记。文中出现的图片均引自《机器学习》,《机器学习》是初学者入门机器学习领域的很好的教材。推荐给想要入门学习机器学习领域的同路者。

线性模型基本形式

        线性模型试图学的一个通过特征属性的线性组合来进行预测的函数。可以理解为,有一组特征属性D,\large x = (x_{1};x_{2};...;x_{d}),其中 \large x_{i} 是 \large x 在第\large i个属性上的取值。线性模型要通过特征属性D来确定如下这样的线性组合,其中主要目标则是确定\large \omega和b。\large \omega和b学得后,整个模型就得以确定。

举个简单的例子,在判断是否为好的西瓜这一问题上,我们想通过线性模型来预测,则有:

 其中的[0.2,0.5,0.3]就是\large \omega,[色泽,根蒂,敲声]是属性集合D。

线性回归

        线性回归是试图学得一个线性模型(如上面的线性组合),来尽可能的准确地预测新样本的输出值。对于输入值要分为连续值和离散值两类,对于连续值后面有相应的处理方法如:归一化等,对于离散值,则我们要进行如下处理:

  • 属性值间存在“序”关系,可以将其连续化转变为连续值。如:二值属性,身高的“高”,“矮”,可以转化为[1,0],三值属性,高度取值“高”,“中”,“低”可以转化为[1.0,0.5,0.0]。
  • 属性值间不存在“序”关系,则不可以转变为连续值,不然不恰当的引入序关系。假定有k个属性值,则转化为k维One-hot 向量,如性别问题:男女可转换为{(1,0),(0,1)},瓜类的属性“西瓜”,“南瓜”,“黄瓜”可以转化为{(1,0,0),(0,1,0),(0,0,1)}

        线性回归的任务就是令自己的预测值\large f(x)尽可能的逼近真实值\large y。如何衡量预测值和真实值之间的差距呢?则需要依靠性能度量。均方误差是回归任务中最常用的性能度量,因此我们可以令均方误差最小化使得预测值逼近真实值。

求解这个最小化的过程叫做线性模型的最小二乘参数估计,可以通过分别对\large \omega和b求导,令导数为0来计算。

 上述式子可以求出和b,但是在只有一种属性的前提下。当考虑更一般的情况,即输入的属性为集合D时,则变为多元线性回归。也同样可以通过最小二乘法进行求解。

对于多元问题,常常使用矩阵的形式来表示数据,把属性集合D表示为一个矩阵\large X,其中每一行表示一个样本,最后一列恒为1,则表示如下:

上式中求导并令其为0可以求出闭式解,但这里还需要做一些假设讨论。就是上式可以求出解的前提是\large X^{T}X为满秩矩阵或是正定矩阵,只有这样才能求逆。如果不是的话,则需要引入正则化项(后续再详述)。

对数几率回归

线性模型在很多时候可以简写为 \large y=\omega ^{T}x+b. 但有些时候,输出并不一定是线性的,有可能输出是在指数尺度上变化的,那么可以将输出的对数形式作为我们线性模型预测需要逼近的目标,即\large ln y=\omega ^{T}x +b,这就是对数线性回归。它试图让\large e^{\omega ^{T}x+b}来逼近\large y

而对数线性回归也不过是线性回归下的一种特殊形式,如果要考虑所有y的衍生物,则有广义的线性模型,

 其中g必须是单调可微的函数,并称g为联系函数,将线性回归模型的预测值与真实标记联系起来的作用。 

线性模型进行回归学习,已经有所了解了,那么如果要做的是分类任务又该如何呢? 就是能否将输出的预测值转化为离散值从而进行分类任务呢?例如二分类我们就将其转化为(0,1)。

线性几率回归就是针对此类问题的,通过引入对数几率函数,将预测值转化为0-1之间从而完成分类任务。

对数几率函数是一种“Sigmoid 函数”(Sigmoid函数即形似S的函数。),将z值转化为一个接近0或1的y值,并且在z=0附近变化很陡。

线性判别分析

线性判别分析,简称LDA,是一种经典线性学习方法,主要思想是将样本投影到一条直线上,使同类样本点尽可能的靠近,异类样本点尽可能远离。

目标是让同类样本点的投影点尽可能靠近,异类样本点投影之间尽可能远离,即:让各类的协方差之和尽可能小,异类之间中心的距离尽可能大。基于这样的考虑,LDA定义了两个散度矩阵。

  • 类内散度矩阵 (越小越好,越小代表同类越接近)

  • 类间散度矩阵(越大越好,越大代表异类越远离)

由此,得到LDA最大化的目标,即\large S_{b},S_{\omega }的广义瑞丽商:

从而将分类问题,变成了求解最优化问题,当求解出W后,新样本输入进来,只需要将其投影到直线上,判断距离哪个类别最接近,就可以将样本进行分类。

多分类学习

现实中常常会遇到多分类学习的任务,我们解决问题的基本思想是“拆解法”,将多分类学习任务,拆解成若干个二分类任务求解。

主要的拆分策略有三种:

  • 一对一(One vs One 简称OvO),OvO的原理是:给定一个数据集D,将其N个类别分别两两配对,从而产生N(N-1)/ 2 个二分类任务,新样本输入进来,会同时提交给所有的分类器,得到N(N-1)/ 2 个分类结果,再将其结果进行投票,把预测的最多的结果作为最终结果。
  • 一对多(One vs Rest 简称OvR),OvR的原理是:给定一个数据集D,每次将一个类别的样例作为正例,其他所有类别的样例都作为反例来进行训练,则会产生N个二分类学习器,得出N个分类结果,若只有一个分类器预测为正,则对应的类别作为最终结果,若有多个分类器预测为正,则要考虑各分类器的预测置信度,选择置信度最大的作为分类结果。

  • 多对多(Many vs Many 简称 MvM),MvM的原理:给定一个数据集D,每次将若干个类作为正类,若干个其他类作为反类,但其正、反类的构造必须有特殊的设计,不能随意选取。常用的MvM技术:纠错输出码(ECOC)

海明距离:简单理解就是指同一位置上编码不同的个数。

欧式距离:空间中距离公式

类别不平衡问题

类别不平衡就是指分类任务中不同类别的训练样例数差距非常大的情况。例如一组数据集D中正例样本有998个,反例样本只有2个,这样再有新样本输入,不管是正例还是反例,只要统统返回正例就可以达到很高的准确度,但这明显是不对的。所以对于类别不平衡问题我们常常需要进行额外的处理,常见的方法有:

  • 对于训练样本较多的,采用欠采样,去除一些样本较多的样本,使正反例接近。代表算法EasyEnsemble,
  • 对于训练样本较少的,采用过采样,重复采集样本较少的样本,使正反例接近。代表算法SMOTE,通过插值产生额外样本。
  • 直接基于原始样本数据进行学习,但在用训练好的分类器进行预测时进行再缩放,也是代价敏感学习的基础。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《机器学习》读书笔记2--线性模型 的相关文章

随机推荐

  • 【NLP】大模型综述来了!一文带你理清全球AI巨头的大模型进化史

    夕小瑶科技说 原创 作者 小戏 Python 如果自己是一个大模型的小白 第一眼看到 GPT PaLm LLaMA 这些单词的怪异组合会作何感想 假如再往深里入门 又看到 BERT BART RoBERTa ELMo 这些奇奇怪怪的词一个接
  • 三局两胜制下获得首胜后最后获胜的概率

    之前看NBA的时候 说拿下天王山之战的战队有83 3 差不多这个值 的概率拿下最后的胜利 当时感觉很奇怪 为什么这么接近5 6而不是3 4呢 然后自己算了一下 还真是 先说下为什么不是3 4的原因 3 4很容易算出来 1 2 1 2 可是后
  • 如何利用阿里云服务器快照策略为数据备份

    阿里云服务器快照 是一个很好的备份容灾工具 不了解的可以先了解一下 快照可以做什么 这是一种便捷高效的数据保护服务手段 可以对重要业务数据进行备份 来应对误操作 攻击 病毒等导致的数据丢失风险 比如前段时间的勒索病毒事件 假设你中招后所有数
  • Django下载图片接口

    import logging from django http import HttpResponse FileResponse from io import BytesIO from urllib parse import quote c
  • 还是得从代码角度看yolov5(1)

    train 参考文章 又是经典写到一半发现别人写的更好 基础函数 1 setattr setattr opt k v 将给定对象上的命名属性设置为指定值 等价于opt k v 2 getattr callback getattr logge
  • Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)

    DataFrame DataFrame是一个 表格型 的数据结构 可以看做是 由Series组成的字典 共用同一个索引 DataFrame由按一定顺序排列的多列数据组成 设计初衷是将Series的使用场景从一维拓展到多维 DataFrame
  • 校验金额正则2--onchange触发校验

    用法 鼠标输入失去焦点的时候出发onchange属性调用js校验正则方法 正则校验reg1 test 不正确返回false 正确返回true 定义mm做判断 缺点 return直接退出了 如果需要重复操作不可取 或者不用return htm
  • PHP XAMPP配置PHP环境和Apache80端口被占用解决方案

    LAMP Linux Apache MySQL PHP 或WAMP Windows Apache MySQL PHP 是一门关于PHP架构网站的课程 它可以使用XAMPP软件 Apache MySQL PHP集成开发包 搭建PHP环境进行网
  • 从Docker到Kubernetes——K8s网络核心原理

    文章目录 Dokcer的网络模型 kubernetes网络核心原理 IP per Pod模型 Kubernetes网络插件flannel Dokcer的网络模型 Dokcer默认使用单主机的网络方案 它默认创建一个名为docker0的网桥
  • DateFormat类

    DateFormat类 DateFormat类用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象 DateFormat是一个抽象类 不能直接被实例化 提供了一系列静态方法来获取DateFormat类的实例对象 D
  • 一文读懂「Attention is All You Need」

    前言 2017 年中 有两篇类似同时也是笔者非常欣赏的论文 分别是 FaceBook 的Convolutional Sequence to Sequence Learning和 Google 的Attention is All You Ne
  • Android实战——Zxing实现二维码扫描

    Zxing实现二维码扫描 前言 本篇文章从初学者的角度出发 从一个不知道对二维码扫描怎么下手的工作者 需要一个简单的扫描功能的话 可以阅读该篇文章 作为Google开源框架Zxing 里面的文件很大 这里主要讲的是精简ZXing项目后只保留
  • 数据库字典表设计

    数据库字典表设计 村长大神 发表于2年前 在稍大一些的项目中 我们总是需要管理各种各样的类型类型数据 如商品类型 游戏类型 对于这些类型的管理类似 如果为每 一种类型都建立一张表去维护 而在项目中 正常
  • H.264视频码流解析

    原理 H 264原始码流 又称为 裸流 是由一个一个的NALU组成的 他们的结构如下图所示 其中每个NALU之间通过startcode 起始码 进行分隔 起始码分成两种 0x000001 3Byte 或者0x00000001 4Byte 如
  • 在vs2005中,写c程序,所有的局部变量都要放在函数体的最前面

    没有放在最前面的源码 怎么办呢 修改量太大
  • matlab动态神经网络进行时间序列预测分析

    matlab动态神经网络进行时间序列预测分析 时间序列预测问题分类 有y 无x 即 y t f y t 1 y t 2 y t f y t
  • Pycharm上Modify Run Configuration的使用方法,带参数配置

    前言 我们在搭建yolo系列目标检测模型时 往往需要对代码进行逐步调试 及时发现错误 所以本文在pycharm的基础上 对yolov6中的infer py进行逐步调试 首先我们在conda环境一切准备就绪的情况下 能在终端tenminal中
  • 【UE5 Cesium】11-Cesium for Unreal 切换Dynamic Pawn为其它Pawn

    前言 我们知道在Cesium for Unreal中默认使用的是DynamicPawn来浏览地图场景 DynamicPawn适用全球浏览 可以按自定义曲线进行飞行 但是DynamicPawn是使用的是地理参考坐标系 并不是标准的UE坐标系
  • iOS利用九切片进行切图UI不会变形

    p 1 手写代码 p p p UIImageView svRect UIImage backgroundImage UIImageimageNamed bg png backgroundImage backgroundImageresiza
  • 《机器学习》读书笔记2--线性模型

    目录 线性模型基本形式 线性回归 对数几率回归 线性判别分析 多分类学习 类别不平衡问题 ps 写在前面 本文是在参加datawhale组队学习 学习周志华老师的 机器学习 过程的学习笔记 文中出现的图片均引自 机器学习 机器学习 是初学者