【机器学习】各大模型原理简介

目录

⛳️推荐

前言

一、神经网络(联结主义)类的模型

二、符号主义类的模型

三、决策树类的模型

四、概率类的模型

五、近邻类的模型

六、集成学习类的模型


⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

前言

通俗来说,机器学习模型就是一种数学函数,它能够将输入数据映射到预测输出。更具体地说,机器学习模型就是一种通过学习训练数据,来调整模型参数,以最小化预测输出与真实标签之间的误差的数学函数

机器学习中的模型有很多种,例如逻辑回归模型、决策树模型、支持向量机模型等,每一种模型都有其适用的数据类型和问题类型。同时,不同模型之间存在着许多共性,或者说有一条隐藏的模型演化的路径。

以联结主义的感知机为例,通过增加感知机的隐藏层数,我们可以将其转化为深度神经网络。而对感知机加入核函数就可以转化为SVM。这一过程可以直观地展示了不同模型之间的内在联系,以及模型间的转化可能。按照相似点,我粗糙(不严谨)地将模型分为如下6个大类,以方便发现基础的共性,逐个深入剖析!

一、神经网络(联结主义)类的模型

联结主义类模型是一种模拟人脑神经网络结构和功能的计算模型。其基本单元是神经元,每个神经元接收来自其他神经元的输入,通过调整权重来改变输入对神经元的影响。神经网络是一个黑箱子,通过多层的非线性隐藏层的作用,可以达到万能近似的效果。

图片

代表模型有DNN、SVM、Transformer、LSTM,某些情况下,深度神经网络的最后一层可以看作是一个逻辑回归模型,用于对输入数据进行分类。而支持向量机也可以看作是特殊类型的神经网络,其中只有两层:输入层和输出层,SVM额外地通过核函数实现复杂的非线性转化,达到和深度神经网络类似的效果。如下为经典DNN模型原理解析:

深度神经网络(Deep Neural Network,DNN)由多层神经元组成,通过前向传播过程,将输入数据传递到每一层神经元,经过逐层计算得到输出。每一层神经元都会接收上一层神经元的输出作为输入,并输出到下一层神经元。DNN的训练过程是通过反向传播算法实现的。在训练过程中,计算输出层与真实标签之间的误差,并将误差反向传播到每一层神经元,根据梯度下降算法更新神经元的权重和偏置项。通过反复迭代这个过程,不断优化网络参数,最终使得网络的预测误差最小化。

DNN的优点是强大的特征学习能力:DNN可以自动学习数据的特征,无需手动设计特征。高度非线性及强大的泛化能力。缺点是DNN需要大量的参数,这可能导致过拟合问题。同时DNN的计算量很大,训练时间长。且模型解释性较弱。以下是一个简单的Python代码示例,使用Keras库构建一个深度神经网络模型:

from keras.models import Sequential  
from keras.layers import Dense  
from keras.optimizers import Adam  
from keras.losses import BinaryCrossentropy  
import numpy as np  

# 构建模型  
model = Sequential()  
model.add(Dense(64, activation='relu', input_shape=(10,))) # 输入层有10个特征  
model.add(Dense(64, activation='relu')) # 隐藏层有64个神经元  
model.add(Dense(1, activation='sigmoid')) # 输出层有1个神经元,使用sigmoid激活函数进行二分类任务  

# 编译模型  
model.compile(optimizer=Adam(lr=0.001), loss=BinaryCrossentropy(), metrics=['accuracy'])  

# 生成模拟数据集  
x_train = np.random.rand(1000, 10) # 1000个样本,每个样本有10个特征  
y_train = np.random.randint(2, size=1000) # 1000个标签,二分类任务  

# 训练模型  
model.fit(x_train, y_train, epochs=10, batch_size=32) # 训练10个轮次,每次使用32个样本进行训练

二、符号主义类的模型

符号主义类的模型是一种基于逻辑推理的智能模拟方法,其认为人类是一个物理符号系统,计算机也是一个物理符号系统,因此,就可以用计算机的规则库和推理引擎来来模拟人的智能行为,即用计算机的符号操作来模拟人的认知过程(说白了,就是将人类逻辑存入计算机,达成智能执行)。

其代表模型有专家系统、知识库、知识图谱,其原理是将信息编码成一组可识别的符号,通过显式的规则来操作符号以产生运算结果。如下专家系统的简单示例:

# 定义规则库  
rules = [  
    {"name": "rule1", "condition": "sym1 == 'A' and sym2 == 'B'", "action": "result = 'C'"},  
    {"name": "rule2", "condition": "sym1 == 'B' and sym2 == 'C'", "action": "result = 'D'"},  
    {"name": "rule3", "condition": "sym1 == 'A' or sym2 == 'B'", "action": "result = 'E'"},  
]  
  
# 定义推理引擎  
def infer(rules, sym1, sym2):  
    for rule in rules:  
        if rule["condition"] == True:  # 条件为真时执行动作  
            return rule["action"]  
    return None  # 没有满足条件的规则时返回None  
  
# 测试专家系统  
print(infer(rules, 'A', 'B'))  # 输出: C  
print(infer(rules, 'B', 'C'))  # 输出: D  
print(infer(rules, 'A', 'C'))  # 输出: E  
print(infer(rules, 'B', 'B'))  # 输出: E

三、决策树类的模型

决策树模型是一种非参数的分类和回归方法,它利用树形图表示决策过程。更通俗来讲,树模型的数学描述就是“分段函数”。它利用信息论中的熵理论选择决策树的最佳划分属性,以构建出一棵具有最佳分类性能的决策树。

图片

决策树模型的基本原理是递归地将数据集划分成若干个子数据集,直到每个子数据集都属于同一类别或者满足某个停止条件。在划分过程中,决策树模型采用信息增益、信息增益率、基尼指数等指标来评估划分的好坏,以选择最佳的划分属性。

决策树模型的代表模型有很多,其中最著名的有ID3、C4.5、CART等。ID3算法是决策树算法的鼻祖,它采用信息增益来选择最佳划分属性;C4.5算法是ID3算法的改进版,它采用信息增益率来选择最佳划分属性,同时采用剪枝策略来提高决策树的泛化能力;CART算法则是分类和回归树的简称,它采用基尼指数来选择最佳划分属性,并能够处理连续属性和有序属性。

以下是使用Python中的Scikit-learn库实现CART算法的代码示例:


from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.tree import DecisionTreeClassifier, plot_tree  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 构建决策树模型  
clf = DecisionTreeClassifier(criterion='gini')  
clf.fit(X_train, y_train)  
  
# 预测测试集结果  
y_pred = clf.predict(X_test)  
  
# 可视化决策树  
plot_tree(clf)

四、概率类的模型

概率模型是一种基于概率论的数学模型,用于描述随机现象或事件的分布、发生概率以及它们之间的概率关系。概率模型在各个领域都有广泛的应用,如统计学、经济学、机器学习等。

概率模型的原理基于概率论和统计学的基本原理。它使用概率分布来描述随机变量的分布情况,并使用概率规则来描述事件之间的条件关系。通过这些原理,概率模型可以对随机现象或事件进行定量分析和预测。

图片

代表模型主要有:朴素贝叶斯分类器、贝叶斯网络、隐马尔可夫模型。其中,朴素贝叶斯分类器和逻辑回归都基于贝叶斯定理,它们都使用概率来表示分类的不确定性。

隐马尔可夫模型和贝叶斯网络都是基于概率的模型,可用于描述随机序列和随机变量之间的关系。

朴素贝叶斯分类器和贝叶斯网络都是基于概率的图模型,可用于描述随机变量之间的概率关系。

以下是使用Python中的Scikit-learn库实现朴素贝叶斯分类器的代码示例:

from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.naive_bayes import GaussianNB  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 构建朴素贝叶斯分类器模型  
clf = GaussianNB()  
clf.fit(X_train, y_train)  
  
# 预测测试集结果  
y_pred = clf.predict(X_test)

五、近邻类的模型

近邻类模型(本来想命名为距离类模型,但是距离类的定义就比较宽泛了)是一种非参数的分类和回归方法,它基于实例的学习不需要明确的训练和测试集的划分。它通过测量不同数据点之间的距离来决定数据的相似性。

以KNN算法为例,其核心思想是,如果一个样本在特征空间中的 k 个最接近的训练样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法基于实例的学习不需要明确的训练和测试集的划分,而是通过测量不同数据点之间的距离来决定数据的相似性。

代表模型有:k-近邻算法(k-Nearest Neighbors,KNN)、半径搜索(Radius Search)、K-means、权重KNN、多级分类KNN(Multi-level Classification KNN)、近似最近邻算法(Approximate Nearest Neighbor, ANN)

近邻模型基于相似的原理,即通过测量不同数据点之间的距离来决定数据的相似性。

除了最基础的KNN算法外,其他变种如权重KNN和多级分类KNN都在基础算法上进行了改进,以更好地适应不同的分类问题。

近似最近邻算法(ANN)是一种通过牺牲精度来换取时间和空间的方式,从大量样本中获取最近邻的方法。ANN算法通过降低存储空间和提高查找效率来处理大规模数据集。它通过“近似”的方法来减少搜索时间,这种方法允许在搜索过程中存在少量误差。

以下是使用Python中的Scikit-learn库实现KNN算法的代码示例:

from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.neighbors import KNeighborsClassifier  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 构建KNN分类器模型  
knn = KNeighborsClassifier(n_neighbors=3)  
knn.fit(X_train, y_train)  
  
# 预测测试集结果  
y_pred = knn.predict(X_test)

六、集成学习类的模型

集成学习(Ensemble Learning)不仅仅是一类的模型,更是一种多模型融合的思想,通过将多个学习器的预测结果进行合并,以提高整体的预测精度和稳定性。在实际应用中,集成学习无疑是数据挖掘的神器!

集成学习的核心思想是通过集成多个基学习器来提高整体的预测性能。具体来说,通过将多个学习器的预测结果进行合并,可以减少单一学习器的过拟合和欠拟合问题,提高模型的泛化能力。同时,通过引入多样性(如不同的基学习器、不同的训练数据等),可以进一步提高模型的性能。常用的集成学习方法有:

  • Bagging是一种通过引入多样性和减少方差来提高模型稳定性和泛化能力的集成学习方法。它可以应用于任何分类或回归算法。

  • Boosting是一种通过引入多样性和改变基学习器的重要性来提高模型性能的集成学习方法。它也是一种可以应用于任何分类或回归算法的通用技术。

  • stack堆叠是一种更高级的集成学习方法,它将不同的基学习器组合成一个层次结构,并通过一个元学习器对它们进行整合。堆叠可以用于分类或回归问题,并通常用于提高模型的泛化能力。

集成学习代表模型有:随机森林、孤立森林、GBDT、Adaboost、Xgboost等。以下是使用Python中的Scikit-learn库实现随机森林算法的代码示例:

from sklearn.ensemble import RandomForestClassifier  
from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
  
# 加载数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 构建随机森林分类器模型  
clf = RandomForestClassifier(n_estimators=100, random_state=42)  
clf.fit(X_train, y_train)  
  
# 预测测试集结果  
y_pred = clf.predict(X_test)

综上,我们通过将相似原理的模型归纳为各种类别,以此逐个类别地探索其原理,可以更为系统全面地了解模型的原理及联系。希望对大家有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统启动修复和SYSTEM丢失损坏故障处理

系统启动修复和SYSTEM丢失损坏故障处理 一、问题描述 你的电脑/设备需要修复。无法加载应用程序或操作系统,原因是所需文件丢失或包含错误。 文件:\Windows\system32\winload.exe 错误代码: 0xc000000e 二、问题分析 1.查询winload.exe是win7或者win10以上系统…

地方政府专项债发债全过程-梳理

地方政府专项债发债全过程-梳理 一、什么是专项债? 地方政府专项债券(以下简称“专项债券”),是指省、自治区、直辖市政府为有一定收益的公益性项目,发行的、约定一定期限内以公益性项目对应的,政府性基金…

ai写作软件哪个好,5款倍受好评的AI写作软件

ai写作软件哪个好,5款倍受好评的AI写作软件!在当今信息爆炸的时代,人们对于高效、智能的工具需求日益增加。AI写作软件因其独特的优势逐渐成为许多人的选择。但是在众多的AI写作软件中,究竟哪一款更胜一筹呢?下面将介绍5款倍受好评…

【每日一题】377. 组合总和 Ⅳ-2024.4.22

题目: 377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], t…

民航电子数据库:CAEMigrator迁移工具

目录 一、场景二、迁移步骤 一、场景 1、对接民航电子数据库 2、需要将mysql数据库迁移到民航电子数据库 3、使用CAEMigrator迁移工具 二、迁移步骤

世强硬创获昕感科技授权代理,SiC MOSFET实现超低导通电阻

近日,世强先进(深圳)科技股份有限公司(下称“世强先进”)获北京昕感科技有限责任公司(下称“昕感科技”,英文名:NEXIC)授权代理,为光伏、储能、电网、新能源汽…

NFT卡牌质押分红模式开发技术讲解分析

近年来,随着加密货币市场的快速发展,NFT(Non-Fungible Token,非同质化代币)作为一种独特的数字资产形式备受关注。其中,NFT卡牌质押分红模式是一种创新的应用场景,为用户提供了一种参与和投资的…

kubernetes中的副本控制器rc(replicationcontrollers)和rs(replicasets)

一、rc控制器replicationcontrollers rc控制器就是控制相同pod副本数量 使用rc控制器资源创建pod,设定创建pod资源的数量 1.1 案例 1.1.1、创建资源清单 [rootmaster rc-demo]# cat rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: rc01 …

刘月红女士:医药行业三十年砥砺前行,助力斐尔玫瑰妇科诊所共创辉煌

在医药行业历经三十载风雨的刘月红女士,以其丰富的经验和深刻的行业洞察力,为医药行业的稳健发展作出了积极的贡献。从医药零售到医药批发,再到开设中医诊所,以及为各大医院提供药品供货,刘月红女士的足迹遍布医药领域…

Linux 存储:NAND 写入异常案例 (1)

文章目录 1. 前言2. 案例背景3. 案例问题4. 案例分析4.1 普通文件写入流程概要4.2 dd 写 NAND 时,会不会使用 page cache ?4.3 dd 写 NAND 时,对比 U-Boot 读 NAND,是否采用了相同的坏块策略 ?4.3.1 U-Boot 读 NAND 过…

纽扣电池卖家注意!美国纽扣电池UL4200A标准更新

2023年9月21日,美国消费品安全委员会CPSC(Consumer Product Safety Commission) 决定采用UL 4200A-2023(包含纽扣电池或硬币电池的产品安全标准)作为包含纽扣电池或硬币电池的消费品的强制性消费品安全规则,相关要求同时被编入到1…

MultiCD工具:创建一个多引导Linux USB驱动器

众所周知,拥有一个可安装多个可用操作系统的 CD 或 USB 驱动器在各种情况下都非常有用。无论是为了快速测试或调试某些内容,还是只是重新安装笔记本电脑或 PC 的操作系统,这都可以为你节省大量时间。 在本文中,将介绍如何使用名为…

linux,从零安装nginx,并且部署vue应用程序

前言:系统使用龙蜥(8.5)的最小化安装,服务器安装这里不在赘述。 nginx 的版本:1.22.0 软件已经放在系统/home/software/ 一、安装nginx 进入路径/home/software/ 1》执行命令:rpm -ivh nginx-1.22.0-1.el7…

GDC 笔记

1 Title Diffusion Improves Graph Learning(Johannes Gasteiger, Stefan Weienberger, Stephan Gnnemann)【NeurIPS 2019】 2 Conclusion This study removes the restriction of using only the direct neighbors by introducing a powerful, yet spa…

OpenLayers6实战,OpenLayers实现鼠标拖拽方式绘制环形(四分之一圆环),OpenLayers特殊图形绘制

专栏目录: OpenLayers6实战进阶专栏目录 前言 本章讲解如何使用OpenLayers在地图上实现鼠标拖拽方式绘制环形(四分之一圆环)的功能。 环形是一种由两个弧线和连接线组成的特殊图形,实现起来是有一定难度的。 二、依赖和使用 "ol": "^6.15.1"使用npm…

Canal1--搭建Canal监听数据库变化

1.安装mysql 默认安装了mysql(版本8.0.x); 新创建用户 -- 创建用户 用户名:canal 密码:Canal123456 create user canal% identified by Canal123456;授权 grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on…

算法库应用-有序单链表插入节点

学习源头: 模仿贺利坚老师单链表排序文章浏览阅读5.9k次。  本文针对数据结构基础系列网络课程(2):线性表中第11课时单链表应用举例。例:拆分单链表 (linklist.h是单链表“算法库”中的头文件,详情单击链接…)//本程…

前端通过http请求访问本地图片

1、前端直接引用本地图片,图片加载失败 具体报错信息如下: Not allowed to load local resource不允许加载本地资源 2、针对以上问题,只需要利用拦截器将本机地址映射成url路径就行 具体代码如下 Configuration public class FileConfig i…

Android Studio实现内容丰富的安卓校园超市

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目代号168 1.开发环境 后端用springboot框架,安卓的用android studio开发 android stuido3.6 jdk1.8 idea mysql tomcat 2.功能介绍 安卓端: 1.注册…

区块链 | OpenSea:Toward Achieving Anonymous NFT Trading 一文的改进方案

🥑原文: Toward Achieving Anonymous NFT Trading 🥑吐槽: 这论文怎么老有描述不清、前后不一致的地方😇 正文 在本节中,我们将具体展示我们方案的构建。我们将基于一个示例来描述我们方案的工作流程&…