机器学习模型融合实战指南

推荐算法的多模型融合 目录 1)线性加权融合法 2)交叉融合法(blending) 3)瀑布融合法 4)特征融合法 5)预测融合法 6)分类器 Boosting 思想 多模型融合算法可以比单一模型算法有极为明显的效果提升。但是怎样进行有效的融合,充分发挥各个算法的长处呢,这里总结一些常见的融合方法: 1)线性加权融合法 线性加权是最简单易用的融合算法,工程实现非常方便,只需要汇总单一模型的结果,然后... 阅读详情

 模型融合 

Author:田杨军 

From:Datawhale

摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢?

模型融合:通过融合多个不同的模型,可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用, 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果,模型自身,样本集等不同的角度进行融合。

数据及背景

https://tianchi.aliyun.com/competition/entrance/231784/information(阿里天池-零基础入门数据挖掘)

模型融合

如果你打算买一辆车,你会直接走进第一家4S店,然后在店员的推销下直接把车买了吗?大概率不会,你会先去网站,看看其他人的评价或者一些专业机构在各个维度上对各种车型的对比;也许还会取咨询朋友和同事的意见。最后,做出决策。

模型融合采用的是同样的思想,即多个模型的组合可以改善整体的表现。集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术。

模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式:

1. 简单加权融合:

  • 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);

  • 分类:投票(Voting);

  • 综合:排序融合(Rank averaging),log融合。

2. stacking/blending:

  • 构建多层模型,并利用预测结果再拟合预测。

3. boosting/bagging:

  • 多树的提升方法,在xgboost,Adaboost,GBDT中已经用到。

平均法(Averaging)

基本思想:对于回归问题,一个简单直接的思路是取平均。稍稍改进的方法是进行加权平均。权值可以用排序的方法确定,举个例子,比如A、B、C三种基本模型,模型效果进行排名,假设排名分别是1,2,3,那么给这三个模型赋予的权值分别是3/6、2/6、1/6。

平均法或加权平均法看似简单,其实后面的高级算法也可以说是基于此而产生的,Bagging或者Boosting都是一种把许多弱分类器这样融合成强分类器的思想。

简单算术平均法:Averaging方法就多个模型预测的结果进行平均。这种方法既可以用于回归问题,也可以用于对分类问题的概率进行平均。

加权算术平均法:这种方法是平均法的扩展。考虑不同模型的能力不同,对最终结果的贡献也有差异,需要用权重来表征不同模型的重要性importance。

其中,且

投票法(voting)

基本思想:假设对于一个二分类问题,有3个基础模型,现在我们可以在这些基学习器的基础上得到一个投票的分类器,把票数最多的类作为我们要预测的类别。

绝对多数投票法:最终结果必须在投票中占一半以上。

相对多数投票法:最终结果在投票中票数最多。

加权投票法:其原理为

其中,且

硬投票:对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。

软投票:增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。

from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import VotingClassifier


model1 = LogisticRegression(random_state=2020)
model2 = DecisionTreeClassifier(random_state=2020)
model = VotingClassifier(estimators=[('lr', model1), ('dt', model2)], voting='hard')
model.fit(x_train, y_train)
model.score(x_test, y_test)

堆叠法(Stacking)

基本思想

stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。对不同模型预测的结果再进行建模。

将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。

上面说的投票法和平均法都是很有效的结合策略,还有一种结合策略是使用另外一个机器学习算法来将个体机器学习器的结果结合在一起,这个方法就是Stacking。

在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(metalearner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。

如何进行Stacking

Stacking算法:

  • 过程1-3 是训练出来个体学习器,也就是初级学习器。

  • 过程5-9是 使用训练出来的个体学习器来得预测的结果,这个预测的结果当做次级学习器的训练集。

  • 过程11 是用初级学习器预测的结果训练出次级学习器,得到我们最后训练的模型。

Stacking方法详解

Stacking模型本质上是一种分层的结构,这里简单起见,只分析二级Stacking.假设我们有2个基模型 Model1_1、Model1_2 和 一个次级模型Model2。

Step 1. 基模型 Model1_1,对训练集train训练,然后用于预测 train 和 test 的标签列,分别是P1,T1,Model1_1 模型训练:

训练后的模型 Model1_1 分别在 train 和 test 上预测,得到预测标签分别是P1,T1

Step 2. 基模型 Model1_2 ,对训练集train训练,然后用于预测train和test的标签列,分别是P2,T2,model1_2 模型训练:

训练后的模型 Model1_2 分别在 train 和 test 上预测,得到预测标签分别是P2,T2

Step 3. 分别把P1,P2以及T1,T2合并,得到一个新的训练集和测试集train2,test2。

再用次级模型 Model2 以真实训练集标签为标签训练,以train2为特征进行训练,预测test2,得到最终的测试集预测的标签列 。

这就是我们两层堆叠的一种基本的原始思路想法。在不同模型预测的结果基础上再加一层模型,进行再训练,从而得到模型最终的预测。

Stacking本质上就是这么直接的思路,但是直接这样有时对于如果训练集和测试集分布不那么一致的情况下是有一点问题的,其问题在于用初始模型训练的标签再利用真实标签进行再训练,毫无疑问会导致一定的模型过拟合训练集,这样或许模型在测试集上的泛化能力或者说效果会有一定的下降,因此现在的问题变成了如何降低再训练的过拟合性,这里我们一般有两种方法:

  1. 次级模型尽量选择简单的线性模型

  2. 利用K折交叉验证

  • 训练:

  • 预测:

#这里只实现了针对一个基模型做K折交叉验证,因为P1和T1都是多行一列的结构,这里是先存储为一行多列,最后进行转置。
def get_oof(clf, x_train, y_train, x_test):
 oof_train = np.zeros((ntrain,))  
 oof_test = np.zeros((ntest,))
 oof_test_skf = np.empty((NFOLDS, ntest))  #NFOLDS行,ntest列的二维array
 for i, (train_index, test_index) in enumerate(kf): #循环NFOLDS次
     x_tr = x_train[train_index]
     y_tr = y_train[train_index]
     x_te = x_train[test_index]
     clf.fit(x_tr, y_tr)
     oof_train[test_index] = clf.predict(x_te)
     oof_test_skf[i, :] = clf.predict(x_test)  #固定行填充,循环一次,填充一行
 oof_test[:] = oof_test_skf.mean(axis=0)  #axis=0,按列求平均,最后保留一行
 return oof_train.reshape(-1, 1), oof_test.reshape(-1, 1)  #转置,从一行变为一列

混合法(Blending)

基本思想:Blending采用了和stacking同样的方法,不过只从训练集中选择一个fold的结果,再和原始特征进行concat作为元学习器meta learner的特征,测试集上进行同样的操作。

把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。

  • 第一层,我们在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。

  • 在第二层,我们就直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测。

Blending训练过程:

  1. 整个训练集划分成训练集training sets和验证集validation sets两个部分;

  2. 在training sets上训练模型;

  3. 在validation sets和test sets上得到预测结果;

  4. 将validation sets的原始特征和不同基模型base model预测得到的结果作为新的元学习器meta learner的输入,进行训练 ;

  5. 使用训练好的模型meta learner在test sets以及在base model上的预测结果上进行预测,得到最终结果。

Stacking与Blending的对比:

优点在于:

  • blending比stacking简单,因为不用进行k次的交叉验证来获得stacker feature

  • blending避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集

缺点在于:

  • blending使用了很少的数据(第二阶段的blender只使用training set10%的量)

  • blender可能会过拟合

  • stacking使用多次的交叉验证会比较稳健

Bagging

基本思想:Bagging基于bootstrap(自采样),也就是有放回的采样。训练子集的大小和原始数据集的大小相同。Bagging的技术使用子集来了解整个样本集的分布,通过bagging采样的子集的大小要小于原始集合。

  • 采用bootstrap的方法基于原始数据集产生大量的子集

  • 基于这些子集训练弱模型base model

  • 模型是并行训练并且相互独立的

  • 最终的预测结果取决于多个模型的预测结果

Bagging是一种并行式的集成学习方法,即基学习器的训练之间没有前后顺序可以同时进行,Bagging使用“有放回”采样的方式选取训练集,对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合。

算法流程:

Boosting

基础思想:Boosting是一种串行的工作机制,即个体学习器的训练存在依赖关系,必须一步一步序列化进行。Boosting是一个序列化的过程,后续模型会矫正之前模型的预测结果。也就是说,之后的模型依赖于之前的模型。

其基本思想是:增加前一个基学习器在训练训练过程中预测错误样本的权重,使得后续基学习器更加关注这些打标错误的训练样本,尽可能纠正这些错误,一直向下串行直至产生需要的T个基学习器,Boosting最终对这T个学习器进行加权结合,产生学习器委员会。

下面给出加州大学欧文分校Alex Ihler教授的两页PPT:

Boosting训练过程:

  • 基于原始数据集构造子集

  • 初始的时候,所有的数据点都给相同的权重

  • 基于这个子集创建一个基模型

  • 使用这个模型在整个数据集上进行预测

  • 基于真实值和预测值计算误差

  • 被预测错的观测值会赋予更大的权重

  • 再构造一个模型基于之前预测的误差进行预测,这个模型会尝试矫正之前的模型

  • 类似地,构造多个模型,每一个都会矫正之前的误差

  • 最终的模型(strong learner)是所有弱学习器的加权融合

欢迎扫码关注:

                            

【图像融合】简单加权融合 图像融合:简单加权融合 阅读详情

相关推荐

统计+机器学习+大语言模型融合实战指南

在AI工程落地中,单一技术栈常陷入‘高精度、低可用’困境。统计学提供因果推断与不确定性量化能力,是问题可信度的锚点;机器学习擅长挖掘高维非线性模式,揭示传统方法难以捕捉的交互效应;大语言模型则承担认知转化角色,将严谨结论翻译为业务可执行指令。三者并非简单串联,而需按责任边界分层协同:统计定义‘能不能问’,ML回答‘可能是什么’,LLM解决‘怎么用、给谁用、如何行动’。这种融合范式正成为数据科学从模型实验室走向真实业务闭环的关键路径,尤其适用于AB测试归因、药物不良反应分析、营销策略生成等强解释性与强落地性并

weixin_34216614的博客 274

模型融合

一,大致有三种方法 模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式 1.简单加权融合回归(分类概率):算术平均融合( Arithmetic mean),几何平均融合( Geometric mean);分类:投票(otng) 综合:排序融合 Rank averaging),log融合 2. stacking/blending : 构建多层横型,并利用预则结果再拟合预则。 3. boo...

Candylx的博客 1735

【机器学习】Stacking模型融合:从原理到实战的进阶指南

本文深入解析Stacking模型融合技术,从原理到实战全面指导如何通过组合多种机器学习模型提升预测性能。详细介绍了基学习器选择、K折技巧防止数据泄露、代码实现及性能优化策略,帮助数据科学家在Kaggle等竞赛中取得突破性成绩。

weixin_28715081的博客 359

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

Datawhale作者:田杨军,Datawhale优秀学习者摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢...

Datawhale 6509

机器学习与统计建模融合:构建可解释高性能混合模型实战指南

在数据科学领域,模型的可解释性与预测精度常被视为难以兼得的目标。传统统计模型如线性回归、逻辑回归基于坚实的统计原理,通过系数、p值和置信区间提供清晰的因果推断与假设检验,确保了模型决策的透明与可信,尤其适用于金融风控、医疗诊断等高利害场景。然而,面对高维、非线性复杂数据时,其预测能力往往受限。以随机森林、梯度提升机为代表的机器学习算法虽能挖掘复杂模式、提升预测性能,但其‘黑箱’特性又阻碍了在严格监管领域的应用。混合模型正是为解决这一矛盾而生,它通过串联、并联或嵌入式架构,将统计学的可解释框架与机器学习的预测

weixin_33730836的博客 422

人工智能(AI)与机器学习(ML):塑造未来的技术引擎

人工智能是一种模拟、延伸和扩展人类智能的理论、方法、技术及应用系统。它旨在让计算机能够像人类一样思考、学习,并能在各种环境下自主地做出决策。AI的发展经历了从最初的符号主义、连接主义到如今的深度学习等多个阶段,每一次的突破都极大地推动了科技的进步。尽管AI与ML技术取得了巨大的进步,但它们仍然面临着诸多挑战。首先,数据的获取和标注是一个巨大的问题。高质量的标注数据是机器学习模型训练的关键,但数据的获取和标注往往需要耗费大量的人力和时间。其次,模型的泛化能力也是一个需要解决的问题。

星途码客的博客 7753

数学建模竞赛中时间序列模型实战指南:从ARIMA到机器学习融合

时间序列分析是处理按时间顺序排列、观测值间存在依赖关系数据的核心方法,其核心原理在于捕捉数据内在的动态结构,如趋势、季节性和自相关性。这一技术对于预测、分解和异常检测具有重要价值,广泛应用于客流预测、股市分析、交通评估和环境监测等场景。在数学建模竞赛中,面对如“板凳龙闹元宵”的客流预测或“亚太杯A题”的优化问题,时间序列模型常成为解题的关键。掌握从经典ARIMA、Holt-Winters到与机器学习融合的完整流程,能有效提升模型的预测精度与论文的学术深度。

weixin_29174385的博客 225

模型融合Blending 和 Stacking

前言 机器学习中很多训练模型通过融合方式都有可能使得准确率等评估指标有所提高,这一块有很多问题想学习,于是写篇博客来介绍,主要想解决: 什么是融合? 几种方式融合 基本的模型融合组合及适用场景、优缺点等 什么是融合? 构建并结合多个学习器来完成学习任务,我们把它称为模型融合或者集成学习。不同的模型有各自的长处,具有差异性,而模型融合可以使得发挥出各个模型的优势,让这些相对较弱的模型(学习器)通...

笔记小屋 6641

实战指南,在快马平台构建融合spss统计与机器学习的客户流失预测模型

通过定义变量重编码规则(比如将文本型客户等级转为数值型),自动处理缺失值(采用均值填充或删除记录),还能识别异常值。实际操作时,我发现平台的文件上传功能可以直接读取Excel/CSV,省去了本地配置环境的麻烦。对于需要同时做统计描述和预测建模的场景,这种SPSS+机器学习的混合方案确实能兼顾解释性和预测精度。平台把环境配置这些麻烦事都解决了,让分析人员能专注在业务逻辑上。这个项目特别适合需要同时处理传统统计和预测建模的场景,比如市场分析、用户运营等实际业务需求。今天想和大家分享一个实战项目:如何在。

ObsidianRaven13的博客 33

【深度学习基础之多尺度特征提取】混合特征学习如 加权融合(Weighted Fusion) 和 级联融合(Concat)是如何在深度学习网络中提取多尺度特征的?附代码(一)

【深度学习基础之多尺度特征提取】混合特征学习如 加权融合(Weighted Fusion) 和 级联融合(Concat)是如何在深度学习网络中提取多尺度特征的?附代码(一)

985小水博的摸鱼日常 2797

大数据领域数据服务的机器学习算法应用

随着企业数据规模呈指数级增长(IDC预测2025年全球数据量达175ZB),传统数据处理方式已无法满足实时分析、智能决策的需求。数据服务作为连接数据资源与业务应用的桥梁,需要通过机器学习算法实现从数据存储到价值转化的智能化升级。本文聚焦大数据平台中数据服务的核心场景,深入解析机器学习算法的技术架构、实施路径及行业应用,覆盖从数据预处理到模型部署的全生命周期。基础理论:数据服务架构与机器学习核心概念技术深度:算法原理(含数学推导与代码实现)实战指南:完整项目案例的开发全流程行业应用。

大数据洞察的博客 951

想转行进入AI大模型领域,可以通过哪些途径来实现?

随着人工智能技术的飞速发展,大模型(Large Models)在自然语言处理、计算机视觉、语音识别等多个领域取得了显著成果。人工智能大模型领域的蓬勃发展,为众多寻求职业转型的人才提供了新的机遇。然而,如何从零开始,一步步跨入这个高门槛的行业,是很多人心中的疑问。以下是一份详细的转行指南,带你了解进入AI大模型领域的多种途径。:深入学习线性代数、概率论与数理统计、微积分等,这些是理解机器学习算法的基础。可以通过以下方式学习:在线课程:如Coursera、edX上的相关课程。

2401_84494441的博客 1118

10、构建高效机器学习模型的进阶指南

本文全面介绍了构建高效机器学习模型的各个环节,包括数据准备、特征工程、模型选择与评估、超参数优化、模型融合与集成学习,以及深度学习模型的应用。通过理论结合实战案例,帮助读者掌握从数据到模型部署的完整流程,提升机器学习模型的性能和泛化能力。

kite3的博客 154

探索转行至AI大模型行业的路径:如何开始学习?

随着人工智能技术的飞速发展,大模型(Large Models)在自然语言处理、计算机视觉、语音识别等多个领域取得了显著成果。人工智能大模型领域的蓬勃发展,为众多寻求职业转型的人才提供了新的机遇。然而,如何从零开始,一步步跨入这个高门槛的行业,是很多人心中的疑问。以下是一份详细的转行指南,带你了解进入AI大模型领域的多种途径。:深入学习线性代数、概率论与数理统计、微积分等,这些是理解机器学习算法的基础。可以通过以下方式学习:在线课程:如Coursera、edX上的相关课程。

2401_85375298的博客 950

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 448

别再纠结Dify了!实测对比RAGFlow和Dify,聊聊企业知识库到底该怎么选

本文深度对比了RAGFlow和Dify在企业知识库选型中的实际表现,从技术架构、性能指标、部署成本等多维度进行分析。RAGFlow在复杂文档处理和准确率方面表现突出,适合有专职技术团队的企业;而Dify则以低门槛和快速部署见长。文章提供了六维度评估法,帮助企业根据文档复杂度、准确率要求等技术指标做出明智选择。

weixin_30897233的博客 674

机器学习实战:聚合模型(Aggregation Model)如何提升分类性能

本文深入探讨了聚合模型(Aggregation Model)在机器学习分类任务中的性能提升策略。通过股票预测的生动案例,详细解析了均值融合、加权融合、条件融合和自助聚合四大方法,并揭示其数学原理与实战技巧。聚合模型能有效整合不同基础模型的优势,降低方差并提升预测准确率,是机器学习领域的重要技术。

weixin_29186249的博客 111

Palantir解密:说人话,到底什么是“本体”?

笔者2018年在云计算公司开展政企数字化专项时,便意识到全面数字化进程背后存在大量未知领域,尤其是未来数字世界的底层架构如何构建这一关键问题。可惜因为种种原因,连那几个小专项最终都未能落地,也就无从深入了。近期看了很多有关Palantir的材料,倒觉得这像是新硅谷(区别于比尔盖茨、扎克伯格等主导的硅谷时代)交出的一份关于“数字世界底层架构”的答案,至于这个答案是否成立、有没有更优解、我们本土对标的版本是什么,可能都还待看。《Palantir解密》系列尝试通过解析Palantir,来系统回答这一问题。

SZSDQJC的博客 2162

想转行进入AI大模型领域,可以通过哪些途径来实现?零基础入门到精通,收藏这一篇就够了

随着人工智能技术的飞速发展,大模型(Large Models)在自然语言处理、计算机视觉、语音识别等多个领域取得了显著成果。人工智能大模型领域的蓬勃发展,为众多寻求职业转型的人才提供了新的机遇。然而,如何从零开始,一步步跨入这个高门槛的行业,是很多人心中的疑问。以下是一份详细的转行指南,带你了解进入AI大模型领域的多种途径。:深入学习线性代数、概率论与数理统计、微积分等,这些是理解机器学习算法的基础。可以通过以下方式学习:在线课程:如Coursera、edX上的相关课程。

Python_0011的博客 1001

互联网金融项目实战(大数据Hadoop hive)

什么是互联网金融? 互联网金融 --> 信贷(信用贷款) --> 支付宝率先搞了一个信用体系 互联网金融: 在线支付、P2P 银行: 只会锦上添画、不喜欢雪中送炭 银行害怕出现坏账 ( 储户存钱,银行放贷 赚个利息差 ) 银行是可以倒闭的 保险公司不允许倒闭 银行分为:商业银行(自生自灭的)和非商业银行(国家的) 中国工商银行 全球第一大行 招商银行(清朝的一个李鸿章) 中国银行(历史超过 100 年了) 国家政策:希望银行能够扶持中小型企业 p2p:网络借贷平台 民间吸纳贷款 -->

weixin_58276266的博客 1553

S32DS新建工程、编译调试下载、导入工程详细介绍

新建了一个工程之后,下面简单介绍下基本的UI界面。其中最左下角那个是界面,这个界面很重要,是图形化配置界面,然后可以根据这些配置自动生成代码。其中,左边那些配置文件,都是系统帮我们创建好了的,我们其实可以直接用就行。有PE工具的调试,以及Jlink工具的调试。我目前使用到PE工具调试可以查看寄存器值,而Jlink调试查看不了寄存器值。连接了开发板之后,点击Debug就可以吧程序下载到芯片上了,而且可以进入到调试界面。

luobeihai的博客 2万+

PojavLauncher 快速上手:iPhone、iPad 玩 Minecraft Java 版的完整指南

PojavLauncher 是一款面向 iOS 的开源 Minecraft Java 版启动器,基于 Boardwalk 项目打造。它能让你在 iPhone 我的世界 Java 版或 iPad 上完整体验模组与多版本,本指南带你在半小时内跑通安装到优化的全流程。 ## 先花 3 分钟自检:设备能不能跑 动手安装前,先对照下面的底线要求确认一下你的设备: | 维度 | 最低要求 | 备注 |

gitblog_00850的博客 262

【国密】基于SM2的协同签名与协同解密方案

两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。

听雨草堂 8392
上一篇: 我用动画展现Pycharm十大实用技巧
下一篇: 霸榜 GitHub:去你丫的算法!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值