【机器学习】基础知识点的汇总与总结!更新中
文章目录
- 一、监督学习
- 1.1、单模型
- 1.1.1、线性回归
- 1.1.2、逻辑回归(Logistic Regression)
- 1.1.3、K近邻算法(KNN)
- 1.1.4、决策树
- 1.1.5、支持向量机(SVM)
- 1.1.6、朴素贝叶斯
- 1.2、集成学习
- 1.2.1、Boosting
- 1)Regression Decision Tree:回归树
- 2)Boosting Decision Tree:提升树算法
- 3)GBDT(Gradient Boosting Decision Tree):梯度提升决策树
- 4)XGBoost
- 1.2.2、Bagging — 随机森林
- 1.2.3、Stacking
- 二、无监督学习
- 2.1、聚类算法
- 2.1.1、K-means聚类
- 2.1.2、分层聚类
- 2.1.3、DBSCAN
- 2.2、降维(特征工程)
- 2.2.1、PCA主成分分析
- 2.2.2、SVD奇异值分解
- 2.2.3、LDA线性判别分析
机器学习按照是否有监督,我们可以做一个简单的划分,即分为监督学习和无监督学习两大类(只做了最简单的划分)
一、监督学习
- 监督学习是可以利用有标签的数据进行训练
- 因此,训练数据一定会有n个样本X和对应的n个标签GT,通过设计不同的机器学习模型输出出与GT同维度的预测结果Y
- 监督学习在此有两种划分方式:1)单模型和多模型两类;2)解决分类问题和回归问题两类。下面就按照这两种划分来对监督学习的基本模型进行介绍。
分类问题:标签和预测结果都是离散的,即就是固定的几种类别
回归问题:标签和预测结果的分布都是连续的,可能会预测一系列的实数。例如Faster RCNN和YOLO等模型的bbox分支预测的四个值就是回归问题
1.1、单模型
1.1.1、线性回归
- 线性回归属于监督学习、回归问题。那么只要建立模型,通过损失函数优化模型即可进行预测。
- 模型:因变量(预测值)为一个或多个自变量(输入样本的特征数)的线性组合
- 可以分为一元线性回归(一个变量)和多元线性回归(多个变量)
- 损失函数:损失函数就是在估计ground truth和预测值之间的差别,记住这个就行。我们定义 y i y_i yi为第i个训练样本的ground truth, h w ( x i ) h_w (x_i) hw(xi)为预测值,则损失函数为:
- 通过更新/求解W以最小化上面这个误差平方和就称为最小二乘法。有两种方法:
1)正规方程:但是当特征过于复杂时,求解很慢:
2)梯度下降法:以一元线性回归为例,a为学习率,面对训练数据规模十分庞大的任务也能较好适用
- sklearn的实现:
1)sklearn.linear_model.LinearRegression:正规方程
2)sklean.linear_model.SGDRegression:梯度下降
- 对于线性回归的正则化方法:岭回归(Ridge Regression)和Lasso回归。主要用于解决过拟合问题,又称为数据的共线性问题(即自变量之间存在多重共线性,或者自变量/特征个数多于样本量)
1)岭回归:就是在原来的误差平方和/均方误差后面加一个正则化项,即参数w的L2范数的平方作为惩罚项。会得到稠密解
2)Lasso回归:原来的误差平方和/均方误差后面加一个正则化项,即参数w的L1范数作为惩罚项。会得到稀疏解
- sklearn的实现:
1)岭回归:sklearn.linear_model.Ridge
2)Lasso回归:sklearn.linear_model.Lasso
1.1.2、逻辑回归(Logistic Regression)
- 逻辑回归非常简单,就是通过在线性回归预测结果的基础上使用激活函数sigmoid转换为0-1之间的概率从而实现二分类。
- 损失函数实际上为交叉熵损失函数,通过更新/求解W以最小化损失函数即可优化模型。
- 该损失函数源自于对数函数:可以满足当预测值(概率值)与ground truth接近时,损失函数为0
y = 1时:
y = 0时:
- sklearn的实现:
sklearn.lnear_model.LogisticRegression
1.1.3、K近邻算法(KNN)
- 基本思想:在已知样本和对应的类别下,给定一个未知样本,计算该样本与所有已知样本之间的距离/相似度,选择前K个与其距离最近的已知样本,这K个样本中的多数类别就是未知样本的类别
- 优缺点:
优点:简单易于实现;不需要训练
缺点:K值选择十分重要,过小或者过大都容易导致过拟合或者欠拟合
- sklearn的实现
sklearn.neighbors.KNeighborsClassifier
1.1.4、决策树
- 算法原理:简单来说,就是利用了二叉树(if—else语句)的思想,内部节点表示特征/属性,叶子节点表示一个类别。那么从根节点开始不断根据特征进行划分直到叶子节点,即可实现分类。因此,决策树实际上表示的是给定特征条件下,类别的条件概率分布。
- 需要注意的是,决策树既可以实现分类问题,也可以实现回归问题。
- 构建决策树通常包含3个步骤:1)特征选择(最重要的,主要衡量的指标为信息增益、信息增益比);2)决策树生成,都是从根节点开始,根据不同的准则依次选择最优特征;3)决策树剪枝
- 常用的两种决策树生成方法有:ID3和C4.5算法,分别采用了信息增益和信息增益比作为特征选择的准则:
定义训练集为D:N为训练样本个数,有K个类别 c k c_k ck,每种类别的样本数为 ∣ C k ∣ |C_k| ∣Ck∣,那么就可以先求得数据集D本身的信息熵。
对于特征A(可能有很多个特征,通过计算信息增益(比)来确定最优特征),它的取值为n个不同的值: { a 1 , a 2 , . . . a n a_1, a_2,... a_n a1,a2,...an} ,按照每种取值对数据D划分得到的子数据集的样本数为 N i N_i Ni,而每个子数据集中的K个类别对应的样本数为 N i k N_{ik} Nik
1)于是,信息熵为:
2)条件熵(对于特征A划分的每个子集,计算它的信息熵,最后再加权求和):
3) 信息增益(信息熵 - 条件熵,衡量的就是数据集不确定性减少的程度,信息熵是未划分之前数据集的不确定性程度,条件熵是划分后数据集的不确定性程度,因此信息增益越大越好):
4)信息增益的缺点:存在偏向于选取值较多的特征的问题。 极限条件下,特征A将每个样本都划分为一个子集时,条件熵为0,信息增益为最大,但这个特征A不一定为最优特征
5)信息增益比:
- CART树(Classification And Regression Tree)是可以实现分类和回归的,其中CART分类树采用的是基尼系数最小化的策略,CART回归树采用了误差平方和最小化策略。
基尼系数:
G i n i ( D ) = ∑ k = 1 K ∣ K ∣ N ( 1 − ∣ K ∣ N ) Gini(D) = \sum_{k = 1}^{K} {\frac{|K|}{N}(1 - \frac{|K|}{N} ) } Gini(D)=∑k=1KN∣K∣(1−N∣K∣)
假如对于特征A,将数据集划分为 D 1 D_1 D1和 D 2 D_2 D2两个子集,则基尼系数为:
1.1.5、支持向量机(SVM)
- SVM基于统计学习理论中的结构风险最小化原则,通过在特征空间中寻找一个最优超平面,将不同类别的样本分开,并尽量使得不同类别之间的间隔最大化。
1)分隔超平面:在二维空间中,分隔超平面是一条直线,可以将两个类别的样本点正确地划分到两侧。在三维空间中,分隔超平面是一个平面,可以将样本点分开。而在更高维的特征空间中,分隔超平面是一个超平面。
2)最大间隔:在支持向量机中,分隔超平面还要满足最大化间隔的原则。也就是说,它应该尽可能地远离两个类别的样本点,使得两个类别的支持向量到分隔超平面的距离最大化。
3)支持向量:离分隔超平面最近的样本点称为支持向量
- 对于线性可分的情况,SVM可以直接找到一个分隔超平面。求解过程需要采用凸优化问题的解法(拉格朗日乘子法+KKT条件,需要转化为对偶问题,暂时略)
- 此外,SVM通过引入松弛变量和软间隔,允许存在一定的分类错误。
- 对于线性不可分的情况,通过使用核函数,可以将低维特征映射到高维特征空间,从而实现线性不可分情况下的分类。常用的核函数有线性核(Linear Kernel)、多项式核(Polynomial Kernel)和高斯核(RBF Kernel)等。
1.1.6、朴素贝叶斯
- 朴素贝叶斯是一种生成式方法,基本思想是基于训练数据中的特征和标签之间的概率关系,通过计算后验概率来进行分类预测。
- 首先要了解贝叶斯公式,P(A|B) 表示在观察到事件 B 发生的情况下,事件 A 发生的概率;P(B|A) 表示在事件 A 发生的情况下,事件 B 发生的概率;P(A) 表示事件 A 发生的先验概率;P(B) 表示事件 B 发生的先验概率:
- 朴素贝叶斯公式是在贝叶斯公式的基础上,引入了"朴素"假设,假设特征之间相互独立。根据朴素贝叶斯公式,可以计算在给定一组特征的条件下,某个类别的后验概率。朴素贝叶斯公式如下:
其中,P(y|x1, x2, …, xn) 表示在给定特征 x1, x2, …, xn 的条件下,类别 y 的后验概率;P(x1|y), P(x2|y), …, P(xn|y) 表示在类别 y 的条件下,特征 x1, x2, …, xn 出现的概率;P(y) 表示类别 y 的先验概率;P(x1, x2, …, xn) 表示特征 x1, x2, …, xn 的联合概率。
- 计算步骤如下:
1)数据预处理:首先对输入数据进行预处理,包括特征选择、特征缩放、处理缺失值等操作。
2)计算类别的先验概率:根据训练数据,计算每个类别出现的先验概率。先验概率可以通过简单地计算每个类别在训练数据中的样本数量与总样本数量的比例得到。
3)计算特征的条件概率:对于每个特征,计算在给定类别下的条件概率。这需要计算每个特征在每个类别下的频率或概率。
4)应用贝叶斯定理:根据贝叶斯定理,利用先验概率和条件概率计算后验概率,即在给定特征条件下每个类别的概率。
4)预测分类结果:对于新的未知样本,根据计算得到的后验概率,选择具有最高概率的类别作为预测结果。
1.2、集成学习
- 集成学习是一种将不同学习模型的结果组合起来,通过投票或平均来进一步提高准确率。一般,对于分类问题用投票;对于回归问题用平均。这样的做法源于“众人拾材火焰高”的想法。
- 集成算法主要有三类:Bagging,Boosting 和Stacking。Bagging和Boosting的所有所有的个体学习器都是一个种类的,或者说是同质的。 比如都是决策树个体学习器,或者都是神经网络个体学习器。Stacking所有的个体学习器不全是一个种类的,或者说是异质的。 比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。
Bagging:首先对数据集采用Bootstrap采样(有放回)得到T个子数据集,再训练出T个弱学习器,最后集成到一起:分类问题吗,投票;回归问题;求均值。相当于是并行机制
Boosting:首先在训练数据集上训练出一个弱学习器T1,根据T1在每个样本上的误差率更新样本权重(误差高的,权重就大);然后基于更新后的权重重新训练弱学习器T2;迭代进行直到到达学习器指定数目T,最终将弱学习器集合到一起。相当于串行机制。
Stacking:首先先训练多个不同的模型;然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。
1.2.1、Boosting
- 根据组合弱学习器/基学习器的不同方式可以分为三种:AdaBoost、GBDT和XGBoost
Adaboost(Adaptive boosting):为每个弱学习器分配一个权重,最后根据权重对T个弱学习器进行加权
GBDT(Gradient Boosting Decision Tree):是一种基于梯度提升框架的集成学习算法,它是Boosting提升树算法的一种实现方式。GBDT在每一轮迭代中不是直接拟合残差,而是拟合损失函数的负梯度。
XGBoost:使GBDT工程上的优化实现。
1)Regression Decision Tree:回归树
- 回归树总体构建流程类似于分类树,区别在于:
- 回归树中,根据特征进行划分后,每一个节点都会得到一个预测值,该预测值为按特征划分后所有训练样本的平均值或加权平均值。
- 特征划分所确定的阈值的衡量标准为误差平方和或均方误差,选择可以使得误差平方和最小的特征作为最优特征
- 直到每个叶子节点上的样本一致或达到预设的终止条件(指定的叶子节点个数)时,决策树构建完成。
- 例如,下面根据给定的不同特征预测年龄:
2)Boosting Decision Tree:提升树算法
- 提升树就是根据Boosting的集成学习思想,迭代多个回归树得到来构建一个强大的集成模型——提升树。
- 构建的流程大致如下:
1)初始化:初始化第一个回归树
2)迭代训练:对于每次迭代,按照以下步骤进行训练:
a. 计算前一模型的残差(真实值与当前预测值的差异)。
b. 使用回归树来拟合残差(拟合过程就是回归树的特征选择过程,选择使误差平方和最小的特征)。其叶子节点的取值为该叶子节点上所有样本的残差的均值。
c. 更新当前模型的预测值,将之前的预测值与新增加的回归树的预测值进行累加。
3)得到最终模型:迭代训练直到达到预设的迭代次数或满足停止条件。最终的预测结果为所有回归树的预测值之和。
- 例如:训练一个提升树模型来预测年龄:训练集是4个样本,A,B,C,D年龄分别是14,16,24,26。样本中有购物金额、上网时长、经常到百度知道提问等特征。提升树的过程如下:
3)GBDT(Gradient Boosting Decision Tree):梯度提升决策树
- GBDT使用的决策树是CART回归树,也就是1)中介绍的,2)介绍的是一般情况的提升树
- GBDT(Gradient Boosting Decision Tree)是一种基于梯度提升框架的集成学习算法,与传统的提升树算法不同,GBDT在每一轮迭代中不是直接拟合残差,而是拟合损失函数的负梯度。
- 构建流程如下:
1)初始化:将训练数据的目标值作为初始预测值。
2)迭代训练:对于每次迭代,按照以下步骤进行训练:
a. 计算当前模型的残差和负梯度。
b. 使用回归树来拟合负梯度。每个回归树的训练目标是最小化损失函数的负梯度。
c. 更新当前模型的预测值,将之前的预测值与新增加的回归树的预测值进行累加。
3)得到最终模型:迭代训练直到达到预设的迭代次数或满足停止条件。最终的预测结果为所有回归树的预测值之和。
4)XGBoost
- XGBoost(Extreme Gradient Boosting)是GBDT(Gradient Boosting Decision Tree)的一个工程上的优化实现。XGBoost在GBDT的基础上引入了一些创新的技术,如正则化、并行化和缺失值处理等,以提高模型的性能和训练效率。
- XGBoost:主要做了下面几个改进:
1)正则化:XGBoost使用正则化项来限制模型的复杂度,包括L1正则化(L1 regularization)和L2正则化(L2 regularization)。通过正则化,可以防止过拟合,并提高模型的泛化能力。
2)随机采样:类似随机森林的策略。在每次迭代中,XGBoost通过随机选择一部分特征进行训练,这样可以减少训练时间,并提高模型的鲁棒性。
3)XGBoost可以自动处理缺失值,在构建决策树时,会将缺失值分配到左侧或右侧子节点中,从而无需对缺失值进行额外处理。
4)XGBoost支持多种类型的基学习器,而GBDT只有CART回归树作为基分类器
1.2.2、Bagging — 随机森林
- 随机森林就是Bagging的基学习器为决策树。
- 随机森林:很多个决策树并行放在一起,数据采样随机,特征选择随机,都是有放回的随机选取。
1.2.3、Stacking
参考链接:https://blog.csdn.net/xiao_yi_xiao/article/details/124040296
二、无监督学习
- 无监督学习的训练样本是没有标签的数据,设计相应的模型学习它的分布。
2.1、聚类算法
聚类算法就是将无标签的样本划分为不同的簇(clusters),同一簇内的样本具有相似的特征。
2.1.1、K-means聚类
- 顾名思义,K-means聚类就是选取K个点作为聚类中心,并不断取均值更新聚类中心,具体过程如下:
1)随机设定K个初始聚类中心,不一定为训练样本的点;
2)对于训练集中所有的点,计算每个点到K个聚类中心的距离,选择最近的那个聚类中心对应的簇,将其分配过去;
3)全部遍历和计算完毕后,对于K个聚类中心对应的簇,通过求均值的方法重新确定新的聚类中心;
4)重复上述过程,直到到达指定的迭代次数或者误差值
- sklearn的实现:
sklearn.cluster.KMeans()
2.1.2、分层聚类
- 分层聚类输出的是层次结构,类似树结构一样,每一层都有不同类别,这种结构比平面聚类更具信息性。
- 算法步骤:
1)初始化:把每个样本各自归为一类(每个样本自成一类);
2)计算每两个类之间的距离,也就是样本之间的相似度(本质还是计算类与类之间的距离),寻找各个类之间最近的两个类,把它们归为一类(这样,总类的数量就减少了一个);
3)重新计算新生成的这个类与各个旧类之间的距离(相似度);
4)重复上述步骤,直到所有的样本都聚为一类
- 其中最重要的就是如何判断/计算两个类之间距离/相似度:
(1)SingleLinkage:又叫做nearest-neighbor,就是取两个类中最近的两个样本之间的距离作为两个集合的距离,即:最近的两个样本之间的距离越小,
这两个类之间相似度越大,容易造成一种叫做Chaining的效果,两个类明明从“大局”上离的比较远,但由于其中个别点距离比较近就被合并了。这种合并之后Chaining效应会进一步扩大,最后得到比较松散的聚类cluster。
(2)Complete Linkage:完全是SingleLinkage的反面极端,取两个集合距离最远的两个点的距离作为两个集合的距离,其效果也刚好相反,限制非常大。
两个聚类cluster即使已经很接近了,但是只要有不配合的带你存在,就顽固到底,老死不相合并,也是不太好的办法,这两种相似度定义方法共同问题就是:只考虑了某个特有的数据,而没有考虑类数据整体的特点。
(3)Average Linkage:这种方法就是把两个集合中的点两两距离全部放在一起求平均值,相应的能得到一点合适的结果。
(4)Average Linkage的一个变种就是取两两距离的中值,与取平均值相比更加能够解除个别偏离样本对结果的干扰
参考链接:https://blog.csdn.net/u011808596/article/details/80978927
2.1.3、DBSCAN
- DBSCAN是一种密度聚类算法,全称为Density-Based Spatial Clustering of Applications with Noise。它通过将样本点分为核心点、边界点和噪音点来进行聚类。
- DBSCAN的工作原理是基于密度的,而不是基于距离的。它通过定义半径ε内的邻域来度量样本点的密度,并根据邻域内的点数量来判断某个点是否为核心点、边界点或噪音点。具体来说:
1)核心点:如果一个点的半径ε内至少有MinPts个样本点,那么这个点就是一个核心点。
2)边界点:如果一个点的半径ε内的样本点数量小于MinPts(即不属于核心店,但位于另一个核心点的邻域内),但它位于其他核心点的半径ε邻域内,那么这个点就是一个边界点。
3)噪音点:既不是核心点也不是边界点的点被认为是噪音点。
- 4种点的关系:密度直达,密度可达,密度相连,非密度相连
1)密度直达:如果P为核心点,Q在P的R邻域内,那么称P到Q密度直达。任何核心点到其自身密度直达,密度直达不具有对称性,如果P到Q密度直达,那么Q到P不一定密度直达。
2)密度可达:如果存在核心点P2,P3,……,Pn,且P1到P2密度直达,P2到P3密度直达,……,P(n-1)到Pn密度直达,Pn到Q密度直达,则P1到Q密度可达。密度可达也不具有对称性。
3)密度相连:如果存在核心点S,使得S到P和Q都密度可达,则P和Q密度相连。密度相连具有对称性,如果P和Q密度相连,那么Q和P也一定密度相连。密度相连的两个点属于同一个聚类簇。
4)非密度相连:如果两个点不属于密度相连关系,则两个点非密度相连。非密度相连的两个点属于不同的聚类簇,或者其中存在噪声点。
- 算法步骤:
输入:数据集,邻域半径 Eps,邻域中数据对象数目阈值 MinPts;
输出:密度联通簇。
处理流程如下。
1)从数据集中任意选取一个数据对象点 p;
2)如果对于参数 Eps 和 MinPts,所选取的数据对象点 p 为核心点,则找出所有从 p 密度可达的数据对象点,形成一个簇;
3)如果选取的数据对象点 p 是边缘点,选取另一个数据对象点;
4)重复(2)、(3)步,直到所有点被处理。
参考链接:https://blog.csdn.net/hansome_hong/article/details/107596543
2.2、降维(特征工程)
2.2.1、PCA主成分分析
- PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。
- 第2步相当于对特征的每个维度的分布进行了归一化
- 协方差矩阵一定是特征维度 × \times ×特征维度
- 求解特征向量:Av = λv,其中λ为该特征向量对应的特征值。
2.2.2、SVD奇异值分解
2.2.3、LDA线性判别分析
- LDA的目标是通过线性投影将高维数据映射到低维空间,并在此过程中最大化类间距离同时最小化类内距离,以实现特征提取和分类的目的。
- 下面是LDA的基本步骤:
输入:包含n个样本和m个特征的训练数据集。
1)标记预处理:对每个样本进行标记,确保每个样本都属于一个已知类别。
2)计算类别均值向量:对于每个类别,计算其所有样本的均值向量,表示该类别在高维特征空间中的中心位置。
3)计算类内散度矩阵:计算每个类别内部样本与其均值向量之间的散度矩阵,用于衡量类内的离散程度。
4)计算类间散度矩阵:计算所有类别的均值向量之间的散度矩阵,用于衡量类间的差异程度。
5)计算广义特征值问题:解决广义特征值问题,即求解广义瑞利商的最大特征值和对应的特征向量。
6)选择投影向量:选择前k个最大特征值对应的特征向量作为投影向量,其中k是降维后的目标维度。
7)降维和分类:将原始数据投影到所选投影向量所组成的低维空间中,并使用分类方法对新的低维数据进行分类。
相关文章:

【机器学习】基础知识点的汇总与总结!更新中
文章目录 一、监督学习1.1、单模型1.1.1、线性回归1.1.2、逻辑回归(Logistic Regression)1.1.3、K近邻算法(KNN)1.1.4、决策树1.1.5、支持向量机(SVM)1.1.6、朴素贝叶斯 1.2、集成学习1.2.1、Boosting1&…...
NLP杂记
来京一周余,初病将愈,终跑通llama及ViT,记于此—— 之前都是做的图像,大模型迁移基本上都是NLP相关的知识,很多东西和CV差距还是有点,再加上大模型对算力要求较高,基于云的操作对我一个习惯在本…...

算法通过村第二关-链表白银笔记
文章目录 再战链表|反转链表剑指 Offer II 024. 反转链表熟练掌握这两种解法建立头节点的解决思路不采用建立头节点的方法采用循环/递归的方式解决 总结 再战链表|反转链表 提示:多拿些酒来,因为生命只有乌有。 剑指 Offer II 024. 反转链表 如果不使用…...

力扣题库刷题笔记75--颜色分类
1、题目如下: 2、个人Pyhon代码实现如下: 第一种思路是取巧,通过计数0、1、2的个数,去替换nums 备注第10行代码在本地可以跑过,但是力扣跑不过,所以就用了第10-16行代码进行替换 第二种思路是通过冒泡排序去…...

《面试1v1》如何提高远程用户的吞吐量
🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结…...

论文笔记--Distilling the Knowledge in a Neural Network
论文笔记--Distilling the Knowledge in a Neural Network 1. 文章简介2. 文章概括3 文章重点技术3.1 Soft Target3.2 蒸馏Distillation 4. 文章亮点5. 原文传送门 1. 文章简介 标题:Distilling the Knowledge in a Neural Network作者:Hinton, Geoffre…...

Mac上安装sshfs
目录 写在前面安装使用参考完 写在前面 1、本文内容 Mac上安装sshfs 2、平台 mac 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/130156287 安装 参考:https://ports.macports.org/port/sshfs/ 通过port安装 点击啊insta…...

MQ公共特性介绍 (ActiveMQ, RabbitMQ, RocketMQ, Kafka对比)
本章介绍 本文主要介绍所有MQ框架都具备的公共特点,同时对比了一些目前比较主流MQ框架的优缺点,给大家做技术选型作参考。 文章目录 本章介绍MQ介绍适用场景异步通信案例一案例二 系统解耦削峰填谷广播通信总结 缺点MQ对比APQP历史AMQP是什么 MQ介绍 M…...

灵雀云Alauda MLOps 现已支持 Meta LLaMA 2 全系列模型
在人工智能和机器学习领域,语言模型的发展一直是企业关注的焦点。然而,由于硬件成本和资源需求的挑战,许多企业在应用大模型时仍然面临着一定的困难。为了帮助企业更好地应对上述挑战,灵雀云于近日宣布,企业可通过Alau…...
技术方案模版
技术方案模板 概述 1.1 术语 名称 说明 1.2 需求背景 来自产品的需求可以引用PRD和设计稿 技术类的改造需要写明背景业务用例分析 从需求中抽象出的核心用例详细设计 3.1 应用架构 3.2 模型设计 领域模型的关系,可以用UML 类图来实现 3.3. 详细实现 可以通过时序图…...

【Linux命令200例】cut强大的文本处理工具
🏆作者简介,黑夜开发者,全栈领域新星创作者✌,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…...

《论文阅读》具有特殊Token和轮级注意力的层级对话理解 ICLR 2023
《论文阅读》具有特殊Token和轮级注意力的层级对话理解 前言简介问题定义模型构建知识点Intra-turn ModelingInter-turn Modeling分类前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到失望? 小白如何从零读懂论文?和我一…...

C# 定时器封装版
一、概述 在 Winform 等平台开发中,经常会用到定时器的功能,但项目定时器一旦写多了,容易使软件变卡,而且运行时间长了会造成软件的闪退,这个可能是内存溢出造成的,具体原因我也没去深究,另一个…...

前端学习——Vue (Day4)
组件的三大组成部分 组件的样式冲突 scoped <template><div class"base-one">BaseOne</div> </template><script> export default {} </script><style scoped> /* 1.style中的样式 默认是作用到全局的2.加上scoped可以让样…...

如果你是一个嵌入式面试官,你会问哪些问题?
以下是一些嵌入式面试中可能会问到的问题: 1.你对嵌入式系统有什么理解?它们与桌面或服务器系统有什么不同? 2.你用过哪些单片机和微处理器?对其中哪一款最熟悉? 3.你用什么编程语言编写嵌入式软件?你觉…...

学习笔记十三:云服务器通过Kubeadm安装k8s1.25,供后续试验用
Kubeadm安装k8s1.25 k8s环境规划:初始化安装k8s集群的实验环境先建生产环境服务器,后面可以通过生成镜像克隆node环境修改主机名配置yum源关闭防火墙关闭selinux配置时间同步配置主机 hosts 文件,相互之间通过主机名互相访问 **192.168.40.18…...

【Maven】Maven配置国内镜像
文章目录 1. 配置maven的settings.xml文件1.1. 先把镜像mirror配置好1.2. 再把仓库配置好 2. 在idea中引用3. 参考资料 网上配置maven国内镜像的文章很多,为什么选择我,原因是:一次配置得永生、仓库覆盖广、仓库覆盖全面、作者自用的配置。 1…...

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?
ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手,甚至是旅行指南。只要你知道如何让它做你想做的事,ChatGPT几乎可以提供你要的任何东西。 但重要的是,你知道哪个版本的ChatGPT最能满足你的需求吗&#x…...
pg_standby备库搭建
1.主库 1.1主库参数文件修改 -- 该路径也需要在从库创建 mkdir -p /postgresql/archive chown -R postgres.postgres /postgresql/archive-- 主库配置归档 wal_levelreplica archive_modeon archive_commandcp %p /postgresql/archive/%f restore_commandcp /postgresql/arch…...

RNNLSTM
文章目录 前言引言应用示例-槽填充(slot filling)-订票系统二、循环神经网络(RNN)三、Long Short-term Memory (LSTM)LSTM原理[总结](https://zhuanlan.zhihu.com/p/42717426)LSTM例子lstm的训练RNN不但可以N2NMany2One(输入是一个矢量序列,但输出只有一个矢量)Many2Ma…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...