预测
从线性增量学习模型预测新观测的响应
语法
描述
例子
预测类别标签
加载人类活动数据集。
负载humanactivity
关于数据集的详细信息,请输入描述
在命令行。
回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid
> 2)。
Y = actid > 2;
对整个数据集拟合线性分类模型。
TTMdl = fitclinear(专长,Y)
TTMdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double]偏差:-0.2005 Lambda: 4.1537e-05学习者:'svm'属性,方法
TTMdl
是一个ClassificationLinear
模型对象表示传统训练的线性分类模型。
将传统训练的线性分类模型转换为增量学习的二元分类线性模型。
IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1x2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double]偏差:-0.2005 Learner: 'svm'属性,方法
IncrementalMdl
是一个incrementalClassificationLinear
利用支持向量机为增量学习准备模型对象。
的
incrementalLearner
函数通过将学习到的系数以及其他信息传递给增量学习器来初始化增量学习器TTMdl
从训练数据中学习。IncrementalMdl
是温暖的(IsWarm
是1
),这意味着增量学习功能可以开始跟踪性能指标。的
incrementalLearner
配置使用自适应比例不变求解器训练的模型,而fitclinear
训练有素的TTMdl
使用BFGS求解器
通过转换传统训练模型创建的增量学习器可以生成预测,而无需进一步处理。
使用这两种模型预测所有观测值的类别标签。
ttlabels = predict(TTMdl,feat);illables = predict(IncrementalMdl,壮举);sameLabels = sum(ttlabels ~= illables) == 0
sameLabels =逻辑1
这两个模型对每个观测结果都预测了相同的标签。
在数据中指定观测方向
如果你沿着预测器数据矩阵的列定向观察,你可以在增量学习期间体验到效率的提高。
加载和洗牌2015年纽约市住房数据集。有关数据的详细信息,请参见纽约市开放数据.
负载NYCHousing2015rng (1)%用于再现性n = size(NYCHousing2015,1);Shuffidx = randsample(n,n);NYCHousing2015 = NYCHousing2015(shuffidx,:);
提取响应变量SALEPRICE
从桌子上。将日志转换应用于SALEPRICE
.
Y = log(NYCHousing2015。售价+ 1);添加1以避免log为0NYCHousing2015。售价= [];
从分类预测器创建虚拟变量矩阵。
Catvars = [“区”“BUILDINGCLASSCATEGORY”“社区”];dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,...“数据源”, catvars);Dumvarmat = table2array(dumvarstbl);NYCHousing2015(:,catvars) = [];
将表中所有其他数值变量视为销售价格的线性预测因子。将虚拟变量矩阵连接到其余的预测器数据,并将数据转置以加快计算速度。
idxnum = varfun(@isnumeric,NYCHousing2015,“OutputFormat”,“统一”);X = [dumvarmat NYCHousing2015{:,idxnum}]';
为增量学习配置一个线性回归模型,没有估计周期。
Mdl =增量回归线性(“学习者”,“leastsquares”,“EstimationPeriod”, 0);
Mdl
是一个incrementalRegressionLinear
模型对象。
执行增量学习和预测,每次迭代都遵循以下步骤:
通过一次处理100个观测数据块来模拟数据流。
使模型适合传入的数据块。指定观察值沿数据列方向排列。用新模型覆盖以前的增量模型。
使用拟合的模型和传入的数据块预测响应。指定观察值沿数据列方向排列。
%预先配置numObsPerChunk = 100;n =数字(Y);nchunk = floor(n/numObsPerChunk);R = nan(n,1);图h =图(r);h.YDataSource =“r”;ylabel (“残差”)包含(“迭代”)%增量拟合为j = 2:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;Mdl = fit(Mdl,X(:,idx),Y(idx),“ObservationsIn”,“列”);yhat = predict(Mdl,X(:,idx),“ObservationsIn”,“列”);r(idx) = Y(idx) - yhat;refreshdata drawnow结束
Mdl
是一个incrementalRegressionLinear
在流中的所有数据上训练的模型对象。
残差在整个增量学习过程中对称地分布在0附近。
计算后验类别概率
要计算后验类概率,请指定逻辑回归增量学习器。
加载人类活动数据集。随机打乱数据。
负载humanactivityN = numel(actid);rng (10);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);
关于数据集的详细信息,请输入描述
在命令行。
回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid
> 2)。
Y = Y > 2;
为二元分类创建增量逻辑回归模型。准备好预测
通过指定类名和任意系数和偏置值。
p = size(X,2);Beta = randn(p,1);偏差= randn(1);Mdl =增量分类线性(“学习者”,“物流”,“β”,β,...“偏见”偏见,“类名”,独特的(Y));
Mdl
是一个incrementalClassificationLinear
模型。它的所有属性都是只读的。而不是指定任意的值,你可以采取以下任何一种操作来准备模型:
训练用于二元分类的逻辑回归模型
fitclinear
在数据的子集上(如果可用),然后通过使用将模型转换为增量学习器incrementalLearner
.逐步适应
Mdl
通过使用适合
.
模拟一个数据流,并对每个传入的50个观测数据块执行以下操作。
调用
预测
预测输入数据块中观测值的分类分数。分类分数是逻辑回归学习者的后验类概率。调用
rocmetrics
使用输入的数据块计算ROC曲线下的面积(AUC),并存储结果。调用
适合
使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测值的新模型。
numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);Auc = 0 (nchunk,1);%增量学习为j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;[~,posteriorProb] = predict(Mdl,X(idx,:));rocObj = rocmetrics(Y(idx),posteriorProb, mll . classnames);auc(j) = rocObj.AUC(1);Mdl = fit(Mdl,X(idx,:),Y(idx));结束
Mdl
是一个incrementalClassificationLinear
在流中的所有数据上训练的模型对象。
在输入的数据块上绘制AUC。
情节(auc) ylabel (“AUC”)包含(“迭代”)
图中显示,在增量学习过程中,分类器可以很好地预测移动的主题。
输入参数
Mdl
- - - - - -增量学习模式
incrementalClassificationLinear
模型对象|incrementalRegressionLinear
模型对象
增量学习模型,指定为incrementalClassificationLinear
或incrementalRegressionLinear
模型对象。你可以创建Mdl
直接或通过转换支持的,传统训练的机器学习模型使用金宝appincrementalLearner
函数。更多详细信息,请参见相应的参考页面。
您必须配置Mdl
为一批观察结果预测标签。
如果
Mdl
是一个转换的,传统训练的模型,你可以预测标签没有任何修改。否则,
Mdl
必须满足以下条件,你可以直接指定或拟合Mdl
到数据使用适合
或updateMetricsAndFit
.如果
Mdl
是一个incrementalRegressionLinear
它的模型系数Mdl。β
和偏见Mdl。偏见
必须为非空数组。如果
Mdl
是一个incrementalClassificationLinear
它的模型系数Mdl。β
和偏见Mdl。偏见
必须为非空数组和类名Mdl。一会
必须包含两个类。无论对象类型如何,如果配置模型使函数标准化预测器数据,那么预测器意味着
Mdl。μ
还有标准差Mdl。σ
必须为非空数组。
维
- - - - - -预测器数据观测维数
“行”
(默认)|“列”
预测器数据观测维数,指定为“列”
或“行”
.
例子:“ObservationsIn”、“列”
数据类型:字符
|字符串
输出参数
标签
-预测反应(标签)
分类数组|字符数组|字符串向量|逻辑向量|单元格字符向量数组|浮点向量
预测的响应(标签),作为类别或字符数组返回;浮点、逻辑或字符串向量;或者单元格数组的字符向量n行。n观察的数量在吗X
,标签(
预测的反应是观察吗j
)
.j
对于回归问题,
标签
是浮点向量。对于分类问题,
标签
存储的类名具有相同的数据类型Mdl。一会
.(该软件将字符串数组视为字符向量的单元格数组。)的
预测
函数将观察结果划分为得分最高的类别。为了观察南
分数,该函数将观察结果划分为多数类,这在训练标签中所占的比例最大。
更多关于
分类分
对于线性增量学习模型的二进制分类,原始分类分对观测进行分类x,一个行向量,入正类为
在哪里
β0是标量偏置
Mdl。偏见
.β是系数的列向量吗
Mdl。β
.
用于分类的原始分类分数x进入负类的是-f(x).该软件将观察结果分为产生正分的类别。
如果线性分类模型由逻辑回归学习器组成,则该软件应用分对数的
分数转换为原始分类分数。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)方法生成代码预测
函数。通过使用保存一个训练好的模型saveLearnerForCoder
.定义一个入口点函数,该函数通过loadLearnerForCoder
并调用预测
函数。然后使用codegen
为入口点函数生成代码。生成单精度C/ c++代码
预测
,指定名称-值参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。该表包含关于的参数的注释
预测
.完全支持不包括在本表中的参数。金宝app论点 注意事项和限制 Mdl
有关模型对象的使用说明和限制,请参见
incrementalClassificationLinear
或incrementalRegressionLinear
.X
批对批,观察的数量可以是一个可变的大小。
预测变量的数量必须等于
Mdl。NumPredictors
.X
必须单
或双
.
以下限制适用:
如果你配置
Mdl
打乱数据(Mdl。洗牌
是真正的
,或Mdl。解算器
是“sgd”
或“asgd”
),预测
函数随机洗牌每批传入的观测值,然后再将模型与该批匹配。打乱后的观测顺序可能与MATLAB生成的顺序不匹配®.因此,如果你适合Mdl
在生成预测之前,用MATLAB计算的预测值和用生成的代码计算的预测值可能不相等。也可以对所有浮点输入参数和对象属性使用同构数据类型
单
或双
.
有关更多信息,请参见代码生成简介.
版本历史
R2020b中介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。