交叉验证分区回归模型的损失
的回归集成的交叉验证损失卡斯莫尔
数据
加载卡斯莫尔
数据集和选择位移,马力,和车辆重量作为预测。
负载卡斯莫尔X=[排量马力重量];
训练一组回归树。
任正非= fitrensemble (X, MPG);
创建一个交叉验证的集成伦斯
并求出k倍交叉验证损失。
rng(10,“龙卷风”)%的再现性cvrens=交叉值(rens);L=kfoldLoss(cvrens)
L=28.7114
均方误差(MSE)是模型质量的一种度量。检验交叉验证回归模型的每个折叠的MSE。
加载卡斯莫尔
数据集。指定预测值X
和响应数据Y
.
负载卡斯莫尔X=气缸排量马力重量;Y=每加仑;
训练一个交叉验证的回归树模型。默认情况下,该软件实现10倍交叉验证。
rng (“默认”)%的再现性CVMdl = fitrtree (X, Y,“克罗斯瓦尔”,“开”);
计算每个折叠的MSE。使用方框图可视化损失值的分布。请注意,没有一个值是异常值。
损失=kfoldLoss(CVMdl,“模式”,“个人”)
损失=10×142.5072 20.3995 22.3737 34.4255 40.8005 60.2755 19.5562 9.2060 29.0788 16.3386
boxchart(损失)
kfoldLoss
训练10倍交叉验证的广义加性模型(GAM)kfoldLoss
计算累积交叉验证回归损失(均方误差)。利用误差来确定每个预测器的最佳树数(预测器的线性项)和每个交互项的最佳树数。
或者,您可以找到菲特格姆
通过使用优化超参数名称值参数。有关示例,请参阅使用OptimizeHyperparameters优化GAM.
加载病人
数据集。
负载病人
创建一个包含预测变量的表(年龄
,舒张压
,吸烟者
,重量
,性别
和SelfAssessedHealthStatus
)和响应变量(收缩的
).
台=表(年龄、舒张压、吸烟、体重、性别、SelfAssessedHealthStatus,收缩期);
使用默认的交叉验证选项创建一个交叉验证的GAM。指定“克罗斯瓦尔”
将值参数命名为“开”
。此外,指定包含5个交互术语。
rng (“默认”)%的再现性CVMdl=FITGAM(待定,“收缩性”,“克罗斯瓦尔”,“开”,“互动”,5);
如果您指定“模式”
像“累积的”
对于kfoldLoss
,然后该函数返回累积误差,即使用每个折叠相同数量的树获得的所有折叠的平均误差。显示每个折叠的树数。
CVMdl。NumTrainedPerFold
ans=带字段的结构:InteractionTrees: [76 100 100 100 100 100 42 100 100 100 59 100]
kfoldLoss
可以使用多达300个预测树和42个交互树计算累积误差。
绘制累积的,10倍交叉验证,均方误差。指定“包容性互动”
像错误的
将相互作用项从计算中排除。
L_noInteractions = kfoldLoss (CVMdl,“模式”,“累积的”,“包容性互动”,假);图形绘图(0:min(CVMdl.NumTrainedPerFold.Predictor树),无交互)
第一要素无交互作用
是仅使用截距(常数)项获得的所有折叠的平均误差。(J + 1
) th元素的无交互作用
是使用截距项和第一个截距项获得的平均误差J
每个线性项的预测树。通过绘制累积损失图,您可以监控随着GAM中预测树数量的增加,错误如何变化。
找到最小误差和用于实现最小误差的预测树的数量。
[M,I]=min(无相互作用)
M=28.0506
I=6
当GAM包含5个预测树时,其误差最小。
使用线性项和交互项计算累积均方误差。
L = kfoldLoss (CVMdl,“模式”,“累积的”); 图形绘图(0:min(CVMdl.NumTrainedPerFold.InteractionTrees),L)
第一要素L
是使用截距(常数)项和每个线性项的所有预测树获得的所有折叠的平均误差(J + 1
) th元素的L
是使用截距项、每个线性项的所有预测树和第一个预测树获得的平均误差J
每个交互项的交互树。图中显示,当添加交互项时,误差增大。
如果当预测树的数目为5时,您对错误感到满意,则可以通过再次训练单变量GAM并指定“NumTreesPerPredictor”,5
没有交叉验证。
指定可选的逗号分隔的字符对名称、值
参数。名称
是参数名和价值
是对应的值。名称
必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家
.
kfoldLoss(CVMdl,'Folds',[1 2 3 5])
指定使用第一、第二、第三和第五次折叠来计算均方误差,但不包括第四次折叠。
褶皱
—要使用的折叠索引1:CVMdl.KFold
(默认)|正整数向量要使用的折叠索引,指定为正整数向量。的元素褶皱
必须在以下范围内:1.
到CVMdl.KFold
.
软件仅使用中指定的折叠褶皱
.
例子:“褶皱”[1 4 10]
数据类型:仅有一个的
|双
LossFun
—损失函数mse的
(默认)|函数句柄损失函数,指定为mse的
或者函数句柄。
指定内置函数mse的
. 在这种情况下,损失函数是均方误差。
使用函数句柄表示法指定您自己的函数。
假定N是训练数据中的观察数(CVMdl.NumObservations
).您的函数必须有签名lossvalue =
,其中:失意
(Y、Yfit、W)
输出参数损失值
是一个标量。
您可以指定函数名(失意
).
Y
是一个N-观察到的响应的by-1数值向量。
伊菲特
是一个N-预测响应的by-1数值向量。
W
是一个N-观察权重的by-1数值向量。
使用“LossFun”@
.失意
数据类型:字符
|一串
|功能手柄
模式
—输出的聚合级别“平均”
(默认)|“个人”
|“累积的”
输出的聚合级别,指定为“平均”
,“个人”
或“累积的”
.
价值 | 描述 |
---|---|
“平均” |
输出是所有折叠的标量平均值。 |
“个人” |
输出是一个长度向量K每折叠包含一个值,其中K是折叠的数量。 |
“累积的” |
笔记 如果你想指定这个值,
|
例子:“模式”,“个人”
L
-损失丢失,作为数值标量或数值列向量返回。
默认情况下,损失是验证倍数观测值与根据训练倍数观测值训练的回归模型所作预测之间的均方误差。
如果模式
是“平均”
然后L
是所有折叠的平均损失。
如果模式
是“个人”
然后L
是一个K-by-1数值列向量,包含每个折叠的损失,其中K是折叠的数量。
如果模式
是“累积的”
和CVMdl
是回归分区集合
然后L
是一个最小值(CVMdl.NumTrainedPerFold)
-by-1数字列向量。每个元素J
是否该函数使用弱学习器训练的集合获得的所有折叠的平均损失1: j
.
如果模式
是“累积的”
和CVMdl
是回归分区
,则输出值取决于IncludeInteractions
价值
如果IncludeInteractions
是错误的
然后L
是一个(1+分钟(NumTrainedPerFold.trees))
-by-1数字列向量。的第一个元素L
为仅使用截距(常数)项得到的所有折叠的平均损失。的(j+1)
第th元素L
是使用截距项和第一个J
每个线性项的预测树。
如果IncludeInteractions
是符合事实的
然后L
是一个(1+分钟(NumTrainedPerFold.InteractionTrees))
-by-1数字列向量。的第一个元素L
是使用截距(常数)项和每个线性项的所有预测树获得的所有折叠的平均损失。的(j+1)
第th元素L
是使用截距项、每个线性项的所有预测树以及第一个J
每个交互项的交互树。
如果要计算树模型的交叉验证损失,可以避免构造回归分区模型
通过调用cvloss
. 如果计划多次检查交叉验证树对象,则创建交叉验证树对象可以节省时间。
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。