将朴素贝叶斯分类模型转化为增量学习器
利用遗传算法训练朴素贝叶斯模型fitcnb
,然后将其转化为增量式学习者。
加载和预处理数据
加载人工活动数据集。
负载humanactivity
关于数据集的详细信息,请输入描述
在命令行。
训练朴素贝叶斯模型
拟合一个朴素贝叶斯分类模型到整个数据集。
TTMdl=fitcnb(专长,活动);
TTMdl
是一个ClassificationNaiveBayes
模型对象表示传统训练的朴素贝叶斯分类模型。
转换训练模型
将传统训练的朴素贝叶斯分类模型转化为增量学习。
IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法
递增ALMDL
是一个incrementalClassificationNaiveBayes
模型对象准备的增量学习使用朴素贝叶斯分类。
的incrementalLearner
初始化增量学习器,将学习到的条件预测器分布参数连同其他信息传递给增量学习器TTMdl
从训练数据中提取。
递增ALMDL
是温暖的IsWarm
是1
),这意味着增量学习函数可以跟踪性能指标并做出预测。
预测的反应
通过转换传统训练模型而产生的增量式学习者可以在不进行进一步处理的情况下生成预测。
使用这两个模型预测所有观测值的分类分数(类别后验概率)。
[~, ttscores] =预测(TTMdl壮举);[~,简称ilcor] =预测(IncrementalMdl壮举);compareScores = norm(ttscores - ilcores)
比较核心=0
模型生成的分数之间的差值为0。
使用训练有素的朴素贝叶斯模型初始化增量学习器。通过指定一个指标预热期来为增量学习者做准备,在此期间updateMetricsAndFit
函数只适合模型。指定一个指标窗口大小为500个观察值。
加载人工活动数据集。
负载humanactivity
关于数据集的详细信息,请输入描述
在命令行
将数据随机分成两半:一半用于传统的模型训练,另一半用于增量学习。
n=数值(活动);rng(1)%为了再现性本量利= cvpartition (n,“坚持”, 0.5);idxtt =培训(cvp);idxil =测试(cvp);%数据的前半部分Xtt =壮举(idxtt:);Ytt = actid (idxtt);%数据的后半部分自=壮举(idxil:);Yil = actid (idxil);
将朴素贝叶斯模型拟合到数据的前半部分。
TTMdl = fitcnb (Xtt Ytt);
将传统训练的朴素贝叶斯模型转换为朴素贝叶斯分类模型进行增量学习。指定以下:
2000个观察数据的性能指标热身期
500个观察值的指标窗口大小
利用分类误差和最小代价来衡量模型的性能
IncrementalMdl = incrementalLearner (TTMdl,“MetricsWarmupPeriod”,2000,“MetricsWindowSize”, 500,...“指标”,[“classiferror”“枢纽”]);
将增量模型拟合到数据的后半部分updateMetricsAndfit
函数。在每一次迭代:
通过一次处理20个观察数据来模拟数据流。
用一个适合传入观测的新模型覆盖先前的增量模型。
将第二个预测器的平均值存储在第一个类中 、累积指标和窗口指标,以查看它们在增量学习过程中如何发展。
%预先配置nil =元素个数(Yil);numObsPerChunk = 20;nchunk =装天花板(nil / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,[“累计”“窗口”]);(nchunk mc = array2table (0, 2),“VariableNames”,[“累计”“窗口”]);mu12 = 0 (nchunk, 1);%增量拟合为j=1:nchunk-ibegin=min(无,numObsPerChunk*(j-1)+1);iend=最小值(零,numObsPerChunk*j);idx=ibegin:iend;IncrementalMdl=updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));ce{j,:}=IncrementalMdl.Metrics{“ClassificationError”,:};mc {j:} = IncrementalMdl。指标{“最低成本”,:};mu12(j + 1) = incrementalmdd . distributionparameters {1,2}(1);结束
递增ALMDL
是一个incrementalClassificationNaiveBayes
模型对象对流中的所有数据进行训练。在增量学习过程中以及模型热身后,updateMetricsAndFit
检查模型在传入观测中的表现,然后将模型与观测相吻合。
看看绩效指标和 在训练中进化,把它们放在不同的次要情节上。
图;次要情节(1,1)情节(mu12) ylabel (“\ mu_{12}”)xlim([0 nchunk]);xline(增量almdl.MetricsWarmupPeriod/numObsPerChunk,‘r-。’);subplot(3,1,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(IncrementalMdl。MetricsWarmupPeriod/numObsPerChunk,‘r-。’);传奇(h, ce.Properties.VariableNames“位置”,“西北”) subplot(3,1,3) h = plot(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(IncrementalMdl。MetricsWarmupPeriod/numObsPerChunk,‘r-。’);图例(h、mc.Properties.VariableNames、,“位置”,“西北”)包含(“迭代”)
这个情节表明updateMetricsAndFit
以下:
适合 在所有的增量学习迭代过程中。
仅在指标预热期后计算性能指标。
在每次迭代期间计算累积度量。
在处理500个观察(25次迭代)后计算窗口度量。
因为数据是按活动排序的,所以平均值和性能指标会周期性地突然变化。
Mdl
- - - - - -用于多类分类的传统训练朴素贝叶斯模型ClassificationNaiveBayes
模型对象传统的多类分类训练朴素贝叶斯模型,指定为ClassificationNaiveBayes
返回的模型对象fitcnb
.每个预测变量的条件分布,如存储在Mdl.DistributionNames
,不能是内核发行版。
指定可选的逗号分隔的对名称,值
论据。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值
.
“指标”,“classiferror”“mincost”,“MetricsWindowSize”,100年
指定跟踪误分类率和最小成本,并指定在更新性能指标之前处理100次观察。
指标
- - - - - -为增量学习期间跟踪的性能指标建模“mincost”
(默认)|“classiferror”
|字符串向量|函数处理|细胞向量|结构阵列|“binodeviance”
|“指数型”
|“枢纽”
|“分对数”
|“二次”
|……为增量学习期间跟踪的性能度量建模updateMetrics
或updateMetricsAndFit
函数,指定为内置的损失函数名称,名称的字符串向量,函数句柄(@metricName
)、函数句柄的结构数组,或名称、函数句柄或结构数组的单元向量。
下表列出了内置的loss函数名称。可以使用字符串向量指定多个。
的名字 | 描述 |
---|---|
“binodeviance” |
二项异常 |
“classiferror” |
分类错误 |
“指数型” |
指数 |
“枢纽” |
铰链 |
“分对数” |
物流 |
'“mincost” |
最小的预期误分类成本(用于后验概率的分类分数) |
“二次” |
二次 |
有关内置损耗函数的更多详细信息,请参阅损失
.
例子:“指标”,(“classiferror”“mincost”)
若要指定返回性能指标的自定义函数,请使用函数句柄表示法。函数必须是这样的形式:
公制=自定义公制(C、S、成本)
输出参数度规
是一个n-by-1数字向量,其中每个元素是增量学习函数在一个学习周期中处理的数据中相应观测值的丢失。
选择函数名(customMetric
).
C
是一个n-借-K逻辑矩阵,其行表示相应的观测所属的类,其中K为类数。中的列顺序对应于类的顺序一会
财产。创建C
通过设置C (
=p
,问
)1
,如果观察
是在课堂上p
,用于指定数据中的每一个观测。设置行中的其他元素问
来p
0
.
年代
是一个n-借-K预测分类分数的数值矩阵。年代
类似于分数
的输出预测
,其中行对应于数据中的观察值,列顺序对应于一会
财产。S (
是观察的分类评分吗p
,问
)
被分类p
.问
费用
是一个K-借-K误分类代价的数值矩阵。看到“成本”
名称值参数。
若要指定多个自定义指标并为每个指标分配自定义名称,请使用结构数组。要指定内置指标和自定义指标的组合,请使用单元格向量。
例子:“指标”,结构(‘Metric2’,‘Metric1’,@customMetric1 @customMetric2)
例子:'Metrics',{@customMetric1 @ custommetric2 'logit' struct('Metric3',@customMetric3)}
updateMetrics
和updateMetricsAndFit
在属性的表中存储指定的指标IncrementalMdl。指标
.的数据类型指标
确定表的行名。
“指标” 值数据类型 |
的描述指标 属性行名称 |
例子 |
---|---|---|
字符串或字符向量 | 对应的内置度量的名称 | 行名称“classiferror” 是“ClassificationError” |
结构数组 | 字段名 | 行名称结构(Metric1, @customMetric1) 是“Metric1” |
存储在程序文件中的函数句柄 | 函数的名字 | 行名称@customMetric 是“自定义度量” |
匿名函数 | CustomMetric_ ,在那里 是公制的 在指标 |
行名称@ (C、S、成本)customMetric (C、S、成本)… 是CustomMetric_1 |
有关性能指标选项的详细信息,请参见性能指标.
数据类型:烧焦
|字符串
|结构体
|细胞
|function_handle
MetricsWarmupPeriod
- - - - - -在跟踪性能指标之前,需要进行大量的观察1000
(默认)|非负整数MetricsWindowSize
- - - - - -用于计算窗口性能指标的观察数200
(默认)|正整数递增ALMDL
-用于增量学习的朴素贝叶斯分类incrementalClassificationNaiveBayes
模型对象用于增量学习的朴素贝叶斯分类模型,返回为incrementalClassificationNaiveBayes
模型对象。递增ALMDL
也配置为生成给定新数据的预测(见预测
).
初始化递增ALMDL
增量学习,incrementalLearner
的属性的值Mdl
在这个表中的同余性质递增ALMDL
.
财产 | 描述 |
---|---|
CategoricalLevels |
多元多项式预测水平,细胞阵列长度等于 |
分类预测因子 |
分类预测指标,一个正整数向量 |
一会 |
用于二进制分类的类标签,名称列表 |
费用 |
误分类代价,一个数值矩阵 |
DistributionNames |
预测器变量的条件分布的名称,或者是每个单元格包含的单元格数组“正常 或“mvmn” ,或价值“锰” |
DistributionParameters |
预测器变量的条件分布的参数值,长度为2个数值向量的单元格数组(有关详细信息,请参阅DistributionParameters ) |
NumPredictors |
预测数,一个正整数。 |
之前 |
先验类标签分布,一个数值向量 |
分数变换 |
分数转换函数,一个名称或函数句柄。 |
Y |
提供给fitcnb 为递增学习计算每个类别的权重,存储为标签数组(参见Y ) |
增量学习,或在线学习,是机器学习的一个分支,涉及处理来自数据流的传入数据,可能对预测变量的分布、预测或目标函数的方面(包括调优参数值)或观察值是否被标记的知识很少或没有。增量学习与传统机器学习不同,传统机器学习有足够的标记数据来适应模型,执行交叉验证来调整超参数,并推断预测器分布。
给定传入的观察,增量学习模型以下列任何一种方式处理数据,但通常按以下顺序:
预测标签。
测量预测性能。
检查模型中的结构断裂或漂移。
使模型与传入的观测值相符。
的updateMetrics
和updateMetricsAndFit
功能跟踪模型性能指标(“指标”
)从新数据中删除增量模型时温暖的(IsWarm
属性)。增量模型是暖时适合
或updateMetricsAndFit
执行以下两个操作:
使增量模型适合于MetricsWarmupPeriod观察,这是度量预热期.
过程MaxNumClasses
类或由一会
名称值参数。
的指标
增量模型的属性将每个性能指标的两种形式存储为表的变量(列),累积
和窗口
,每行都有单独的指标。当增量模型为暖时,updateMetrics
和updateMetricsAndFit
以下列频率更新度量标准:
累积
-这些函数计算自模型性能跟踪开始以来的累积度量。每次调用函数时,函数都会更新指标,并基于所提供的整个数据集进行计算。
窗口
-函数根据窗口内的所有观察值计算度量值MetricsWindowSize名称-值对的论点。MetricsWindowSize
也决定了软件更新的频率窗口
指标。例如,如果MetricsWindowSize
为20时,函数根据所提供数据中的最近20个观察值计算度量值(X((end - 20 + 1):end,:)
和Y((end - 20 + 1):结束)
).
跟踪窗口内性能指标的增量函数使用以下过程:
对于每个指定的度量,存储一个长度的缓冲区MetricsWindowSize
以及观察权值的缓冲。
使用基于批量传入观察数据的模型性能填充指标缓冲区的元素,并将相应的观察权重存储在权重缓冲区中。
当缓冲区被填满时,覆盖Mdl.Metrics.Window
在指标窗口中使用加权平均性能。如果在函数处理一批观察值时缓冲区被填满,则最新传入的MetricsWindowSize
观测数据进入缓冲区,最早的观测数据从缓冲区中删除。例如,假设MetricsWindowSize
为20时,度量缓冲区具有来自先前处理批的10个值,15个值为传入值。若要组成长度20窗口,函数将使用来自15个传入观察值的测量值和来自上一批的最近5个测量值。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。