【学习笔记、面试准备】机器学习西瓜书要点归纳和课后习题参考答案——第3章

机器学习西瓜书要点归纳

  • 第3章 线性模型
    • 3.1 基本形式
    • 3.2 线性回归
    • 3.3 对数几率回归
    • 3.4 线性判别分析
    • 3.5 多分类学习
    • 3.6 类别不平衡问题
    • 3.7 阅读材料
    • 习题

目录地址

第3章 线性模型

3.1 基本形式

线性模型定义:
在这里插入图片描述
其中x是输入向量
在这里插入图片描述
优点:形式简单,易于建模,可解释性好。

3.2 线性回归

输入预处理:连续值可以直接用,离散值若有序,可以按序赋值变连续(如“高,中,低”变为“1,0.5,0”,否则可以单热点码编码。

回归常用MSE,要偏导数为0,当输入是一维时可以算出来:
在这里插入图片描述
在这里插入图片描述

当多元时,矩阵求导,
在这里插入图片描述

在这里插入图片描述

矩阵微分公式见南瓜书
在这里插入图片描述
原理可见:链接

X T X X^TX XTX满秩,即可逆,可解得:
在这里插入图片描述

当不满秩,有多解,常见是奥卡姆剃刀式引入正则化找简单的,具体根据学习算法偏好决定。

广义线性模型:
在这里插入图片描述
这样子,是拟合 g ( y ) g(y) g(y)

3.3 对数几率回归

用于二分类任务。
在这里插入图片描述
二分类,理想的函数是红线的二分类函数,但是不可导,

所以要找替代函数(surrogate function),例如黑线:
对数几率函数(logistic function):
在这里插入图片描述
此时的形式为:
在这里插入图片描述
也可以为闭式解。

可以理解为, y y y是正例概率, 1 − y 1-y 1y是反例概率,y/(1-y)就是正例比反例更可能的概率。

绿线是给定y的y/(1-y),蓝线是给定y的ln[y/(1-y)],
期望输入一个x,线性模型可以得到一个合适的y。
在这里插入图片描述

求解时,可以用极大似然估计,也就是把每个样本的标签对应的预测求和,让这个和尽可能大。
每个样本都是让下式尽可能接近于1:
在这里插入图片描述
β \beta β是要优化的参数,
则是最小化:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二阶导大于0,这是个凸函数,可以梯度下降法或牛顿法等求和。

3.4 线性判别分析

线性判别分析(Linear Discriminant Analysis, LDA):一种二分类方法。

LDA思想:对训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,不同类样例的投影点尽可能远离;对测试集,投影到该直线,根据投影点的位置确定新样本的类别。

在这里插入图片描述
具体方法:
直线就是 y = w x y=wx y=wx,x是输入w是参数。
要让正例 y 0 y_0 y0和反例 y 1 y_1 y1的平均值尽可能大,让正反例内的方差尽可能小:
在这里插入图片描述
也就是让J尽可能大, μ \mu μ是平均值向量, Σ \Sigma Σ是协方差矩阵。

定义
类内散度矩阵(within-class scatter matrix):
在这里插入图片描述
类间散度矩阵(between-class scatter matrix):
在这里插入图片描述

在这里插入图片描述
J恰好是 S b , S w S_b,S_w Sb,Sw的广义瑞利商(generalized Rayleigh quotient)。

优化方法:
该商只与w方向有关,与w大小无关。
则不妨让分母为1,优化分子:

在这里插入图片描述
拉格朗日乘子法(具体见南瓜书)得:
在这里插入图片描述
注意, λ \lambda λ只是希望约束和值相切,即垂线平行的,取值不重要,
又由于 S b w S_bw Sbw的方向是 μ 0 − μ 1 \mu_0-\mu_1 μ0μ1(因为后面的 ( μ 0 − μ 1 ) T w (\mu_0-\mu_1)^Tw (μ0μ1)Tw是标量),所以只要数乘该方向向量 λ ( μ 0 − μ 1 ) \lambda(\mu_0-\mu_1) λ(μ0μ1)即可了。
可得:
在这里插入图片描述
S w S_w Sw常用奇异值分解表示,为了追求数值稳定性。

可从贝叶斯决策理论角度阐述,可以证明,数据同先验、满足高斯分布且协方差相等,LDA可达最优分类。

推广到多分类任务:
定义:
在这里插入图片描述
Sb变为
在这里插入图片描述
(和之前N=2时的定义相比,只会差一个权重系数 m 1 m 2 / ( m 1 + m 2 ) m_1m_2/(m_1+m_2) m1m2/(m1+m2),不影响优化结果)

优化目标可为:
在这里插入图片描述
tr是各对角线元素之和,最后 W T X W^TX WTX是一个 N − 1 N-1 N1维的向量,N是类别数。


在这里插入图片描述

这次的推导也是看南瓜书,原理看链接

W的解是 S w − 1 S b S_w^{-1}S_b Sw1Sb的前N-1个最大的广义特征值对应的特征向量,是最小化损失的有损压缩。

d维变成N-1维的向量,也可以作为降维的方法,可以把维度改为任意的d’而不必是N-1,但是 d ′ ≤ N − 1 d'\le N-1 dN1因为Sb的秩就是N-1。
原因可参考链接,也可以在n=2时验证,理解了2个类别秩为1可以数学归纳法。

之后还是做投影,看和哪个类的距离最近。

3.5 多分类学习

本节介绍了3种模式,通过二分类器达到多分类的目的。
一对一(One vs. One,OvO)
一对其余(One vs. Rest,OvR)
多对多(Many vs. Many,MvM)

OvO和OvR:
在这里插入图片描述
MvM之一:纠错输出码(Error Correcting Output Codes,ECOC)
在这里插入图片描述
C是类别的编码,f是分类器。

还有DAG形式的MvM等。

3.6 类别不平衡问题

对于二分类,因为y/(1-y)是正例/负例出现的概率。
令m+、m-分别是正负例样本数,那么期望概率是m+/m-的时候,要有以m+/m-为阈值而不是原来的1,即:
在这里插入图片描述
具体做法除了以上的“阈值移动(threshold-moving)”,还有反例“欠采样(undersampling)”(这常常结合集成模型防止丢失主要信息),正例“过采样(oversampling)”(这常常使用插值等方法数据增强缓解过拟合)。

此外,令期望出现正例的概率是cost-/cost+也可以作为代价敏感学习的方法,当cost-小时多预测为负,反之亦然。

3.7 阅读材料

习题

在这里插入图片描述
在这里插入图片描述

当全0向量输入时输出应该是0时。

在这里插入图片描述
在这里插入图片描述
反证法:当b=0,x=1,就是sigmoid函数,显然非凸。
在这里插入图片描述
在书中二阶导>0。
在这里插入图片描述
牛顿迭代法:

import numpy as np
import pandas as pd

Set = pd.read_csv("data.csv")

# 数据集
X = np.array(Set[['密度','含糖率']])
# 标签
Y = np.where(np.array(Set[['好瓜']])=='是',1,0)
N,Dy = Y.shape
X = np.append(X,np.ones(N).reshape(N,1),axis=1)
_,Dx = X.shape
X=X.T
Y=Y.T
Beta = np.random.random(size=(Dx,1))

T = 10

for t in range(T):
    p1=np.exp(Beta.T@X)/(1+np.exp(Beta.T@X))
    f1=(-np.sum(X*(Y-p1),axis=1)).reshape(3,1)
    f2=(X*p1*(1-p1))@X.T
    Beta = Beta - np.linalg.inv(f2)@f1
    print('t:',t)
    print('Beta:',Beta)
    print('p1:',p1)

# 可视化
import matplotlib.pyplot as plt

plt.scatter(X[0], X[1], s=10, marker='o')
plt.xlabel('x0')
plt.ylabel('x1')
plt.title('Title')

for i in range(N):
    plt.text(X[0][i], X[1][i], "{},{:.3f}".format(Y[0][i],p1[0][i]))

x=np.array([0.2,0.9])
a = -Beta[0][0]/Beta[1][0]  # 直线斜率
b = -Beta[2][0]/Beta[1][0]  # 直线截距
y_line = a * x + b  # 直线方程
plt.plot(x, y_line, 'r--')

plt.show()

在这里插入图片描述
线右上是预测1,左下是预测0.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
参考SVM的核函数。

在这里插入图片描述
目标是 m a x ( h ( c 0 , c 1 ) + h ( c 0 , c 2 ) + h ( c 0 , c 3 ) + h ( c 1 , c 2 ) + h ( c 1 , c 3 ) + h ( c 2 , c 3 ) ) max(h(c0,c1)+h(c0,c2)+h(c0,c3)+h(c1,c2)+h(c1,c3)+h(c2,c3)) max(h(c0,c1)+h(c0,c2)+h(c0,c3)+h(c1,c2)+h(c1,c3)+h(c2,c3))

h ( c i , c j ) = s u m ( a b s ( c i − c j ) ) h(ci,cj)=sum(abs(ci-cj)) h(ci,cj)=sum(abs(cicj))

不失一般性,任意固定c0,其他进行搜索,运算次数O(227)=O(134,217,728),可以暴力枚举。

在这里插入图片描述

之所以要满足这个条件,是因为,如果不是,都会带来更加偏好某一个类的效果。
是否满足该条件?
这个要取决于编码的具体方式,不是二分类能决定的。
但是二分类的分类效果也会影响概率,比如数据不均等。
当编码长度冗余,会影响独立性。
在这里插入图片描述
因为期望上影响相互抵消。
在这里插入图片描述
多分类都可以是二分类的直接套用。
能获得理论最优解,那么"训练集是真实样本总体的无偏采样"要满足。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#中的转换

一、什么是转换 将一个类型转换为另外一个类型;可以是两个值类型之间的转换;可以是两个引用类型之间的转换;可以是值类型和引用类型之间的转换(拆箱与装箱);可以用户自定义转换。转换的时候有隐式转换/自动…

lombok快速入门

Lombok是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法&#xff0c;并可以自动化生成日志变量&#xff0c;简化java开发、提高效率。 <…

好用到爆的windows文件检索工具--Everything

如果你的电脑是windows系统&#xff0c;那么这款软件强烈推荐大家安装>Everything&#xff0c;他可以帮助你快速的检索的磁盘里的文件&#xff0c;话不多说&#xff0c;开始安装 1.下载 访问https://www.voidtools.com/zh-cn/会跳转官方下载地址 双击安装包运行 效果如下…

Tensor张量基础与常用方法【Pytorch】

Tensor中文译名为张量&#xff0c;标量是零维张量&#xff0c;向量是一维张量&#xff0c;矩阵是二维张量&#xff0c;矩阵的堆叠是三维张量…… 张量的维数可以无穷大&#xff0c;不过由于现实世界是三维的&#xff0c;因此更高维度的图形我们无法想象&#xff0c;但是这并不…

即时通讯-6-已读回执的方案设计

背景-为什么展示已读未读 部分即时通讯软件会选择展示给用户已读未读&#xff0c; 主要是快速感知对方的阅读状态&#xff0c; 感觉到自己受重视&#xff0c; 方便做下一步操作。 如果要带点高度的讲&#xff0c;满足软件所代表的关键用户的诉求 什么场景下要展示已读回执 t…

462. 最小操作次数使数组元素相等 II——【Leetcode每日一题】

462. 最小操作次数使数组元素相等 II 给你一个长度为 n 的整数数组 nums &#xff0c;返回使所有数组元素相等需要的最小操作数。 在一次操作中&#xff0c;你可以使数组中的一个元素加 1 或者减 1 。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;2 …

微信小程序获取手机号47001 data format error hint的完美解答(restTemplate发送post请求)

发现问题 这几天正在搞微信小程序获取手机号功能开发&#xff0c;发现发送post请求接口时候&#xff0c;接口返回如下错误&#xff1a; {"errcode": 47001,"errmsg": "data format error hint: [******] rid: ******" } post请求的url为&…

动态代理原理

一、案例分析 1、引出问题 回到Spring之初控制事务繁琐的问题。 回到Spring之初控制事务繁琐的问题. 考虑一个应用场景∶需要对系统中的某些业务方法做事务管理&#xff0c;拿简单的save和update操作举例。没有加上事务控制的代码如下。 加上事务代码&#xff0c;如下&#x…

大数据平台开发——使用Java和Python调用Shell脚本

大数据平台开发——使用Java和Python调用Shell脚本 背景 在大数据平台开发中&#xff0c;经常会遇到需要调用Shell脚本的场景&#xff0c;倒不是说只能用Shell&#xff0c;毕竟大数据开发到头来一定是个语言无关的事情&#xff1a; 从Hive源码解读大数据开发为什么可以脱离S…

Java进阶

注解 什么是注解 Java注解&#xff08;Annotation&#xff09;又称Java标注&#xff0c;是JDK5.0引入的一种注释机制。 Java语言中类、方法、变量、参数和包等都可以被标注。Java标注可以通过反射获取标注内容。在编译器生成类文件时&#xff0c;标注可以被嵌入到字节码中。Ja…

【Python实操】一行代码就可以自动画出这种艺术画?(详细教程)

文章目录前言一.准备阶段二、开始使用 Discoart1.引入库2.显示/保存/加载配置总结前言 DiscoArt 是一个很牛逼的开源模块&#xff0c;它能根据你给定的关键词自动绘画。 绘制过程是完全可见的&#xff0c;你可以在 jupyter 页面上看见这个绘制的过程&#xff1a; 一.准备阶段…

零拷贝内存 固定内存

一、总览 虚拟内存是一种计算机内存管理的技术&#xff0c;它让程序认为程序自身有一段完整的连续可用的内存&#xff08;一个地址空间&#xff09;。当程序运行时所占的内存空间大于物理空间容量&#xff0c;操作系统可以将暂时不用的数据放入到磁盘&#xff0c;用的时候再拿出…

Linux--高级IO--select--0326

目录 IO为什么低效&#xff1f; 1.快速理解五种IO模式 2.五种IO模型 3.非阻塞IO fcntl() 4.IO多路转接 select select fd_set类型 struct timeval*类型 5.Select的代码测试 5.1 问题一&#xff1a;一开始&#xff0c;我们只有一个listen套接字 5.2 问题二&#xff1…

《项目管理知识体系指南(PMBOK)》第7版之8大绩效域

项目绩效域被定义为一组对有效交付项目成果至关重要的相关活动。 《项目管理知识体系指南&#xff08;PMBOK&#xff09;》第7版将项目管理划分为干系人、团队、开发方法和生命周期、规划、项目工作、交付、测量、不确定性共8大绩效域。 一、干系人绩效域 解决与干系人相关的…

【对YOLOv8(ultralytics)打印测试结果的调整】(1)使得map值打印显示从0.551变为55.08 (2)打印出FPS

目录1. 最终打印效果2. 做两处更改2.1 修改map显示&#xff0c;在ultralytics-main/ultralytics/yolo/v8/detect/val.py中操作2.2 打印FPS&#xff0c;在ultralytics-main/ultralytics/yolo/engine/validator.py中操作❗❗❗ 兄弟姐妹们&#xff0c;如果看习惯了运行train.py时…

PMP应该如何备考?

PMP现在是新考纲&#xff0c;PMP新版大纲加入了 ACP 敏捷管理的内容&#xff0c;而且还不少&#xff0c;敏捷混合题型占到了 50%&#xff0c;前不久官方也发了通知 8月启用第七版《PMBOK》&#xff0c;大家都觉得考试难度提升了&#xff0c;我从新考纲考完下来&#xff0c;最开…

Moonbeam隆重推出您的个人开发小助手 — — Kapa.ai

Moonbeam为开发者提供内容详细的开发者文档和全天候的Discord支持。但假如&#xff1a;有人可以24/7查看Discord并在15秒之内就回复您的问题 — — 新推出的Kapa.ai机器人使这个假如成为现实。Kapa.ai是一款由ChatGPT支持的AI机器人&#xff0c;可以回答关于在Moonbeam上构建的…

【redis】单线程redis为什么这么快

本文以收录专栏 redis核心技术 前言 本专栏为了帮助大家更好的了解学习redis&#xff0c;同时也是自己记录学习redis的内容&#xff0c;包含了大部分的redis核心技术&#xff0c;分布式锁&#xff0c;主从复制等 目录 专题2-单线程redis为什么这么快 2.1redis只有单线程吗&a…

剑指offer-替换空格

替换空格一、解题思想二、代码的实现三、总结一、解题思想 题目&#xff1a;请实现一个函数 &#xff0c;把字符串中的每个空格替换成”%20“。例如&#xff1a;输入”We are happy.“&#xff0c;则输出”We%20are%20happy.“。 看到这个题目&#xff0c;我第一想到的是&#…

博客1:YOLOv5车牌识别实战教程:引言与准备工作

摘要:本篇博客介绍了本教程的目标、适用人群、YOLOv5简介和车牌识别的意义和应用场景。为后续章节打下基础,帮助读者了解YOLOv5和车牌识别的相关背景知识。 正文: 车牌识别视频 引言 欢迎来到YOLOv5车牌识别实战教程!在这个教程中,我们将一步步教你如何使用YOLOv5进行车…