机器学习课程总结(个人向)

news2024/11/14 5:27:22

前言

通过看课件PPT整理的笔记,没有截图

由于大部分内容已经耳熟能详了,故记录比较简略,只记录了一些概念和需要记忆的地方。

里面有较多的个人观点,未必正确。如有错误,还请各位大佬指正

正文

绪论

机器学习的定义:程序在任务T上通过经验E对目标P进行优化
TPE
任务 性能指标 训练经验

目标函数:状态->评价/行动
模型复杂度(函数描述能力)<--权衡-->数据量

##########LMS算法:均方误差+梯度下降
delta = Σ(y'-y)^2
w <- w+ n*(y'-y)*X
n:学习率

执行系统、鉴定器、泛化器、实验生成器??
执行系统:输入问题、输出解决方案
鉴定器:输入解决方案、输出训练样例
泛化器:输入训练样例、输出假设(也就是拟合的结果分布)
实验生成器:输入假设、输出问题

概念是什么、假设是什么
概念:对象或事件集合的子集,用布尔函数表示
假设:我们对这个概念的拟合,可以用布尔函数表示,也可以用对属性约束的合取范式来表示。
例如<A1,B2,C1,?>,表示满足A1、B2、C1的任意实例都属于该假设

---------------------------------------------

概念学习

X、H、c、D
X实例集:样本空间
H假设集:在该样本空间上的任意一个布尔函数,概念空间
c目标概念(布尔函数):X->{0,1}
D训练样例集:{<xi,c(xi)>},其中xi∈X
学习目标:找到h∈H,使得任意x∈X有h(x)=c(x)

归纳学习假设:
由于样本空间X过大,我们假设:
任意<x,c(x)>∈D都有h(x)=c(x),且D足够大时,
那么我们就认为,h可以使得大部分x∈X有h(x)=c(x)

搜索空间:搜索概念空间中的元素,样本空间中的概念边界
##########偏序关系:more_general_than_or_queal_to
hk(x)=1 -> hj(x)=1
记作hj > hk

##########Find-S算法
从最特殊假设开始,枚举D中正例,哪个属性不满足就取哪个并集加入当前假设,不管负例

##########候选消除算法
Find-S的升级版,输出所有满足条件的假设集合,给出偏序集合的上下界
一致:同时满足D中正例和负例的h
变型空间:所有与D一致的h的集合,记为VS(H,D)
列表后消除算法:暴力枚举出H中的所有假设,一一验证
求出极大一般成员G集合和极小特殊成员S集合,作为上下界,VS(H,D)中所有元素必定位于该上下界之间
步骤:
若为正例,去除G中的不一致假设,泛化S中不一致的假设
若为反例,去除S中的不一致假设,泛化G中不一致的假设
若包含错误的概念数据,最终会收敛到一个空集

无偏学习的无用性,有偏性更强,归纳能力更强

---------------------------------------------

决策树

合取、析取、异或的决策树画法
ID3和C4.5,Splitinfo:划分后每个类别的占比的-plogp之和
错误率降低剪枝(后剪枝,修剪后在训练集上的性能不能低于原树)
规则剪枝(把每条路径的错误率算出来,单独剪枝,而不是统计子树中的总错误率)

还可以引入属性划分代价,把Gain^2/Cost作为划分依据

---------------------------------------------

ANN

感知器训练法则
w=w+Δw
Δw=n*(y'-y)*x
这里的输出是被二值化之后的y‘和y

delta法则=LMS法则(规则)
和感知器训练法则类似,但输出是没有加二值化的(阈值单元)
感知器训练法则是加入了阈值单元的输出,直接进行梯度下降

梯度下降:对整个训练数据进行计算(真实梯度)
随机梯度下降:一个一个数据的计算梯度(引入了扰动,避免梯度下降被局部极小值干扰)

输出单元δ值计算:y'*(1-y')*(y-y')(本质上是一层传递,最初δ为(y-y')即残差)
(这里的y'*(1-y')其实是链式法则求导到sigmoid的特征)
隐藏单元δ值计算:o*(1-o)*Σwi*δi
Δwi->j = n * δj * xi->j(其实大部分神经网络的xi->j都是xi吧?)
链式求导法则

增加冲量(叠加上次的梯度)
sigmoid、relu、tanh、leaky relu
在误差函数中添加L2正则化项,增加对目标函数的偏导(斜率)
交叉熵损失函数

---------------------------------------------

贝叶斯推理

(从观测到预测,从看得见的现象到内在本质的推理)

后验=似然*先验/全概率
先验P(h):在对概念进行观测之前,各个假设成立的概率,具有主观色彩
先验P(D):观测结果D的先验概率(一般认为是等概率吧)
似然P(D|h):在假设h成立的条件下,观测到数据D的概率
后验P(h|D):在已知观测D的情况下,假设h成立的概率
极大后验假设hMAP、极大似然假设hML:就是使得后验、似然概率最大的假设

Brute-Force贝叶斯概念学习(求hMAP)
枚举每个h,P(h)=1/|H|,似然:一致=1,不一致=0
计算出来的全概率先验为|VS(H,D)|/|H|

一致学习器:在训练集上正确率100%

(证明题)使用误差平方的损失函数会使得输出为极大似然假设
(主要思路:似然概率为每个样本的似然概率乘积累积,因为di服从正态分布,里面具有误差平方项,取argmax操作后,可以化简为最小误差平方和的形式)
贝叶斯学习器:L(X,H,D),D中标签具有噪声
选用正态分布来描述噪声

把预测离散的标签{0,1},改为预测概率[0,1]
暴力法:收集每种x值的概率,直接输出
梯度搜索,用损失函数G(h,D),计算预测结果的交叉熵,然后反向传播
但预测分类时并不能直接用极大似然假设h进行分类,需要通过后验概率加权合并所有假设ΣP(cls|hi)*P(hi|D)
由于合并过程代价过大,提出了Gibbs算法
Gibbs算法
按照P(h|D)的分布对H进行采样,用采集的h来预测h(x)
最差错误率为全部合并的两倍

朴素贝叶斯分类器
目标函数为离散
设x=(a1,a2,a3...,an),ai为样本x的第i个属性
求P(y|x)最大的y
使用贝叶斯公式转换后:求P(x|y)*P(y)
此时若x各个属性相互独立,则P(x|y)=ΠP(ai|y)
也就是说,我们只需要拟合P(ai|y)这n个函数,极大的削减了搜索空间
直接使用频率估计概率,拟合这些函数即可
m-估计(应该是马尔可夫估计?)
在样本数据少时,P(ai|y)=(n(ai)+mp)/(n(y)+m),p为先验估计,m为等效样本大小(呃,本质上就是直接加上m个分布为p的样本来补足)
文本分类问题:
预处理计算P(wi|tagj),空间复杂度O(vocabulary*tag_nums),扫描一遍数据集即可得出

---------------------------------------------

遗传算法

GA(fit,fit_thresh,p,r,m):
p:种群规模,r:产生杂交后代占比,m:突变概率
维护假设全集H的子集P(population)
使用fit函数计算每个h∈P的适应度(fit值),
当最大的fit值都无法满足fit_thresh时,进行遗传算法
1、根据适应度加权概率抽取样本p*(1-r)个,保留到下一代
2、选取r*p/2对样本,杂交得到后代,添加进来
3、再对下一代的m*p个样本进行突变
4、更新,计算每个样本的适应度
主要算法设计:适应度评估、选择算法、杂交操作、变异操作
目的是保留更多样性的群体,削弱局部极小值的影响
无需使用梯度计算,但需要大量适应度计算,编码定义较为困难

---------------------------------------------

无监督学习

聚类Kmeans,每个点找离他最近的中心点,然后中心点迭代为他所管辖点的中心,劣势:异常值、k值敏感、初始种子敏感、非线性边界聚类
SSE指标计算,每个中心到它所管辖的所有节点的距离
聚类结果的表示:聚类中心、每个点的分类、使用众数来表示聚类、使用聚类树表示
层次聚类:自上而下(分裂)、自下而上(合并)
合并法:类似并查集,需要计算两个聚类之间的距离(最近(单连接)、最远(全连接)、平均链接(多个点对距离和的均值)、聚类中心法)
样本距离计算:欧几里得、曼哈顿、闵可夫斯基、切比雪夫

混合矩阵:两个样本a、b(一般只有布尔属性)中,枚举所有属性,统计a=0/1且b=0/1的个数,写成矩阵形式
样本匹配距离:
(n01+n10)/(n00+n01+n10+n11)(简单匹配距离)(对称布尔属性,两类别概念对称)
(n01+n10)/(n01+n10+n11) (Jaccard距离)(当状态1出现较少时,非对称布尔属性)
推广:不匹配数/总数
相似度衡量:
向量夹角余弦相似度a·b/(|a||b|)
数据标准化:
范围标准化:把数据限制到[0,1]
Z-score:(x-μ)/s,这里s是所有样本到均值的绝对值的平均数,不是标准差σ

各类数据的通用处理方式:
比例度量属性,将非线性的数据进行线性化后,再进行处理
符号属性(标签)->转换为独热编码
顺序属性->连续化,作为连续属性处理
混合属性->找一个主导全部转换过去 || 所有一起做加权平均

聚类评估:
使用一组有标签的数据,利用训练好的聚类模型对其进行分类,评判各个类下的信息熵、纯度、SSE、中心间差异、混淆矩阵(就是多分类评价的那一套AUC、 Acc、 Precision、 Recall、 F1)

---------------------------------------------

基于实例的学习

KNN找最邻近的k个点,KD树实现
优化:对距离进行加权,使用全部样本进行查询
维度灾难:降维,(x,y)->x+ky或者y+kx,然后选取最佳的k(把分类问题维度转换为优化维度),剔除无关属性(留一法,去除一个观察效果),坐标轴伸展
KNN分类与回归
局部加权线性回归
(取局部进行拟合、取全局进行加权、取局部进行加权拟合)
径向基函数RBF
把加权的函数换成高斯函数
每个邻域中的参考值x,都需要对应一个核函数
消极学习:KNN和局部加权线性回归
积极学习:RBF(需要训练,损失函数为训练集中的每个数据预测的平方误差) 

关于积极学习和消极学习还可以参考以下博客:
https://blog.csdn.net/m0_38103546/article/details/81229290

---------------------------------------------

回归学习

线性回归
最小二乘法h(x) = w0+w1x1+...+wnxn=W·X
W = (Xt*X)^(-1)*Xt*y
(作业)使用梯度下降推导线性回归、逻辑回归、softmax回归
逻辑回归就是在线性回归的输出加入一个sigmoid,采用交叉熵
sofmax回归就是多个线性回归的基础上,把所有输出加一个softmax操作,采用交叉熵
正则化
应该主要考梯度计算

---------------------------------------------

线性分类器

线性判别函数(分类时计算量小,比朴素贝叶斯快,但错误率可能更高)
线性可分与线性不可分
SVM证明(略)

线性多分类器的建立
一对其余:wi/wi'法
一条边界划分某一个类和其余类
时间复杂度O(cls_num)
存在不确定区域
一对一:wi/wj法
任意两个类之间都有边界划分
时间复杂度O(cls_num^2)
存在不确定区域
但比wi/wi'更容易线性可分
多对多:
同时求解cls_num个线性函数,将他们的最大值作为分类结果
不存在不确定区
一般采用这种方案

最小距离准则
分完类之后,查询x与各类均值点的距离,最小的就是最近的
可证明也是一种线性分类器(在采用欧氏距离时)
但分类效果不理想

感知器准则
样本规范化:
x->增广(1,x1,x2,x3)->把负类进行取相反向量
这样目的就转换为,找一个平面,使得所有点都在一侧
解区:能正确分割两类数据的w向量(分割面的法向量)取值范围,越大说明解越可靠
有了解区,我们就可以进一步限制线性分类器的精度,使用余量来控制法向量的范围
感知器准则函数
求和所有错误分类的计算结果 Σ-wTx,记为Jp(w),最小化该值
假设所有样本都正确分类(或在边界上),则Jp(w)=0,否则该值会大于0
然后我们就可以愉快地求dJp(w)/dw的偏导,进行梯度下降,直到错误分类集合为空,停止。
而这个偏导恰好等于Σ-x,也就是所有错误分类的向量之和
我们把它乘以学习率,然后叠加到w上,就可以使用梯度下降训练线性分类器了
*但是,这个方法只适用于线性可分的情况,不可分的话则永远不会停止

最小平方误差准则(SVM使用的准则)
X增广且规范化之后
Xw=b
根据一系列推导,最优MSE的w解为(Xt*X)^(-1)*Xt*b(Xt表示X的转置)
但由于计算量较大,Xt*X可能不可逆,因此实践中并不采用
Widrow-Hoff算法:
发现,如果将梯度下降的步骤增量改为:w_{k+1}=w_{k}-ρk*Xt*(X*w_{k}-b)
并且取ρk=ρ1/k,无论Xt*X是否可逆,w均能收敛到一个很好的解

---------------------------------------------

特征选择与稀疏学习

贪心选择特征子集:
前向搜索,一轮一轮的选,看当前加入哪个特征最优就选哪个
后向搜索,看当前哪个特征拿走后变得更优就删除哪个特征
双向搜索,结合上述两种,直到找到一个公共元素

选出来的特征子集的评价手段:
信息增益等指标

三类特征选择方法
过滤式
relief算法,调整每个特征的权重
每次随机一个样本x,找到最近的同类样本a和最近的不同类样本b,调大(a-x)中小于(b-x)的特征权重,调小(a-x)中大于(b-x)的特征权重。
relief-F,推广到多分类问题,假设类别有k类,每次找1个同类邻近和k-1个不同类邻近样本(每个类都找一个最近的),最后根据每个类别的样本占比加权进行权重调整
包裹式
LVW算法
直接随机特征子集,然后训练,交叉验证,评估
多次取最优的。(怪不得叫Las Vegas Wrapper)
嵌入式选择
把特征选择和学习器训练融为一体,学习器自动选择特征

稀疏表示(行表示样本、列表示属性)???
字典学习
对一个数据集X
学习字典B和表示α
最小化 Σ|x-Bα|^2+λΣ|α|
有点意思,就是纯将数据集的特征进行变换,并且使得变换后的属性比较稀疏

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

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

相关文章

从0开始学习Linux——文件管理

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

vue中调用全屏方法、 elementUI弹框在全屏模式下不出现问题、多级嵌套弹框蒙层遮挡问题等处理与实现方案

全屏模式下弹框不展示的原因是elementUI的弹框我们让他挂在body中了&#xff0c;而我们全屏的div盒子不是整个文档&#xff0c;这时候就找不到弹框了。 当我们把弹框改为插入到父元素上 这时候会出现蒙层盖住整个页面&#xff0c;什么也点不了的问题。 这是elementUI官方的一个…

特征检测与特征匹配方法笔记+代码分享

在一幅图像中&#xff0c;总能发现其独特的像素点&#xff0c;这些点可以被视为该图像的特征&#xff0c;我们称之为特征点。在计算机视觉领域中&#xff0c;基于特征点的图像特征匹配是一项至关重要的任务&#xff0c;因此&#xff0c;如何定义并识别一幅图像中的特征点显得尤…

补: 力扣145 : 二叉树的后序遍历

天才的回归 ---- 二叉树的后序遍历 描述&#xff1a; **给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 ** 示例&#xff1a; 解法&#xff1a;递归就不说了&#xff0c;看下遍历法&#xff0c;与先序和中序略有不同 简单来说注意两个点&#xff1a; 1&…

Centos8 安装 JDK / Python / MySQL / Redis / Nginx

安装 JDK 华为镜像 JDK 下载地址&#xff1a;https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/ 这里安装 JDK8 为例&#xff1a; # 这里直接通过 wget 下载 wget https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/8u202-b08/jdk-8u202-linux-x…

使用轻易云平台高效集成聚水潭与南网订单数据

高效实现聚水潭与南网供应商对接的数据集成方案 普通发货对接南网供应商配送通知接口 在现代数据集成项目中&#xff0c;如何高效、可靠地实现不同系统之间的数据对接是一个关键挑战。本文将聚焦于一个实际案例&#xff1a;将聚水潭平台的数据集成到南方电网商城平台&#xff…

【经验分享】一招解决VMware虚拟机存储空间越来越大的问题

【经验分享】一招解决VMware虚拟机硬盘空间越来越大的问题 前言一、解决办法二、补充说明 前言 在使用虚拟机过程中&#xff0c;会出现用着用着虚拟机硬盘占用空间越来越大的问题。即使删除了文件&#xff0c;依然会占用宿主机的硬盘空间。如果虚拟机一开始分配的硬盘空间过大…

使用Element UI实现一个拖拽图片上传,并可以Ctrl + V获取图片实现文件上传

要在 Element UI 的拖拽上传组件中实现 Ctrl V 图片上传功能&#xff0c;可以通过监听键盘事件来捕获粘贴操作&#xff0c;并将粘贴的图片数据上传到服务器。 版本V1&#xff0c;实现获取粘贴板中的文件 注意&#xff0c;本案例需要再你已经安装了Element UI并在项目中正确配…

Ascend Extension for PyTorch是个what?

1 Ascend Extension for PyTorch Ascend Extension for PyTorch 插件是基于昇腾的深度学习适配框架&#xff0c;使昇腾NPU可以支持PyTorch框架&#xff0c;为PyTorch框架的使用者提供昇腾AI处理器的超强算力。 项目源码地址请参见Ascend/Pytorch。 昇腾为基于昇腾处理器和软…

strtok_s详解,实现使用strtok_s分割字符串,并返回包含分割符的子串

1.strtok_s函数原型 strtok_s 是一个线程安全的字符串分割函数&#xff0c;它是 strtok 的一个变体&#xff0c;用于将字符串分割成一系列的标记&#xff08;tokens&#xff09;。与 strtok 不同&#xff0c;strtok_s 需要一个额外的参数来保存上下文信息&#xff0c;这样它就…

Docker--Docker是什么和对Docker的了解

Docker 的本质 Docker的本质是LXC&#xff08;Linux容器&#xff09;之类的增强版&#xff0c;它本身不是容器&#xff0c;而是容器的易用工具。 Docker通过虚拟化技术&#xff0c;将代码、依赖项和运行环境打包成一个容器&#xff0c;并利用隔离机制来使得容器之间互相独立、…

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【测试框架篇】单元测试框架pytest(3):用例执行参数详解

一、前言 上一篇内容介绍了用例编写的规则以及执行用例&#xff0c;执行用例时我们发现有些print输出内容&#xff0c;结果没有给我们展示&#xff0c;这是因为什么原因呢&#xff1f;接下来我们会针对这些问题进行阐述。 二、参数大全 我们可以在cmd中通过输入 pytest -h 或…

设计模式-七个基本原则之一-开闭原则 + SpringBoot案例

开闭原则:(SRP) 面向对象七个基本原则之一 对扩展开放&#xff1a;软件实体&#xff08;类、模块、函数等&#xff09;应该能够通过增加新功能来进行扩展。对修改关闭&#xff1a;一旦软件实体被开发完成&#xff0c;就不应该修改它的源代码。 要看实际场景&#xff0c;比如组内…

Android Room框架使用指南

Room框架使用指南 项目效果创建应用,配置Gradle1、在app Module的build.gradle配置kapt插件2、配置依赖:3、配置依赖包版本号创建实体类创建DAO1、DAO简介2、WordDao设计以及相关注解说明3、监听数据变化添加Room数据库1、Room数据库简介2、实现Room数据库实现存储库实现View…

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个&#xff1a; 1. npm (Node Package Manager) 简介&#xff1a; npm 是 Node.js 的默认包管理器&#xff0c;也是最广泛使用的包…

C++builder中的人工智能(23):在现代C++ Windows上轻松录制声音

在这篇文章中&#xff0c;我们将探讨如何在现代C Windows上轻松录制声音。声音以波形和数字形式存在&#xff0c;其音量随时间变化。在C Builder中&#xff0c;使用Windows设备进行录音非常简单。要录制声音&#xff0c;在多设备应用程序中&#xff0c;必须使用FMX.Media.hpp头…

科目一汇总笔记2024

知识点&#xff0c;一天看一遍&#xff1b;提前一周即可&#xff1b;真实考试比“驾校宝典”模拟题简单。 1 知识点汇总 2 错题总结 增驾1轻 2中 3重 能见度 200 100 50 速度60 40 20 两条车道是:100 60 三条车道是:110 90 60 四条车道是:110 90 90 60 高速小车最高120其…

【详细】如何优雅地删除 Docker 容器与镜像

内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1&#xff1a;查看当前运行的容器步骤 2&#xff1a;停止容器步骤 3&#xff1a;删除容器 2. 删除镜像步骤 1&#xff1a;查看镜像列表步骤 2&#xff1a;删除镜像 3. 删除所有容器和镜像 使用 1Pa…

华为eNSP:AAA认证(pap和chap)telnet/ssh

pap模式 一、拓扑图 二、配置过程 1、这个型号路由器是不带串口的&#xff0c;所以需要添加串口板卡 2、加入串行接口卡槽 右击路由&#xff0c;选择设置&#xff0c;将串口板卡拖动到路由器扩展槽&#xff0c;并开机即可 3、认证方路由器配置 [r8]aaa #进入aaa认证 [r8-a…