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

目录

引入

一、何为机器学习

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.mzph.cn/news/1386.shtml

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

相关文章

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

设计模式 ~ 单例模式

单例模式 单例模式是一种设计模式&#xff0c;指在确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例&#xff1b; 前端对于单例模式不常用&#xff0c;但是单例的思想无处不在&#xff1b; 创建之后缓存以便继续使用&#xff1b; 如&#xff1a;弹窗、遮罩…

【Python】json 格式转换 ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )

文章目录 一、json 格式转换1、json 模块使用2、代码示例分析 - 列表转 json3、代码示例分析 - 字典转 json json 格式 字符串 与 Python 中的 字典 dict 和 列表 list 变量 可以无缝转换 ; 调用 json.dumps 函数 可以将 Python 列表 / 字典 转为 json ;调用 json.loads 函数 …

Elasticsearch 中的矢量搜索:设计背后的基本原理

作者&#xff1a;Adrien Grand 你是否有兴趣了解 Elasticsearch 用于矢量搜索&#xff08;vector search&#xff09;的特性以及设计是什么样子&#xff1f; 一如既往&#xff0c;设计决策有利有弊。 本博客旨在详细介绍我们如何选择在 Elasticsearch 中构建矢量搜索。 矢量搜索…

python和django中安装mysqlclient失败的解决方案

在Pychram中和pip中安装mysqlclient都不成功&#xff0c;只能直接下载二进制包进行安装了&#xff0c;下载页面中根据python的版本选择对应WHL包下载&#xff0c;下载地址 mysqlclient PyPIhttps://pypi.org/project/mysqlclient/#files 通过pip命令进行安装 pip install d:\…

考研线性代数考点总结

一.行列式 1.数字型行列式 数字行列式的计算含零子式的分块计算 2.行列式的性质 |A||A^T|交换行列&#xff0c;行列式的值变号含公因子的提出或乘进去把某行的K倍加到另一行&#xff0c;行列式的值不变。行列式可以根据某一行或某一列分拆 3.抽象行列式 n阶或高阶行列式 常…

《微服务架构设计模式》第十三章 微服务架构的重构策略

微服务架构的重构策略 一、重构到微服务需要考虑的问题1、为什么重构2、重构形式3、重构策略 二、设计服务与单体的协作方式三、总结 一、重构到微服务需要考虑的问题 1、为什么重构 单体地狱造成的业务问题&#xff1a; 交付缓慢充满故障的软件交付可扩展性差 2、重构形式 …

Visual Studio 向工程中添加现有文件夹

前言&#xff1a; 在创建C#类库&#xff08;dll&#xff09;工程后&#xff0c;需要把现有的C#文件添加进工程中 步骤1.将所有文件夹复制到工程中 步骤2. 点击这个图标&#xff0c;显示所有文件夹 工程目录下的所有文件夹都会被显示出来 选中需要添加的文件夹&#xff0c;右…

Linux安装MongoDB数据库,并内网穿透远程连接

文章目录 前言1. 配置Mongodb源2. 安装MongoDB3. 局域网连接测试4. 安装cpolar内网穿透5. 配置公网访问地址6. 公网远程连接7. 固定连接公网地址8. 使用固定地址连接 前言 MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&…

虚拟化容器化与docker

虚拟化容器化与docker 基本概念虚拟化分类虚拟化实现主机虚拟化实现容器虚拟化实现命名空间namespace空间隔离 控制组群cgroup资源隔离 LXC(Linux Container) docker与虚拟机 基本概念 物理机&#xff1a; 实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理…

初识Redis——Redis概述、安装、基本操作

目录 一、NoSQL介绍 1.1什么是NoSQL 1.2为什么会出现NoSQL技术 1.3NoSQL的类别 1.4传统的ACID是什么 1.5 CAP 1.5.1 经典CAP图 1.5.4 什么是BASE 二、Redis概述 2.1 什么是Redis 2.2 Redis能干什么 2.3 Redis的特点 2.4 Redis与memcached对比 2.5 Redis的安装 2.6 Docker安装 三…

二、学习回归 - 基于广告费预测点击量

山外风雨三尺剑 有事提剑下山去 云中花鸟一屋书 无忧翻书圣贤来 1.设置问题 以Web广告和点击量的关系为例来学习回归。 前提&#xff1a;投入的广告费越多&#xff0c;广告的点击量就越高。 根据以往的经验数据&#xff0c;可以得到下图&#xff1a; 那么假设我要投200块的广…

SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论 有监督的分类任务实现 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D x∈RD 的深度神经网络 Φ Φ Φ &#xff0c;即 x Φ ( I ) x Φ ( I ) xΦ(I)。使用有N个样本 I 1 , … , I N I_1 , … , I_N I1​,…,IN​, 且具有标签 y 1 , … , y N ∈ { 1 , … , K }…

Office如何通过VSTO进行WORD插件开发?

文章目录 0.引言1.工具准备2.WORD外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO&#xff08;Visual Studio Tools for Office &#xff09;是VBA的替代&#xff0c;是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…

华为ospf路由协议在局域网中的高级应用案例

关键配置&#xff1a; 1、出口为ospf区域0&#xff0c;下联汇聚依次区域1、2…&#xff0c;非骨干全部为完全nssa区域 2、核心&#xff08;abr&#xff09;上对非骨干区域进行路由汇总&#xff0c;用于解决出口两台路由的条目数量 3、ospf静默接口配置在汇聚下联接接入交换机的…

在Microsoft Excel中如何快速将上下两行数据合并为一行?

合并单元格是电子表格初学者最常用的选项之一。当一组单元格、行或列需要标题或标签时,合并单元格是一种常用的技术。 合并单元格时,仅保留区域左上角单元格中的值或公式,并将其显示在合并后的单元格中。将丢弃任何其他值或公式,那么如何在新的空白单元格中将两行数据合并…

基于FPGA的按键消抖

文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四&#xff1a;总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动&#xff1a;按键抖动通常的按键所用开关为机械弹性开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性…

Makefile学习笔记

Makefile思想&#xff1a; 一个简单的 Makefile 文件包含一系列的“规则”&#xff0c;其样式如下&#xff1a; 目标&#xff1a;依赖 tab命令 例如&#xff1a; test : main.c sub.c sub.h gcc -o test main.c sub.c如果“依赖文件”比“目标文件”更加新&#xff0c;那么执…

如何保证消息的可靠性+延迟队列(TTL+死信队列+延迟队列)

目录 1.如何保证消息的可靠性 1.1.消息的可靠投递 confirm机制 return机制 1.2.如何保证消息在队列中不丢失 1.3.确保消息能可靠的被消费掉 2.延迟队列 2.1.TTL 2.2.死信队列 2.3.延迟队列 3.如何防止消费者重复消费消息 1.如何保证消息的可靠性 1.1.消息的可靠投递…

Ajax详解

文章目录 1. 概述1.1 Ajax工作原理1.2 Ajax的作用1.3 同步异步 2. 原生Ajax3. Axios3.1 Axios的基本使用3.2 Axios快速入门3.3 请求方法的别名 1. 概述 Ajax 是 “Asynchronous JavaScript and XML”&#xff08;异步 JavaScript 和 XML&#xff09;的缩写。它是一种在无需重新…