机器学习算法的分类

机器学习算法大致可以分为三类:

  • 监督学习算法 (Supervised Algorithms):在监督学习训练过程中,可以由训练数据集学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。该算法要求特定的输入/输出,首先需要决定使用哪种数据作为范例。例如,文字识别应用中一个手写的字符,或一行手写文字。主要算法包括神经网络、支持向量机、最近邻居法、朴素贝叶斯法、决策树等。

  • 无监督学习算法 (Unsupervised Algorithms):这类算法没有特定的目标输出,算法将数据集分为不同的组。

  • 强化学习算法 (Reinforcement Algorithms):强化学习普适性强,主要基于决策进行训练,算法根据输出结果(决策)的成功或错误来训练自己,通过大量经验训练优化后的算法将能够给出较好的预测。类似有机体在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。在运筹学和控制论的语境下,强化学习被称作“近似动态规划”(approximate dynamic programming,ADP)。

  • 特点监督学习无监督学习
    数据特性数据带有标签或期望输出数据无标签
    学习目标学习输入输出映射关系,用于预测未知数据的输出(如分类或回归)发现数据的内在结构和模式(如聚类、降维等)
    学习过程利用标记数据进行训练,模型通过比较预测输出和真实标签来调整参数无标记数据,模型直接分析数据特征,发现模式和结构
    常见算法分类算法:决策树、支持向量机、朴素贝叶斯等;回归算法:线性回归、岭回归等聚类算法:k - 均值、层次聚类等;降维算法:主成分分析(PCA)、线性判别分析(LDA)等
    应用场景分类任务:垃圾邮件识别、图像分类等;回归任务:房价预测、股票价格预测等聚类任务:客户细分、文档聚类等;降维任务:数据可视化、特征工程等
监督学习算法
  1. 线性回归算法(Linear Regression):用于回归任务,通过拟合一条直线或超平面来预测连续值。
  2. 支持向量机算法(Support Vector Machine, SVM):用于分类任务,通过找到一个超平面来最大化不同类别之间的间隔。
  3. 最近邻居/k-近邻算法(K-Nearest Neighbors, KNN):用于分类和回归任务,通过查找训练集中最近的邻居来预测新样本的标签。
  4. 逻辑回归算法(Logistic Regression):用于分类任务,通过 logistic 函数将线性回归的输出映射到概率值。
  5. 决策树算法(Decision Tree):用于分类和回归任务,通过构建树形结构来进行决策。
  6. 随机森林算法(Random Forest):用于分类和回归任务,是一种集成学习方法,通过构建多个决策树并综合它们的结果来进行预测。
  7. 朴素贝叶斯算法(Naive Bayes):用于分类任务,基于贝叶斯定理,并假设特征之间相互独立。
无监督学习算法
  1. k-平均算法(K-Means):用于聚类任务,将数据集划分为 k 个簇,每个簇由其均值表示。
  2. 降维算法(Dimensional Reduction):包括主成分分析(PCA)、t-SNE 等,用于减少数据的特征维度,常用于数据可视化和特征工程。

1. 线性回归算法 Linear Regression

回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况。

线性回归算法(Linear Regression)的建模过程就是使用数据点来寻找最佳拟合线。公式,y = mx + c,其中 y 是因变量,x 是自变量,利用给定的数据集求 m 和 c 的值。
线性回归又分为两种类型,即
简单线性回归(simple linear regression),只有 1 个自变量;*多变量回归(multiple regression),至少两组以上自变量。

img

公式

线性回归的公式通常表示为:
y = m ⋅ x + c \ y = m \cdot x + c \  y=mx+c 
其中:

  • ( y ) 是因变量(我们想要预测的值)。
  • ( x ) 是自变量(用于预测 ( y ) 的值)。
  • ( m ) 是斜率,表示 ( x ) 变化一个单位时 ( y ) 的变化量。
  • ( c ) 是截距,表示当 ( x = 0 ) 时 ( y ) 的值。

在多变量线性回归中,公式可以扩展为:
y = m 1 ⋅ x 1 + m 2 ⋅ x 2 + … + m n ⋅ x n + c \ y = m_1 \cdot x_1 + m_2 \cdot x_2 + \ldots + m_n \cdot x_n + c \  y=m1x1+m2x2++mnxn+c 
其中
x 1 , x 2 , … , x n \ x_1, x_2, \ldots, x_n \  x1,x2,,xn 
是多个自变量,
m 1 , m 2 , … , m n \ m_1, m_2, \ldots, m_n \  m1,m2,,mn 
是对应的系数。

例子

假设有如下数据集,描述了房屋面积(平方米)与房价(万元)之间的关系:

房屋面积(( x ))房价(( y ))
5060
7080
90100
110120
130140

我们想找到一条直线来描述房屋面积和房价之间的关系,以便预测新房屋的房价。

简单线性回归

在这个例子中,我们只有一个自变量(房屋面积),因此使用简单线性回归。

  1. 计算平均值

    • x ˉ = 50 + 70 + 90 + 110 + 130 5 = 90 \ \bar{x} = \frac{50 + 70 + 90 + 110 + 130}{5} = 90 \  xˉ=550+70+90+110+130=90 

    • b a r y = 60 + 80 + 100 + 120 + 140 5 = 100 \\bar{y} = \frac{60 + 80 + 100 + 120 + 140}{5} = 100 \ bary=560+80+100+120+140=100 

  2. 计算斜率(( m ))
    m = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 \ m = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \  m=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ) 
    代入数据:
    m = ( 50 − 90 ) ( 60 − 100 ) + ( 70 − 90 ) ( 80 − 100 ) + ( 90 − 90 ) ( 100 − 100 ) + ( 110 − 90 ) ( 120 − 100 ) + ( 130 − 90 ) ( 140 − 100 ) ( 50 − 90 ) 2 + ( 70 − 90 ) 2 + ( 90 − 90 ) 2 + ( 110 − 90 ) 2 + ( 130 − 90 ) 2 \ m = \frac{(50-90)(60-100) + (70-90)(80-100) + (90-90)(100-100) + (110-90)(120-100) + (130-90)(140-100)}{(50-90)^2 + (70-90)^2 + (90-90)^2 + (110-90)^2 + (130-90)^2} \  m=(5090)2+(7090)2+(9090)2+(11090)2+(13090)2(5090)(60100)+(7090)(80100)+(9090)(100100)+(11090)(120100)+(13090)(140100) 
    计算分子和分母:

    • 分子:
      ( − 40 ) ( − 40 ) + ( − 20 ) ( − 20 ) + ( 0 ) ( 0 ) + ( 20 ) ( 20 ) + ( 40 ) ( 40 ) = 1600 + 400 + 0 + 400 + 1600 = 4000 \ (-40)(-40) + (-20)(-20) + (0)(0) + (20)(20) + (40)(40) = 1600 + 400 + 0 + 400 + 1600 = 4000 \  (40)(40)+(20)(20)+(0)(0)+(20)(20)+(40)(40)=1600+400+0+400+1600=4000 

    • 分母:
      KaTeX parse error: Can't use function '\(' in math mode at position 2: \̲(̲-40)^2 + (-20)^…

    • 斜率:
      m = 4000 4000 = 1 \ m = \frac{4000}{4000} = 1 \  m=40004000=1 

  3. 计算截距(( c ))
    c = y ˉ − m ⋅ x ˉ = 100 − 1 ⋅ 90 = 10 \ c = \bar{y} - m \cdot \bar{x} = 100 - 1 \cdot 90 = 10 \  c=yˉmxˉ=100190=10 

  4. 回归方程
    y = 1 ⋅ x + 10 \ y = 1 \cdot x + 10 \  y=1x+10 

预测

现在,我们可以使用这个方程来预测新房屋的房价。例如,如果房屋面积是 100 平方米,预测的房价为:
y = 1 ⋅ 100 + 10 = 110 万元  \ y = 1 \cdot 100 + 10 = 110 \text{ 万元} \  y=1100+10=110 万元 

多变量线性回归

如果数据集中包含多个自变量,例如房屋面积和房间数量,我们使用多变量线性回归:

房屋面积(( x_1 ))房间数量(( x_2 ))房价(( y ))
50260
70380
904100
1105120
1306140
  1. 建立模型
    y = m 1 ⋅ x 1 + m 2 ⋅ x 2 + c \ y = m_1 \cdot x_1 + m_2 \cdot x_2 + c \  y=m1x1+m2x2+c 

  2. 使用线性回归算法(如梯度下降或最小二乘法)来求解 ( m_1 )、( m_2 ) 和 ( c )。

  3. 预测:使用求得的参数来预测新房屋的房价。

通过这个简单的例子,可以看出线性回归如何通过拟合数据点来建立预测模型。

2. 支持向量机算法(Support Vector Machine,SVM)

支持向量机(SVM)是一种用于分类任务的监督学习算法。它的基本思想是将数据点映射到高维空间中,并找到一个最优的超平面分隔不同类别的数据点。这个超平面的选择不仅要正确分类训练数据,还要最大化与最近数据点(支持向量)之间的距离,以提高模型的泛化能力。需要注意的是,支持向量机需要对输入数据进行完全标记,仅直接适用于二分类任务,应用将多类任务需要减少到几个二元问题。

img

举例说明

假设有如下数据集,描述了两类不同类别的点,用 xy 表示两个特征:

表格

复制

xy类别
12A
23A
33A
67B
78B
89B

我们的目标是找到一个超平面来分隔类别 A 和类别 B。

线性可分情况
  1. 数据可视化

    • 将数据点绘制在二维平面上,类别 A 的点分布在左边,类别 B 的点分布在右边。
  2. 寻找最优超平面

    • SVM 会找到一个超平面,使得这个超平面与最近的类别 A 和类别 B 的点之间的距离最大化。

    • 假设找到的最优超平面方程为:

      w1x+w2y+b=0

    • 支持向量是那些离超平面最近的点,例如类别 A 中的点 (3, 3) 和类别 B 中的点 (6, 7)。

  3. 间隔计算

    • 计算支持向量到超平面的距离,并最大化这个距离。
  4. 分类决策

    • 对于新的数据点,根据其在超平面的哪一侧来判断其类别。
非线性可分情况

假设数据集如下,描述了两类不同类别的点,但这些点在二维空间中无法用一条直线分隔:

表格

复制

xy类别
11A
22A
33A
24B
35B
46B
  1. 数据可视化

    • 将数据点绘制在二维平面上,类别 A 的点分布在左下角,类别 B 的点分布在右上角,但无法用一条直线分隔。
  2. 核技巧

    • 使用径向基函数核(RBF)将数据映射到高维空间中,使其在高维空间中线性可分。

    • RBF 核函数定义为:

      K(x,x′)=exp(−γxx′∥2)

      其中,γ 是核函数的参数,控制映射到高维空间的程度。

  3. 寻找最优超平面

    • 在高维空间中找到一个超平面来分隔数据点。
    • 支持向量是那些离超平面最近的点。
  4. 分类决策

    • 对于新的数据点,将其映射到高维空间后,根据其在超平面的哪一侧来判断其类别。

3. 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)

KNN算法是一种基于实例的学习,或者是局部近似和将所有计算推迟到分类之后的惰性学习。用最近的邻居(k)来预测未知数据点。k 值是预测精度的一个关键因素,无论是分类还是回归,衡量邻居的权重都非常有用,较近邻居的权重比较远邻居的权重大

KNN 算法的缺点是对数据的局部结构非常敏感。计算量大,需要对数据进行规范化处理,使每个数据点都在相同的范围。

img

  • KNN 也可以用于回归问题。例如,我们有一组房屋,的数据包括房屋的面积、房龄等特征以及房价(目标变量)。当我们想要预测一套新房子的价格时,就找到训练集中与新房子在面积和房龄等方面最相似的 k 个房子,然后取这 k 个房子价格的平均值作为新房子的预测价格。不过,回归问题中的 KNN 实现细节和应用场景相对分类问题有所不同,主要在于输出结果是从连续值中预测而不是分类标签。

4. 逻辑回归算法 Logistic Regression

逻辑回归是一种用于解决二分类问题的监督学习算法(也可以通过一些扩展方法用于多分类)。它的目标是找到一个决策边界,将不同类别的数据点分开。例如,在一个二维平面上,这可能是一条直线或曲线,用于区分两类样本。

逻辑回归算法(Logistic Regression)一般用于需要明确输出的场景,如某些事件的发生(预测是否会发生降雨)。通常,逻辑回归使用某种函数将概率值压缩到某一特定范围。

逻辑回归模型的输出是一个概率值,表示样本属于某个类别的概率。这个概率值通过逻辑函数(也称为 sigmoid 函数)来计算。逻辑函数的数学表达式为:

img

其中 z 是线性组合(如 z=θ0+θ1x1+θ2x2+⋯+θnx**n)。

img
在这里插入图片描述

5.决策树算法 Decision Tree

决策树(Decision tree)是一种特殊的树结构,由一个决策图和可能的结果(例如成本和风险)组成,用来辅助决策。机器学习中,决策树是一个预测模型,树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,通常该算法用于解决分类问题。

一个决策树包含三种类型的节点:

  1. 决策节点:通常用矩形框来表示
  2. 机会节点:通常用圆圈来表示
  3. 终结点:通常用三角形来表示

​ 简单决策树算法案例,确定人群中谁喜欢使用信用卡。考虑人群的年龄和婚姻状况,如果年龄在30岁或是已婚,人们更倾向于选择信用卡,反之则更少。
通过确定合适的属性来定义更多的类别,可以进一步扩展此决策树。在这个例子中,如果一个人结婚了,他超过30岁,他们更有可能拥有信用卡(100% 偏好)。测试数据用于生成决策树。
img

img

总结

算法名称基本原理优点缺点适用场景
线性回归通过拟合一条直线或多维超平面来预测连续值。简单易懂,计算高效。只能处理线性关系,对异常值敏感。回归任务,如房价预测。
支持向量机(SVM)在高维空间中寻找一个最优超平面来分隔不同类别的数据点。分类效果好,泛化能力强。对参数选择敏感,计算复杂度高。分类任务,尤其是高维数据。
K-近邻(KNN)基于最近的邻居来预测未知数据点的类别或值。简单易懂,适用于非线性数据。计算量大,对数据局部结构敏感。分类和回归任务。
逻辑回归通过逻辑函数将线性回归的输出映射到概率值,用于二分类问题。模型可解释性强。假设特征独立,可能不适用于强相关特征数据。二分类任务,如垃圾邮件识别。
决策树通过构建树形结构来进行决策,每个节点表示某个属性的测试。模型可解释性强,能处理非线性关系。容易过拟合,对数据波动敏感。分类任务,如客户细分。

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

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

相关文章

正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真

目录 Multisim使用教程说明链接 一、正弦波信号发生电路 1.1正弦波发生电路 电路组成 工作原理 振荡频率 1.2 正弦波发生电路仿真分析 工程文件链接 二、方波信号发生电路 2.1 方波发生电路可调频率 工作原理 详细过程 2.2 方波发生电路可调频率/可调占空比 调节占空比 方波产生…

【AND-OR-~OR锁存器设计】2022-8-31

缘由锁存器11111111111-硬件开发-CSDN问答 重置1,不论输入什么,输出都为0; 重置0,输入1就锁住1 此时输入再次变为0,输出不变,为锁住。

力扣-字符串-468 检查ip

思路 考察字符串的使用,还有对所有边界条件的检查 spilt(“\.”),toCharArray,Integer.parseInt() 代码 class Solution {boolean checkIpv4Segment(String str){if(str.length() 0 || str.length() > 4) retur…

BC8 十六进制转十进制

题目:BC8 十六进制转十进制 描述 BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。 输入描述: 无 输出描述: 十六进制整数ABCDEF对应的十进制整数,所占域宽为15。 备注: printf可以使用…

ARM子程序和栈

微处理器中的栈由栈指针指向存储器中的栈顶来实现,当数据项入栈时,栈 指针向上移动,当数据项出栈时,栈指针向下移动。 实现栈时需要做出两个决定:一是当数据项进栈时是向低位地址方向向上生 长(图a和图b&a…

jwt身份验证和基本的利用方式

前言 : 什么是jwt(json web token)? 看看英文单词的意思就是 json形式的token 他的基本的特征 : 类似于这样的 他有2个点 分割 解码的时候会有三个部分 头部 payload 对称密钥 这个就是对称加密 头部&am…

n8n工作流自动化平台的实操:利用本地嵌入模型,完成文件内容的向量化及入库

1.成果展示 1.1n8n的工作流 牵涉节点:FTP、Code、Milvus Vector Store、Embeddings OpenAI、Default Data Loader、Recursive Character Text Splitter 12.向量库的结果 2.实操过程 2.1发布本地嵌入模型服务 将bge-m3嵌入模型,发布成满足open api接口…

MATLAB人工大猩猩部队GTO优化CNN-LSTM多变量时间序列预测

本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0 引言 1 数据准备 2 CNN-LSTM模型搭建 3 GTO超参数优化 3.1 GTO函数极值寻优 3.2 GTO优化CNN-LSTM超参数 3.3 主程序 4 结语 0 引言…

git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit

之前git都是全新项目上传,没有迁移过,因为迁移的话要考虑已有项目上的分支都要迁移过去,提交记录能迁移就好;分支如果按照全新项目上传的方式需要新git手动创建好老git已有分支,在手动一个一个克隆老项目分支代码依次提…

Photo-SLAM论文理解、环境搭建、代码理解与实测效果

前言:第一个解耦式Photo-SLAM,亮点和效果。 参考:https://zhuanlan.zhihu.com/p/715311759 全网最细PhotoSLAM的conda环境配置教程,拒绝环境污染!!-CSDN博客 1. 环境搭建 硬件:RTX 4090D wi…

如何使用VSCode编写C、C++和Python程序

一、首先准备好前期工作。如下载安装Python、VSCode、一些插件等。写代码之前需要先创建文件夹和文件。 二、将不同语言写的代码放在不同的文件夹中,注意命名时不要使用中文。 三、打开VSCode,点击“文件”->“打开文件夹”->“daimalainxi”->…

基于不确定性感知学习的单图像自监督3D人体网格重建 (论文笔记与思考)

文章目录 论文解决的问题提出的算法以及启发点 论文解决的问题 首先这是 Self-Supervised 3D Human mesh recovery from a single image with uncertainty-aware learning (AAAI 2024)的论文笔记。该文中主要提出了一个自监督的framework用于人体的姿态…

Leetcode刷题记录33——二叉树的最小深度

题源:https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 题目描述: 思路一: 使用 DFS 递归遍历的解法,每当遍历到一条树枝的叶子节点,就会更新最小深度,当遍历完整棵树后&#x…

有效的括号(20)

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:bool isValid(string s) {unordered_map<char, char> m {{), (}, {],[}, {}, {}};stack<char> stk;for (int i 0; i < s.size(); i) {if (s[i] ( || s[i…

电子邮件相关协议介绍

0 Preface/Foreword 1 协议介绍 电子邮件包含的主要协议&#xff1a; SMTPPOPIMAP 1.1 SMPT SMPT: Simple Mail Transfer Protocol&#xff0c;电子邮件传输的标准协议&#xff0c;负责将邮件从发送方传输到接收方邮件服务器。 1.2 POP POP&#xff1a; Post Office Protoc…

Linux压缩和解压类

一、gzip/gunzip 压缩 1、基本语法 gzip 文件 &#xff08;功能描述&#xff1a;压缩文件&#xff0c;只能将文件压缩为*.gz文件&#xff09; gunzip 文件.gz &#xff08;功能描述&#xff1a;解压缩文件命令&#xff09; 2、经验技巧 &#xff08;1&#…

力扣hot100 (除自身以外数组的乘积)

238. 除自身以外数组的乘积 中等 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除…

什么是“系统调用”

一、什么是“系统调用”&#xff1f;用生活中的比喻理解 可以把“系统调用”比作你&#xff08;用户&#xff09;向“管理员”请求帮助完成某件事情的过程。 举个例子&#xff1a; 你想借书&#xff0c;去图书馆&#xff08;操作系统&#xff09;找管理员&#xff08;内核&a…

三维重建(二十一)——第二步和第三步

文章目录 一、上一篇5.3.1 train-185.3.2 test-193二、第二步:自己重新写一个代码,利用RTK的参数,成功的和gshell的渲染图片一样2.1 只能单独一个图片,并且需要调整输入pose\内参问题描述可能原因2.2 批量输出问题描述可能原因解决方案重新检查代码发现错误2.3 成功三、第三…

n8n 中 No Operation 节点说明

n8n 中 No Operation 节点说明 当"什么都不做"也是一种设计:n8n No Operation 节点深度解析一、No Operation节点是什么?二、为什么需要"空节点"?1. 流程可视化注释2. 调试占位符3. 流程拓扑优化三、实战应用场景场景1:审批流程占位四、设计哲学思考五…