一.前言

本章节开始来讲解一下机器学习的知识,本期作为一个了解就大概介绍一下,我们不会从机器学习基础开始介绍,但是后面会来补充,随着ai的不断发展,机器学习在ai的领域里面的占比越来约少,我们还是以应用为主,所以介绍完本章就会开始深度学习。

二.深入理解机器学习

  • 算法模型对象:

    • 一种特殊的对象,特殊之处在于,该对象内部集成/封装了某种形式的算法/方程。该算法/方程用于找寻数据间的规律。假设某一个模型内部封装的算法/方程如下:

      • y = w * x + b,这是一个还没有求出解的方程式。

  • 样本数据:

    • 特征数据:自变量(一个样本的描述信息)

    • 标签数据:因变量(一个样本数据的结果)

  • 模型的训练:

    • 将样本数据带入到算法模型对象内部的算法/方程中,对算法/方程进行求解操作。

    • 在该算法/方程中 y = w * x + b,如果求出了w和b则方程就可有解。

    • 模型训练就是在使用算法/方程找寻样本数据之间的规律。

  • 模型的作用:

    • 对未知样本实现预测、分类或者决策。

    • 算法/方程的解就是模型实现分类或者预测的结果。

  • 算法模型的分类:

    • 有监督类别:

      • 有监督学习是指使用带有标签的样本数据来训练模型

    • 无监督类别:

      • 无监督学习是指使用没有标签的样本的数据训练模型

三.KNN分类算法原理

简单地说,KNN算法是采用测量不同特征值之间的距离方法进行分类。大家可以类别:近朱者赤近墨者黑这句话进行理解。

下面,我们就详细来理解下KNN的分类原理,先看下图:w1(猫)、w2(狗)和w3(兔子)是三个已知类群,X则是一个未知类别的图片样本,现在要基于KNN算法将X样本分到w1、w2和w3其中的一个类别中,以确定X图片中的动物到底是猫、狗还是兔子。

 

根据我们的直接感受,应该是衡量X样本距离w1、w2和w3哪个类群最近,则X样本就应该被分到哪个类别中。这个是不是就好比与:近朱者赤近墨者黑呢。那么,KNN究竟是如何实现的分类呢?

**实现步骤:**

1. 算距离:KNN算法会计算X样本到其余所有样本之间的距离。(有几个其余样本就会计算几次距离)
2. 找近邻:定义一个k值,找出离X最近的k个样本最为X最近的k个邻居。注意,k值是需要认为定义的一个数值。
3. 投票:根据k个最近的邻居样本的类别标签进行投票,哪个类别的标签得票最多(在k个样本中哪个类别样本数量最多),则X样本就归属到该类别中。

**注意:不同的k,可能会造成不同的分类结果**   

在下图中,如果k为3则小球的分类结果为三角形,k为5则分类结果为正方形。因此,k值的最优选择在KNN中是比较重要的一个环节,稍后会详细进行讲解说明。

 

距离计算方式: 可以是欧式距离、曼卡顿距离或者闵可夫斯基距离等方式 

 

电影分类

众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影分类时必须要考虑的问题。下面我们就一起来探究下电影如何实现分类?

电影名称打斗镜头接吻镜头电影类型
California Man3104爱情片
He Not Really into Dudes2100爱情片
Beautiful Woman181爱情片
Kevin Longblade10110动作片
Robo Slayer 3000995动作片
Amped 2982动作片
1890未知
采集到了一组电影的样本数据,每一个电影样本有两个特征维度:打斗镜头和接吻镜头,电影类型为目标数据,有爱情和动作两种类别。其中有一部未知类别的电影"?",并且提取到了该电影的打斗和接吻镜头的数量。接下来,使用KNN来计算电影 “?” 的特征到其他已知类型电影特征之间的距离。

下面可以,观测下具体的距离显示:

根据欧式距离,进行距离计算结果如下:

电影名称与未知类型电影“?”的距离
California Man20.5
He Not Really into Dudes18.7
Beautiful Woman19.2
Kevin Longblade115.3
Robo Slayer 3000117.4
Amped 2118.9

制定k的值,找到电影 “ ?”周围最近的k个邻居,假定k的值为3,则离其最近的3个邻居是:

电影名称电影类型
California Man爱情片
He Not Really into Dudes爱情片
Beautiful Woman爱情片

投票:最近的3个邻居种,爱情类别的得票最多,因此 “ ?”电影的类别被KNN划分到了爱情片类别。

四.何为回归

  • 回归问题判定:

    • 回归问题对应的样本数据的标签数据是连续性的值,而分类问题对应的是离散型的值。

    • 在社会中产生的数据必然是离散型或者是连续型的数据,那么企业针对数据所产生的需求也无非是分类问题或者回归问题。

  • 常见的回归问题:

    • 预测房价

    • 销售额的预测

    • 贷款额度指定

    • ......

线性回归在生活中的映射

  • 学生期末成绩制定

    • 总成绩 = 0.7 * 考试成绩 + 0.3 * 平时成绩

    • 则该例子中,特征值为考试成绩和平时成绩,目标值为总成绩。从此案例中大概可以感受到

      • 回归算法预测出来的结果其实就是经过相关的算法计算出来的结果值!

      • 每一个特征需要有一个权重的占比,这个权重的占比明确后,则就可以得到最终的计算结果,也就是获取了最终预测的结果了。

        • 那么这个特征对应的权重如何获取或者如何制定呢?

现在有一组售房数据:

面积售价
55110
76152
80160
100200
120240
150300

对售房数据的分布情况进行展示

 

问题:假如现在有一套房子,面积为76.8平米,那么这套房子应该卖多少钱呢?也就是如何预测该套房子的价钱呢?上图中散点的分布情况就是面积和价钱这两个值之间的关系,那么如果该关系可以用一种分布趋势来表示的话,那么是不是就可以通过这分布趋势预测出新房子的价格呢? 

 

在上图中使用了一条直线来表示了房子的价格和面积对应的分布趋势,那么该趋势找到后,就可以基于该趋势根据新房子的面积预测出新房子的价格。

线性回归的作用:找出特征和目标之间存在的某种趋势,在二维平面中,该种趋势可以用一条线段来表示,该条线段用一元一次线性方程来表示:y = w * x + b。

将上述的售房数据,带入到线性方程中,经过求解,w和b变为了已知,现在方程为:y = 2 * x + 0。则发现,在上述售房数据中,面积和价格之间的关系是二倍的关系,其实就可以映射成:价格 = 2 * 面积 ,这个方程就是价格和面积的分布趋势,也就是说根据该方程就可以进行新房子价格的预测。

五.损失函数 

 如果在房价预测案例中,房子的面积和价格的分布规律如下图所示(非线性的分布),那是否还可以使用一条直线表示特征和目标之间的趋势呢?

可以,只要保证直线距离所有的散点距离最近,则该直线还是可以在一定程度上表示非线性分布散点之间的分布规律。但是该规律进行的预测会存在一定的误差/损失

 

在多数的预测场景中,预测结果和真实结果之间都会存在一定的误差,那么误差存在,我们应该如何处理损失/误差呢?

量化损失/损失函数:真实结果y和预测结果(xw)差异平方的累加和(误差平方和/残差平方和):

 

提问:损失函数公式中,误差的大小和哪个系数有直系的关联呢?

答案:和权重系数w是有直系关联。也就是说w的不同会导致误差大小的不同,那么线性回归算法迭代训练过程中最终的问题就转化成了如何去求解线性方程中的w使得误差可以最小

六.无监督学习与聚类算法

  • 概述

    • 在此之前我们所学习到的算法模型都是属于有监督学习的模型算法,即模型需要的样本数据既需要有特征矩阵X,也需要有真实的标签y。那么在机器学习中也有一部分的算法模型是属于无监督学习分类的,所谓的无监督学习是指模型只需要使用特征矩阵X即可,不需要真实的标签y。那么聚类算法就是无监督学习中的代表之一。

  • 聚类算法

    • 聚类算法其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们的业务 需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。比如在商业中,如果我们手头有大量 的当前和潜在客户的信息,我们可以使用聚类将客户划分为若干组,以便进一步分析和开展营销活动。

 

七.KMeans算法原理阐述 

  • 簇与质心:

    • 簇:KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一个又一个聚集在一起的数 据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。

    • 质心:簇中所有数据的均值u通常被称为这个簇的“质心”(centroids)。

      • 在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。

      • 质心的个数也聚类后的类别数是一致的

  • 在KMeans算法中,簇的个数K是一个超参数,需要我们人为输入来确定。KMeans的核心任务就是根据我们设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。具体过程可以总结如下:

 

 

  • 那什么情况下,质心的位置会不再变化呢?当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。

  • 这个过程在可以由下图来显示,我们规定,将数据分为4簇(K=4),其中白色X代表质心的位置:

  • 聚类算法聚出的类有什么含义呢?这些类有什么样的性质?

    • 我们认为,被分在同一个簇中的数据是有相似性的,而不同簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。

    • 聚类算法追求“簇内差异小,簇外差异 大”:

      • 而这个“差异“,由样本点到其所在簇的质心的距离来衡量。

  • 对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差异就越小。而距离的衡量方法有多种,令x表示簇中的一个样本点,u表示该簇中的质心,n表示每个样本点中的特征数目,i表示组成点的每个特征,则该样本点到质心的距离可以由以下距离来度量:

 

  八.轮廓系数

  • 在99%的情况下,我们是对没有真实标签的数据进行探索,也就是对不知道真正答案的数据进行聚类。这样的聚 类,是完全依赖于评价簇内的稠密程度(簇内差异小)和簇间的离散程度(簇外差异大)来评估聚类的效果。其中 轮廓系数是最常用的聚类算法的评价指标。它是对每个样本来定义的,它能够同时衡量:

    • 1)样本与其自身所在的簇中的其他样本的相似度a,等于样本与同一簇中所有其他点之间的平均距离

    • 2)样本与其他簇中的样本的相似度b,等于样本与下一个最近的簇中的所有点之间的平均距离 根据聚类的要求”簇内差异小,簇外差异大“,我们希望b永远大于a,并且大得越多越好。

    • 单个样本的轮廓系数计算为:

  • 很容易理解轮廓系数范围是(-1,1):

    • 其中值越接近1表示样本与自己所在的簇中的样本很相似,并且与其他簇中的样本不相似,当样本点与簇外的样本更相似的时候,轮廓系数就为负。

    • 当轮廓系数为0时,则代表两个簇中的样本相似度一致,两个簇本应该是一个簇。可以总结为轮廓系数越接近于1越好,负数则表示聚类效果非常差。

  • 如果一个簇中的大多数样本具有比较高的轮廓系数,则簇会有较高的总轮廓系数,则整个数据集的平均轮廓系数越高,则聚类是合适的:

    • 如果许多样本点具有低轮廓系数甚至负值,则聚类是不合适的,聚类的超参数K可能设定得 太大或者太小。

 九.总结

机器学习前置知识点就介绍这么多了,后面就是要介绍一下深度学习的知识了,还是以实用性为主,到最后才是给大家补充机器学习的细节, 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构 顺序表(1)

目录 1.线性表 2.顺序表 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用 的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#…

openssl 生成国密证书

openssl生成证书生成CA私钥 openssl ecparam -genkey -name SM2 -out ca.key.pem -noout证书请求 openssl req -new -key ca.key.pem -out ca.cert.req -subj “/CNrtems-strongswan-CA”生成证书 openssl x509 -req -days 3650 -in ca.cert.req -signkey ca.key.pem -out ca.c…

系统架构设计师论文分享-论分布式事务技术及其应用

我的软考历程 摘要 2023年9月,我所在的公司通过了研发纱线MES系统的立项,该系统为国内纱线工厂提供SAAS服务,旨在提高纱线工厂的数字化和智能化水平。我在该项目中担任系统架构设计师一职,负责该项目的架构设计工作。本文结合我…

东土科技智能塔机系统亮相南京,助力智能建造高质量发展

近日,由南京市城乡建设委员会、江苏省土木建筑学会主办的“无人驾驶智能塔机观摩会”,在中建三局一公司南京扬子江智慧中心项目现场成功举办。作为全国首批智能建造试点城市,南京市已出台20余项支持政策,落地93个试点项目&#xf…

3D Surface Reconstruction with Enhanced High-Frequency Details

3D Surface Reconstruction with Enhanced High-Frequency Details核心问题:当前基于神经隐式表示(如 NeuS)的 3D 表面重建方法,通常采用随机采样策略。这种随机采样难以充分捕捉图像中的高频细节区域(如纹理、边缘、光…

Science Robotics 耶鲁大学开源视触觉新范式,看出机器人柔性手的力感知

摘要:在机器人视触觉传感领域,如何兼顾成本与性能始终是一大挑战。耶鲁大学在《Science Robotics》上发表最新研究,提出了一种“Forces for Free”(F3)新范式。该研究通过观测一个经过特殊优化的开源柔性手&#xff08…

关于java项目中maven的理解

我的理解:maven是java项目的依赖管理工具,通过pom.xml文件配置要下载的依赖,settings.xml配置maven下载的镜像没有就默认在maven中央仓库下载依赖,本地仓库是存储下载好的依赖ai:1. 功能定位局限Maven 不只是依赖管理工具&#xf…

缓存三大问题详解与工业级解决方案

文章目录缓存三大问题详解与工业级解决方案概念总览问题详解1. 缓存穿透 (Cache Penetration)问题描述典型场景危害2. 缓存击穿 (Cache Breakdown)问题描述典型场景危害3. 缓存雪崩 (Cache Avalanche)问题描述典型场景危害工业级解决方案缓存穿透解决方案方案1: 布隆过滤器方案…

FreeRTOS 中主函数 while 循环与任务创建的紧密联系

FreeRTOS 中主函数 while 循环与任务创建的紧密联系 在嵌入式开发领域,FreeRTOS 是一款被广泛应用的轻量级实时操作系统,为开发者提供了高效的多任务调度机制。对于初学者来说,理解主函数中的 while 循环与通过 xTaskCreate 创建的任务之间的…

Flutter基础(前端教程⑦-Http和卡片)

1. 假设后端返回的数据格式{"code": 200,"data": [{"name": "张三","age": 25,"email": "zhangsanexample.com","avatar": "https://picsum.photos/200/200?random1","statu…

pytorch chunk 切块

目录 chunk切块 chunk​​​​​​​切块 import torch# 创建一个形状为 [2, 3, 4] 的张量 x torch.arange(6).reshape(2, 3) print("原始张量形状:", x.shape) print("x:", x) # 输出: 原始张量形状: torch.Size([2, 3, 4])# 沿着最后一个维度分割成 2 …

PCIe基础知识之Linux内核中PCIe子系统的架构

5.1 先验知识 驱动模型:Linux建立了一个统一的设备模型,分别采用总线、设备、驱动三者进行抽象,其中设备和驱动均挂载在总线上面,当有新的设备注册或者新的驱动注册的时候,总线会进行匹配操作(match函数),…

2.2 TF-A在ARM生态系统中的角色

目录2.2.1 作为ARM安全架构的参考实现2.2.2 与ARM处理器内核的协同关系2.2.3 在启动链中的核心地位2.2.4 与上下游软件的关系与底层固件的协作与上层软件的接口2.2.5 在ARM生态系统中的标准化作用2.2.6 典型应用场景2.2.1 作为ARM安全架构的参考实现 TF-A(Trusted …

Chrome 开发者警告:`DELETE err_empty_response` 是什么?jQuery AJAX 如何应对?

在Web开发的世界里,我们时常会遇到各种各样的错误信息,它们像一个个谜语,等待我们去破解。今天我们要聊的这个错误——DELETE err_empty_response,尤其是在使用 jQuery 的 $.ajax 发送 DELETE 请求时遇到,确实让人头疼。它意味着浏览器尝试删除某个资源,却收到了一个空荡…

python作业 1

1.技术面试题 (1)TCP与UDP的区别是什么? 答: TCP建立通信前有三次握手,结束通信后有四次挥手,数据传输的可靠性高但效率较低;UDP不需要三次握手就可传输数据,数据传输完成后也不需要…

centos7 java多版本切换

文章目录前言一、卸载原来的jdk二、下载jdk三、解压jdk三、配置环境变量四、切换JAVA环境变量前言 本来是为了安装jenkins,安装了对应的java,node,maven,git等环境,然后运行jenkins时候下载插件总是报错,我下载的jenkins是 2.346.1 版本&…

用Python和OpenCV从零搭建一个完整的双目视觉系统(四)

本系列文章旨在系统性地阐述如何利用 Python 与 OpenCV 库,从零开始构建一个完整的双目立体视觉系统。 本项目github地址:https://github.com/present-cjn/stereo-vision-python.git 在上一篇文章中,我们完成了相机标定这一最关键的基础步骤…

STM32-中断

中断分为两路:12345用于产生中断;678产生事件外设为NVIC设计流程:使能外设中断设置中断优先级分组初始化结构体编写中断服务函数初始化结构体:typedef struct {uint8_t NVIC_IRQChannel; 指定要使能或禁用的中断通道例如: TIM3_I…

Shader面试题100道之(61-80)

Shader面试题(第61-80题) 以下是第61到第80道Shader相关的面试题及答案: 61. 什么是UV展开?它在Shader中有什么作用? UV展开是将3D模型表面映射到2D纹理空间的过程,用于定义纹理如何贴合模型。在Shader中&a…

C#基础:Winform桌面开发中窗体之间的数据传递

1.主窗体using System; using System.Windows.Forms;public partial class MainForm : Form {public MainForm(){InitializeComponent();}// 打开二级窗体private void btnOpenSecondaryForm_Click(object sender, EventArgs e){// 创建二级窗体并订阅事件SecondaryForm second…