机器学习西瓜书+南瓜书吃瓜教程第三章学习笔记

news2024/11/26 13:47:47

本次学习为周老师的机器学习西瓜书+谢老师南瓜书+Datawhale视频
视频地址

下面为本人的学习笔记,最近很忙还没学多少,之后补!!!
u1s1,边看视频边自己手推一遍真的清楚很多,强烈推荐自己手推虽然花时间,但真的很有用很清晰

线性模型

    • 1、基本形式
    • 2、最小二乘估计&&极大似然估计
    • 3、求解w和b
    • 4、举例

机器学习是想要通过现有的数据,找到隐藏在事物背后的规律。
而大部分规律是符合线性模型的形式
为了能进行数学运算,样本中的非数值类属性都需要进行数值化。
机器学习三要素:
1.模型:根据具体问题,确定假设空间
2.策略:根据评价标准,确定选取最优模型的策略(通常会产出一个“损失函数”)
3.算法:求解损失函数,确定最优模型

1、基本形式

给定由d个属性描述的示例在这里插入图片描述
其中xi是x在第i个属性上的取值,线性模型试图学的一个通过属性的线性组合来进行预测的函数,即:在这里插入图片描述
一般用向量形式写成
在这里插入图片描述
其中w = (w1;w2;…;wd),模型就得以确定。
在这里插入图片描述

2、最小二乘估计&&极大似然估计

在这里插入图片描述

极大似然估计的直观想法:使得观测样本出现概率最大的分布就是待求分布,也就是使得联合概率(似然函数)L( θ \theta θ )取得最大值的 θ \theta θ 即为 θ \theta θ 的估计值。
在这里插入图片描述

3、求解w和b

凸集介绍:向下凹的函数叫凸函数,相当于数学里面最优化的思路
在这里插入图片描述
梯度:多元函数的一阶导数
在这里插入图片描述
列向量为分母布局,行向量为分子布局。求梯度即为求偏导数。
Hessian(海塞)矩阵(多元函数的二阶导数):
在这里插入图片描述
其本质上是一个多元函数求最值点的问题,更具体点是凸函数求最值的问题
推导思路:
1、证明 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 E\left( w,b\right) =\sum ^{m}_{i=1}\left( y_{i}-wx_{i}-b\right) ^{2} E(w,b)=i=1m(yiwxib)2是关于w和b的凸函数。
2、用凸函数求最值的思路求解出w和b。
在这里插入图片描述

半正定矩阵的判定定理之一:
若实对称矩阵的所有顺序主子式均为非负,则该矩阵为半正定矩阵。
在这里插入图片描述
好的到这里我们已经完成了第一步证明,接下来我们要完成第二步证明即用凸函数求最值的思路求解出w和b。
在这里插入图片描述
这边手写忘拍照啦,就写一下思路吧~
首先令对b的一阶导等于0,可以求出b,为了后续求解方便首先将b化简,再对令的一阶导等于0,然后把b代进去算…
从几何的角度,让全体训练样本经过投影后:

  • 异类样本的中心尽可能远
  • 同类样本的方差尽可能小
    对数几率回归算法的机器学习三要素:
    1.模型:线性模型,
    输出值的范围为,近似阶跃的单调可微函数
    2.策略:
    极大似然估计,信息论
    3.算法:
    梯度下降,牛顿法
    在这里插入图片描述
    它实际是让ewTx+b逼近y,虽然形式上是线性回归,但是实际是求取输入空间到输出空间的非线性函数映射。这里的对数函数起到了将线性回归模型的预测值与真实标记相联系的作用。

在这里插入图片描述
在这里插入图片描述
若将y视为x为正例的可能性,1-y为其为反例的可能性,两者的比值为x为正例的相对可能性。对于几率取对数得到的就是“对数几率”。对数几率回归也叫逻辑回归。
线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。如图所示:
在这里插入图片描述
在这里插入图片描述
现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示。
👉基于一些基本策略,利用二分类学习器来解决多分类问题
·“一对一”(One vs.One,简称OvO)
·“一对其余”(One vs.Rest,简称OvR)
·“多对多”(Many vs.Many,简称MvM)
OvO:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。

OvM:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段,得出N个结果,若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。

MvM:给定数据集D,假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码给出,编码),若进行了M次划分,则生成了M个二分类学习器,在测试阶段(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。
在这里插入图片描述

在这里插入图片描述
类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有900个,而反例只有100个,这个时候我们就需要进行相应的处理来平衡这个问题。常见的做法有三种:

  • 在训练样本较多的类别中进行“欠采样”(undersampling),比如从正例中采出100个,常见的算法有:EasyEnsemble。
  • 在训练样本较少的类别中进行“过采样”(oversampling),例如通过对反例中的数据进行插值,来产生额外的反例,常见的算法有SMOTE。
  • 直接基于原数据集进行学习,对预测值进行“再缩放”处理。其中再缩放也是代价敏感学习的基础。
    欠采样:去除一些反例使得正、反例数目接近
    ·过采样:增加一些正例使得正、反例数目接近
    ·阈值移动:直接基于原始数据集进行学习,但是预测时改变预测为正例的阈值(不再为0.5)

4、举例

1、sklearn中的线性回归
sklearn中的线性回归模型如下:

from sklearn.linear_model import LinearRegression
sklearn.learn_model.LinearRegression()

它表示最小二乘线性回归,线性回归拟合具有系数w = (w1,…,wp)的线性模型,以最小化数据集中观察到的目标与通过线性近似预测的目标之间的残差平方和,它的完整参数如下:

sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True)

参数解释:

  • fit_intercept,是否计算此模型的截距,默认True,如果设置为False,则不会在计算中使用截距

  • normalize:数据标准化,默认为False,官方给的建议是用StandardScaler,

  • copy_X:如果为True,则X将被复制;否则,它可能会被覆盖、默认为True。
    参数解释:

  • fit(X,y[,sanmple_weight]):拟合线性模型(也可以叫做训练线性模型)

  • predict(X):使用线性模型进行预测。

  • score(X,y[,sample_weight]):返回预测的确定系数,即R^2.
    2、案例实现:价格预测
    假设有例子,x和y分别表示某面积和总价,需要根据面积来预测总价。
    第一步导入模块:

import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

第二步:导入数据并绘制散点图

#创建数据
x = np.array([6,16,26,36,46,56]).reshape((-1,1))
y = np.array([4,23,10,12,22,35])

plt.scatter(x,y)#绘制散点图
plt.show()

在这里插入图片描述

第三步:创建模型并拟合

model = LinearRegression().fit(x,y)

第四步:评估模型

r_sq = model.score(x,y)
print('确定系数:',r_sq)

确定系数: 0.5417910447761195
第五步:获取线性回归模型中的参数

#打印截距
print('截距:',model.intercept_)

#打印斜率
print('斜率:',model.coef_)

#预测一个响应并打印它:
y_pred = model.predict(x)
print('预测结果:',y_pred,sep='\n')

截距: 4.026666666666664
斜率: [0.44]
预测结果:
[ 6.66666667 11.06666667 15.46666667 19.86666667 24.26666667 28.66666667]
3、销售预测
数据集如下:
在这里插入图片描述
分别表示:

  • TV:电视台
  • Radio:广播
  • Newspaper: 报纸
  • sales: 销售价格
    第一步:读取数据并展示数据
import pandas as pd
data=pd.read_csv(r"D:\advertising.csv")
data

如图:
在这里插入图片描述
回归方程别忘了:y = c+m1x1+m2x2+…+mn*xn

  • y是预测值,是因变量
  • c是截距
  • m1是第一个特征
  • m2是第二个特征
  • m3是第三个特征
  • mn是第n个特征
    在这里我们只做电视和销售的关系,因此方程为:y = c+m1xTV
    第二步:提取自变量和因变量
X = data['TV'].values.reshape(-1,1)#使其成为数组
y = data['Sales'].values

第三步:分隔训练集和测试集。将70%的数据保留在训练数据集中,其余30%保留在测试数据集中。

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,train_size=0.7,test_size=0.3,random_state=100)

第四步:数据可视化

plt.scatter(X_train,y_train,color='purple')
plt.xlabel('x ')
plt.ylabel('y ')
plt.title("Scatter Plot")
plt.show()

如图:
在这里插入图片描述
第五步:建立线性回归模型

from sklearn.linear_model import LinearRegression
lr = LinearRegression()

第六步:训练模型并使用选项回归模型预测

lr.fit(X_train,y_train)
y_predict = lr.predict(X_test)

第七步:评估模型 使用训练精确度和测试精确度。可以根据这两个指标判断是否过拟合还是欠拟合,训练精度大于测试精度则过拟合,如果两者都很小就是欠拟合。

print(f'Training accuracy:{round(lr.score(X_train,y_train)*100,2)}%')
print(f'Testing accuracy:{round(lr.score(X_test,y_test)*100,2)}%')

输出:

Training accuracy:81.58%
Testing accuracy:79.21%

4、线性回归优缺点
优点:

  1. 建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快。
  2. 可以根据系数给出每个变量的理解和解释。
    缺点:
    不能很好地拟合非线性数据,所以需要先判断变量之间是否为线性关系。
    南瓜书地址

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BUU [HCTF 2018]Hideandseek

BUU [HCTF 2018]Hideandseek 考点: 软连接读取任意文件Flask伪造session/proc/self/environ文件获取当前进程的环境变量列表random.seed()生成的伪随机数种子MAC地址(存放在/sys/class/net/eth0/address文件) 国赛的时候遇见过软连接,这次再来学习一下…

加州法案提议在州一级监管人工智能

加州高级立法者将于周三向州参议院提出一项新的人工智能 (AI) 法案,加强国家和全球监管快速发展技术的努力。 加州参议员斯科特表示,尽管国会多次尝试起草人工智能立法,但加州——硅谷的所在地,世界上大多数顶级人工智能公司都位于…

专治机器学习面试:机器学习各个算法的优缺点!

今天有朋友聊起来,机器学习算法繁多,各个算法有各个算法的特点。以及在不同场景下,不同算法模型能够发挥各自的优点。 今天呢,我把常见的、常用的算法模型进行了一个大概的总结。包括其分支以及各分支的优缺点。 涉及到的算法有…

欢迎参与体素大战活动!

全新的节目即将登陆 The Sandbox 直播流,我们希望你能成为其中的一员! 我们正在寻找 20 位 VoxEdit 艺术家来参与这场惊喜的直播活动,本次活动只需要屏幕共享即可。您将在快节奏的环境中进行创作,以竞争「最佳快速设计 Voxel 艺术…

Git学习笔记7

github上多人协助开发演示过程: 张三是项目作者。 李四是一个协同的用户。觉得项目不错,想增加一些功能。 clone与fork的区别: clone:任何人都可以下载作者的整个项目,但是非作者不能push到作者的项目里。&#xff…

【Java 基础篇】Java对象反序列化流详解

在Java编程中,对象序列化和反序列化是常见的操作,用于将对象转换为字节流以便于存储或传输,并从字节流中重新构建对象。本文将重点介绍对象反序列化流的用法和相关概念,帮助基础小白理解这一重要的主题。 什么是对象反序列化&…

javaee之黑马乐优商城4

商品规格与数据结构 下面来说一下数据库的设计与分析 其实对于spu这张表来说,大体设计还是比较好设计的 看一下下面这张图是一个产品的规格参数 上面主体就是一个规格参数,基本信息又是一个规格参数 这里就是涉及到了一个商品的具体信息,sku…

在时代的浪潮中实在前行!实在智能与浪潮通软全面开启战略合作

“新”潮涌动,浪花朵朵。近日,杭州实在智能科技有限公司与浪潮通用软件有限公司签署战略合作协议。双方将加快科研创新,扩大合作领域,共同开拓数智化市场,携手共赢。 浪潮通软平台软件与技术研究院总经理周祥国、实在智…

游戏使用脚本配置HTTP

在游戏世界中,使用脚本工具帮助优化游戏体验已经成为一种普遍现象。但是,是否需要结合代理IP来使用游戏脚本呢?本文将探讨游戏使用脚本时是否需要代理IP的利弊,并分享合规使用脚本的方法。 1. 提高账号安全性: - 通过…

知识图谱的搭建

知识图谱搭建最重要的核心在于对业务的理解以及对知识图谱本身的设计,这就类似于对于一个业务系统,数据库表的设计是至关重要的,而这种设计师根据业务及未来场景的变化预估不断探索得出的。 一个完整的知识图谱的构建包含以下几个步骤&#…

Spring 中的Aware接口有什么作用

文章目录 0.前言1.什么是Aware接口2.Aware接口的设计目的3.详解3.1. ApplicationContextAware我们举个例子来说明 3.2. BeanFactoryAware3.3. BeanNameAware3.4. ServletContextAware3.5. MessageSourceAware3.6. ResourceLoaderAware 4.参考文档 0.前言 背景: 最近…

Centos7完全离线环境安装Nvidia Tesla A100 40G显卡驱动(含CUDA Toolkit)和Anaconda3虚拟环境

公司一台完全离线环境的服务器刚装了Nvidia Tesla A100 40G显卡,自己摸索着将显卡驱动在完全离线环境下安装成功,这里记录一下。 一、下载Centos7适配的Nvidia Tesla A100 40G显卡驱动 在Nvidia官网下载Centos7适配的显卡驱动,CUDA Toolkit…

idea(第一次)启动项目,端口变成了8080

先上配置 server:port: 9569 spring:profiles:active: dev 该排查的问题也都没问题,重启idea也试过了,还是8080 解决办法:点击右侧的maven ,左上角的重新导入 reimport all maven projects 我又没有改动pom文件,居然还要点这…

玩机教程:阿里云无影云电脑怎么使用?

阿里云无影云电脑即无影云桌面,云电脑如何使用?云电脑购买后没有用户名和密码,先创建用户设置密码,才可以登录连接到云桌面。云桌面想要访问公网还需要开通互联网访问功能。阿里云百科来详细说下阿里云无影云电脑从购买、创建用户…

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

1.概述 在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景 2.SystemUI 下拉状态栏背景增加高斯模糊背景核心类 frameworks/base/pack…

python后端和前端通过websocket通讯发消息最小案例,十分钟看懂

前端和后端通过websocket实现发送消息案例,用于理解websocket,服务端可以主动给客户端发送消息,而且是长连接,比http效率高,因为http要不断地创建和销毁socket实例,导致压力很大。websocket一次创建&#x…

自定义类型:结构体----初学者笔记

目录 1. 结构体类型的声明 1.1 结构体类型的简单介绍和声明 1.1.1 结构的声明 1.1.2 特殊的声明 1.1.3 结构的自引用 2. 结构体变量的创建和初始化 3. 结构成员访问操作符 4. 结构体内存对⻬ 4.1 对齐规则 4.2 练习 4.2.1 练习1 4.2.2 练习2 4.3 为什么存在内存对…

知名IT网站博客园陷入绝境

我是卢松松,点点上面的头像,欢迎关注我哦! 博客园陷入生死存亡的绝境。 5月份知名IT开发者网站发布文章称“博客园网站遇到困难了:寻求捐助”,并开通了捐助渠道。4个月过去了,好像效果并不明显&#xff…

婚庆行业类软文怎么写?媒介盒子无偿分享

随着我国经济发展以及对婚礼品质要求的提升,结婚相关的市场发展愈发强劲,由于互联网发展的快速性,大部分新人选择通过网络获取结婚服务信息,所以线上成为婚庆公司的主要获客渠道。而软文营销就是婚庆公司提升品牌形象的主要方式&a…

AI写作工具,智能ai写作工具

在信息化时代,内容创作已经成为了许多行业的核心。从营销广告到新闻报道,从博客文章到学术论文,人们需要不断地产生高质量的文字内容。创作是一项耗时耗力的工作,需要丰富的知识和创造性思维。 AI写作工具,是一类基于人…