【AI底层逻辑】——篇章5(上):机器学习算法之回归分类

news2024/11/19 16:46:19

目录

引入

一、何为机器学习

1、定规则和学规则

2、算法的定义

二、机器学习算法

1、常见学习方法

2、回归

3、分类

续下篇...

往期精彩:


引入

计算机发明初,专家通过将专业知识和经验梳理成规则输入计算机程序,但是这样跟不上知识更新速度,费时费力!于是一种“偷懒“的方法诞生了——机器学习,计算机可以从数据中自动学习规律,它并不神秘难懂,实际上它是一套严谨的运算逻辑(数据处理逻辑)。算法好比机器的引擎,能让计算机无人干预下,基于数据变成某一领域”专家“。

一、何为机器学习

什么是“学习”?在图灵奖和诺贝尔经济学奖得主西蒙教授看来,学习的核心是改善性能。“机器学习”最早由塞缪尔提出,他的西洋跳棋程序是世界上第一个能自我对弈的程序。汤姆.米切尔这样定义“机器学习”:是一个计算机程序,由一些任务(T)中的表现(P)来度量,通过经验(E)学习改进。吴恩达教授认为,机器学习是一门使计算机可以不用显式编程就能运作的科学

1、定规则和学规则

传统编程基于规则,目的式快速找到答案,这里的规则指的是程序员比较熟悉的数据结构和运算方法,它们都是计算机程序的核心,规则定好后输入数据就会得到相应答案,通常答案式确定的。

机器学习与传统编程最大的区别是,计算机输出的是一套将输入变成输出的过程,而非答案的结果——机器学习时,算法尝试找到输入与输出数据的“关联”并不断更新迭代这个“关联”,一旦通过检验,这套关联规则就成了一个数学模型。

从数学角度看,机器学习具备3个要素模型、算法、策略

①模型:定义了学什么,将一个实际业务问题转化为一个可用数学来量化表达的问题

②算法:定义了怎么学,实质上是一种数学运算方法。如数学上求解最小二乘问题时会用到梯度下降的迭代方法,这就是算法。

③策略:定义了何时结束学习,即学习优化的目标和准则。数学上通常表现为一个损失函数,来评价预测值与理论值之间的差距,将机器学习转化为一个损失函数最小化的优化问题。

注意:“机器学习”和“机器学习算法”不一样。机器学习是一个从数据中学习得到模型的完整过程,是一个工程问题;而机器学习算法是期间用到的数学运算方法,是一个数学问题。

范围上,AI>机器学习>深度学习,机器学习是实现AI的一种方法,深度学习是实现机器学的一种技术。深度学习是以人工神经网路为基础的一系列模型;机器学习除了神经网络结构,只要是能通过数据训练出来的模型都可归到机器学习范畴;AI则除了机器学习这样的计算机应用外,还会拓展到生物学、认知学和心理学等。

2、算法的定义

算法是提前定义的运算方法,是计算机遵循的一组步骤或规则,算法就是“烹饪过程”。在计算机中算法表现为一段程序指令,如冒泡算法、MD5加密算法、哈希算法等。它们给出了一套通用解决方案,具备很强的问题迁移能力!

以前,算法指令只是一套事先就决定了基本执行逻辑的规则,有多“智能”取决于程序员。后续出现了机器学习算法,来自动总结数据规律解决更复杂的问题!

在今天几乎90%的程序员不会跟算法直接打交道,这些算法被专门的算法工程师封装到软件,对其他程序员来说像一个”黑盒“。一些简单算法可直接调用软件包,复杂的算法则需要专门购买,”算法“变成了一种商品!

二、机器学习算法

算法在设计之初思想很朴素,很简洁,只是为了解决某个问题,之所以难以理解是因为它与人类思考问题的方式差异很大构建一个机器学习算法模型,有几个核心问题需要解决:

①建模问题。数学函数来表达现实功能,最难最重要,AI存在的缺陷/局限并不是因为计算机解不出数学方程,而是无法用数学函数很好描述。

②评估问题。一套评价标准评估函数模型的优劣,商业中”杀熟现象“(如老顾客看到的价格比新顾客高)就是因为人为使用具有特定倾向性目标的评估函数。

③优化问题。找到性能最佳的某个函数。

1、常见学习方法

按学习方式分——无监督学习、监督学习、强化学习

①无监督学习:输入数据没有维度标签,输出通常是自动聚合的不同类别的标签。分类是自动进行的,只要有数据就会找到相近特征,它的典型算法是聚类算法

例子,让计算机将一篮水果中的同类别水果归到一起,不知道水果种类(标签),
首先它需要得到各个水果的特征数据,并表示为数学向量,假设此向量包含
了颜色、味道、形状等特征。然后将相似向量(距离较近)的水果归为一类。

②监督学习:已知输入数据的类别(标签)。它可根据已知数据的标签预测未知数据的标签,典型的应用场景是推荐和预测,是机器学习中应用最广泛的。

还是上面的水果问题,这次知道水果标签(苹果、香蕉等),
计算机学习这些标签和特征数据之间的联系,如发现红色、甜的、
圆的很有可能是苹果,黄的、甜的、长条的很有可能是香蕉。学习好
以后,就得到一个可判断水果类别的模型。

③强化学习:输入是一些数据的状态、动作以及环境交互的反馈,输出是当前状态的最佳动作。目的是长期奖励回报最大,不断追求更好。

相比前两种,强化学习是动态的学习过程,无明确目标,对结果也无精确衡量标准。带有决策属性,连续选择一些行为(没有任何标签和数据告诉计算机该怎么做),只能尝试做些行动然后根据反馈改进。

有点像闭环控制,没错,许多控制类和决策类问题都属于强化学习问题,例如无人机实现稳定飞行,或让人工智能在电子游戏中取得高分。

2、回归

回归是一种监督学习算法,是一种分析变量之间相互关系的一种方法。如房价与房屋面积、气候变暖与碳排放量。

”回归“一词最早由达尔文提出,无论是豌豆尺寸、人类身高都存在“向均值回归”的现象。数学上,“回归”常与数据预测联系在一起,但实际上该词本身不存在预测含义,只是由于某些原因该词被保留了下来。

算法目的一般两个:①解释已有规律。用已知数据找到合适方程表达式;②预测未知和未来。数学方程不仅可表示关联性,也可对数据样本进行预测。下面以一元线性回归为例:

一元线性回归只研究一个自变量X与一个因变量Y之间的关系。假设有一组数据,有X和Y两个变量,将这些数据画在函数图形上,可得到散点图,可看到这些数据点似乎聚集在直线附近,这条隐藏直线就是要求解的回归方程。

假设Y与X是线性关系$Y=\theta _0+\theta_1X+\varepsilon $。其中$\varepsilon $是随机误差,是所有不确定因素影响的总和,其值通常不可观测。数学上是把它看作随机噪声,假定其服从正态分布;至于参数$\theta _0$$\theta _1$,思路是找到一条直线(如果数据是多维的,则需要找到一个平面),使得样本数据到这条直线的距离平方和尽可能小——最小二乘拟合法(最小平方法)。

确定了Y与X的表达式后,还需要对回归方程进行假设检验,因为在计算之前它们的线性关系是假设的。要借助统计方法,对回归方程的参数进行假设检验,以验证Y与X是否真的是线性关系。

拓展:

线性回归可找出两组变量之间的关联关系,是一个机器学习过程。但实际场景是多维的,如要预测房价,除了房价数据,还需要人均收入、房屋面积、距离市区远近、医疗教育资源等,存在多变量影响结果——多元线性回归。数学方法与一元线性回归类似

多元线性回归可能会遇到多重共线性问题,多重共线性是指样本数据中存在一些具有较强线性相关性的变量,比如房屋的建筑面积和使用面积就是在这种关系。在预测房价时,最好不要同时使用它们两个,这样会增加计算复杂度、解释性变差,还可能导致方程解不稳定。

在线性回归算法基础上改进和优化发展出了——岭回归、Lasso回归、弹性网络回归等。

3、分类

分类是一种监督学习算法,机器学习中最广泛的一类应用,它根据输入数据的特点将其归到有限个提前定义好的类别中,输入输出都是离散变量。以文本分类为例,输入是文本的特征向量,输出是文本的类别。

常见的分类算法:人工神经网络算法、决策树算法、支持向量机、K邻近法、朴素贝叶斯、逻辑回归算法等。

①分类评价方法

建立分类模型的第一步是找到一种评价分类效果的方法。对于一个分类模型,人们有时看重它判断正确的能力,有时则更关注它决策错误的风险。这需要定义两个重要指标——查准率查全率

查准率也称准确率、精度,用来衡量分类本身的准确度查全率也称召回率,用来衡量分类正确的覆盖度。对于一个二分类问题(分类结果只有“真”和“假”两种),查准率表示在认为是“真”的样例中,实际到底有多少是“真”;查全率表示在所有“真”的样例中,实际找出多少“真”。有时,也用查准率和查全率的调和平均值作为综合评价的指标。

总的来说,不同场景偏重不同,如警察抓罪犯要以查准率为重,灾难预报要更偏重查全率。这两个指标通常不可兼得。

②分类算法1——K邻近算法

K邻近算法即KNN算法,它通过“测量距离”分类。数学上经常用“距离”区分数据,这里指的是“欧氏距离”,在二维平面上欧式距离表示两个点之间的几何平面距离。

它可以在特征空间中选出与“新来的未知样本”距离最近的K个数据点,然后分析它们的类别。如果多数点都属于某个类别,则这个新来的样本也属于这个类别。这里的“K”数量是自定义(通常<20的整数),所选的这“K”个邻居都是已经正确分类的对象,算法只依据最靠近的这K个邻居类别决定待分类新样本的类别——通俗说,分类的依据是“少数服从多数”,这K个最近的邻居多数属于哪个类别,新来的就是哪个类别

实例可见前面的OpenCV的博客:【OpenCV-Python】——机器学习kNN算法&SVM算法&k均值聚类算法&深度学习图像识别&对象检测

优点:逻辑简单,易于理解,无须估计参数,也不需要数据训练,比较适用于多分类问题。

缺点是,①算法采用多数表决的分类方式,可能会在原始样本的类别(这些原始邻居)分布偏斜时出现缺陷——好比人决策时总喜欢听到精英的意见,但是精英往往是少数,周围民众会给你带来较大误判影响。②必须保存全部数据集存储空间需求大,必须对每个数据样本计算距离,计算量大

③分类算法2——支持向量机算法

支持向量机(SVM)的设计实现很巧妙,也是公认的将工程问题和数学问题优雅地结合在一起的算法。假设有以下样本数据,它们用黑点和白点表示,现在要把它们划分为两类,有好几种分法,但是哪种最好呢?

该算法告诉我们,最佳分割线是到两边的点的间隙距离最大的那条直线,如左图。但是在划分数据集时不是所有问题都可以用一条直线来完成分割,如右图。

其中的秘密武器是,使用到了一种被称为“核技巧”的数学转换方法。它能将数据从采样空间重新映射到更容易被分离的超空间,实质是一种数据“升维”处理涉及数学过程较为复杂:非线性规划求解、拉格朗日乘子法、对偶问题优化、序列最小优化算法(SMO)、核函数方法等,不展开!简单来说,SVM算法将在低维空间里解决不了的分类问题,放到高维空间解决,数学上证明这种“升维”动作是可行的,不会带来额外的计算开销(这点保证了算法运作的高效)。

它的逻辑是这样的,二维空间无法解决的线性不可分问题映射到三维空间,原本二维空间上的分类边界变成三维空间上分类函数在二维空间上的投影。同理三维空间上的线性不可分问题,可把函数映射到四维空间,找到四维空间的超平面来完成分割任务,以此类推。

一个更为简单的例子,一维上的3个点(-1、0、1)无法只用一个断点来分成三类,它的过程可以使这样:

SVM是一种优雅的算法,既有数学上的美感,游客很好解释工程问题,还蕴含哲学思想——当你掌握更多维度的数据,以更高的视角去观察事物,一切将变得so easy!

④分类算法3——决策树算法

树形也是人类思维的基本规律,这种结构易于记忆、说话、演讲、写作等,人所作的每个选择都可分解成一连串的小型决策,一个又一个小型决策组成巨大的决策树,德国数学家莱布尼兹曾说:“生命可以分解为一连串连续的二元决策,某种意义上生命就是决策树算法!多么美妙的解释!

树形结构擅长分类和检索。数据库中的数据表索引一般是树形结构,操作系统的内存和进程管理也会用到树,可以较小的开销大幅提高搜索速率。

决策树算法是一种树形结构的决策算法,决策树可看作一个编程语法中if-then规则的集合,整个决策过程直观易理解,解释逻辑良好,可视化良好!

核心逻辑——把一件很复杂的事情拆分成一个个高效的子决策项。如海龟汤游戏用问“是否的问题”猜测事物的真相。

算法目的——生成一棵泛化能力尽可能强的决策树,让它可以很好地处理没见过的数据——找出一种最能消除不确定性的划分枝叶的方法。

实现——每次决策后比较划分枝叶前后的信息熵,计算出信息增益量,信息增益量越大,说明消除的不确定性越高,本次这种划分也最好。当然实际构建决策树,特征选择还有很多方法(如基尼指数等),但无论哪一种目的都是挑选最佳的特征,通过特征的选择使得原

剪枝问题——决策树算法中样本数据很容易过度划分,剪枝就是为一棵决策树剪去多余的枝叶,避免出现过拟合。一般有两种方法:①预剪枝,在决策树生成过程中,估计每个节点在划分后的效果提升程度,决定是否接受当前的划分;②后剪枝,先生成一棵完整的决策树,然后自底向上逐个考察各个非叶子节点(最底下是叶子),评估它们能否替换为叶子节点,这种方式属于后剪枝。

缺陷与解决——决策树模型是单个预测器最大的问题是不稳定,有时训练样本集合的变化很小,但是生成的决策树会有很大差异。为此,人们将数以百计的决策树模型组合起来,每次分类时随机选择树模型,形象称之为随机森林算法。随机森林中每棵树模型的层数较少,分类精度不会要求太高,但是组合起来也会表现出很好的预测结果


续下篇...

上面介绍了回归、分类两种类型,下篇接着聚类、降维、时间序列等算法!

往期精彩:

【AI底层逻辑】——篇章3(下):信息交换&信息加密解密&信息中的噪声

【AI底层逻辑】——篇章3(上):数据、信息与知识&香农信息论&信息熵

【机器学习】——续上:卷积神经网络(CNN)与参数训练

【AI底层逻辑】——篇章1&2:统计学与概率论&数据“陷阱”

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

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

相关文章

IT技术培训班:搭乘学习快车的抉择

引言&#xff1a; 在IT技术学习的道路上&#xff0c;我们常常会被推荐各种五花八门的技术培训班。它们通过各种宣传手段向我们展示着美好的未来和无限的机会。然而&#xff0c;我们又应该如何看待这些培训班呢&#xff1f;在培训班里学技术真的有用吗&#xff1f;本文将从不同角…

【Java进阶之路】HashMap源码分析(JDK1.8)

概述 JDK 1.8 对 HashMap 进行了比较大的优化&#xff0c;底层实现由之前的 “数组链表” 改为 “数组链表红黑树”&#xff0c;本文就 HashMap 的几个常用的重要方法和 JDK 1.8 之前的死循环问题展开学习讨论。 JDK 1.8 的 HashMap 的数据结构如下图所示&#xff0c;当链表节…

Docker 替代方案:适用于 SaaS 应用程序的 10 种 Docker 替代方案

Docker技术已经在基础设施管理领域引起了革命性的变化&#xff0c;以至于Docker现在已经成为容器的代名词。重要的是要理解&#xff0c;所有的Docker都是容器&#xff0c;但并非所有的容器都是Docker。虽然Docker是最常用的容器技术&#xff0c;但还有其他几种替代Docker的选择…

积分兑换小程序项目总结

1. 项目概述 背景&#xff1a;中标项目&#xff0c;第三方公司做会员福利&#xff0c;以积分的形式发放。目标&#xff1a;给固定的钱&#xff0c;积分兑完&#xff0c;周期两个月。需求&#xff1a;固定会员能及时线上兑换积分。解决方案&#xff1a;开发微信小程序在线兑换。…

Nexpose v6.6.203 for Linux Windows - 漏洞扫描

Nexpose v6.6.203 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, Release Jul 05, 2023 请访问原文链接&#xff1a;https://sysin.org/blog/nexpose-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

【吴恩达】prompt engineering(原则 迭代 文本概括 推断、订餐机器人)

简介 Introduction 基础的LLM训练的模型&#xff0c;问法国的首都什么&#xff0c;可能会将答案预测为“法国最大的城市是什么&#xff0c;法国的人口是多少”许多 LLMs 的研究和实践的动力正在指令调整的 LLMs 上。指令调整的 LLMs 已经被训练来遵循指令。因此&#xff0c;如…

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡&#xff0c;天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真…

Android VNDK/VSDK Snapshot编译框架

1.背景 背景一&#xff1a; 为解决Android版本碎片化问题&#xff0c;引入Treble架构&#xff0c;它提供了稳定的新SoC供应商接口&#xff0c;引入HAL 接口定义语言&#xff08;HIDL/Stable AIDL&#xff0c;技术栈依然是Binder)&#xff0c;它指定了 vendor HAL 和system fram…

使用GPU进行大规模并行仿真,解决强化学习采样瓶颈:CPU、GPU架构以及原理详解

强化学习的落地应用场景,我认为可以是仿真环境仿真程度高,且仿真速度快的任务场景。而这篇帖子将会将:使用 GPU 进行大规模并行仿真,解决强化学习采样瓶颈。并直接举出三个例子,展示如何对原有的仿真环境进行修改,让它们适应 GPU 并行加速。 1.强化学习论文背后的仿真环…

用 GPU 并行环境 Isaac Gym + 强化学习库 ElegantRL:训练机器人Ant,3小时6000分,最高12000分

前排提醒,目前我们能 “用 ppo 四分钟训练 ant 到 6000 分”,比本文的 3 小时快了很多很多,有空会更新代码 https://blog.csdn.net/sinat_39620217/article/details/131724602 介绍了 Isaac Gym 库 如何使用 GPU 做大规模并行仿真,对环境模块提速。这篇帖子,我们使用 1 …

JMeter websocket接口测试

前言 在一个网站中&#xff0c;很多数据需要即时更新&#xff0c;比如期货交易类的用户资产。在以前&#xff0c;这种功能的实现一般使用http轮询&#xff0c;即客户端用定时任务每隔一段时间向服务器发送查询请求来获取最新值。这种方式的弊端显而易见&#xff1a; 有可能造…

docker仓库,搭建registry仓库

什么是仓库 docker仓库是用来包含镜像的位置,docker提供一个注册服务器registry来保存多个仓库,每个仓库又可以包含多个具备不同的镜像。docker运行中使用的默认仓库是docker hub公共仓库 docker hubdocker push username/busybox:latest docker hub是docker公司维护的公共仓…

java项目之电影院售票网站(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的电影院售票网站。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&a…

pytest 禁用警告信息(忽略警告信息输出)

如图示例代码&#xff0c;提示test_001这个case 存在警告 新增pytest.ini 配置文件 [pytest] filterwarnings errorignore::UserWarning

MIT 6.S081 Lab 11 -- NetWork -- 上

MIT 6.S081 Lab 11 -- NetWork -- 上 引言Network背景你的工作(hard)提示 Lab 解析E1000 网卡重点内容官方手册摘录3.2 Packet Reception3.3 Packet Transmission 小结 引言 本文为 MIT 6.S081 2020 操作系统 实验十一解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作…

CPU之IPC相关

什么是IPC&#xff1f; IPCInstructionUnhaltedCyclethread Instruction&#xff0c;即某个固定时间段内系统完成的指令数&#xff0c;考虑到系统中任何形式的应用都是由指令完成&#xff0c;且在不修改应用&#xff08;代码逻辑&#xff09;的前提下完成固定的任务所需的指令…

关于godot游戏引擎中常见的小数除以大数结果为0的问题

这种问题常见于求百分比的需求。 如&#xff1a;5/100 &#xff0c; 6/120 &#xff0c;前面的数小&#xff0c;后面的数字大 这种情况下&#xff0c;可以使用5.0/100 来进行解决&#xff0c;或者 5.0/100.0 或者6.0 / 120 或者 6.0/120.0 关于这个细节&#xff0c;余数为0…

基于SpringBoot+vue的心灵治愈交流平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

如何选择企业加密软件? 如何选择一款最好用的企业加密软件?

在当今信息时代&#xff0c;企业面临着越来越多的数据安全威胁。为了保护企业的敏感信息和数据资产&#xff0c;选择一款好用的企业加密软件至关重要。本文将从功能、安全性、用户体验和市场口碑等方面&#xff0c;为您介绍几款备受推崇的企业加密软件&#xff0c;帮助您选择适…

探索字符与字符串:基本库函数的使用(一)

目录 前言 函数介绍 strlen strcpy strcat strcmp strncpy strncat strncmp strstr strtok 总结 前言 感谢您阅读我的博客。在本期文章中&#xff0c;我将为您介绍一些常用的字符和字符串处理函数&#xff0c;并提供一些注意事项和实现方法。 本期我们将会对以下库函数进行重点…