主要内容GYdF4y2Ba

RegressionPartitionedGAMGYdF4y2Ba

交叉验证的广义可加模型(GAM)用于回归GYdF4y2Ba

    描述GYdF4y2Ba

    RegressionPartitionedGAMGYdF4y2Ba是在交叉验证褶皱上训练的一组广义可加模型。使用一种或多种方法估计交叉验证回归的质量GYdF4y2Ba肯福尔德GYdF4y2Ba职能:GYdF4y2BakfoldPredictGYdF4y2Ba,GYdF4y2BakfoldLossGYdF4y2Ba,GYdF4y2BakfoldfunGYdF4y2Ba.GYdF4y2Ba

    每一个GYdF4y2Ba肯福尔德GYdF4y2Ba目标函数使用在训练折叠(in-fold)观察中训练的模型来预测验证折叠(out-of-fold)观察的响应。例如,假设您使用五个折叠进行交叉验证。软件将每个观察随机分配到五组大小相等(大致相同)的组中GYdF4y2Ba培训褶皱GYdF4y2Ba包含四组(大约是数据的4/5)GYdF4y2Ba验证褶皱GYdF4y2Ba包含另一组(约占数据的1/5)。在这种情况下,交叉验证的过程如下:GYdF4y2Ba

    1. 软件训练第一个模型(存储在GYdF4y2BaCVMdl。训练有素的{1}GYdF4y2Ba)通过使用最后四组中的观察,并保留第一组的观察验证。GYdF4y2Ba

    2. 软件训练第二个模型(存储在GYdF4y2BaCVMdl。训练有素的{2}GYdF4y2Ba),利用第一组和最后三组的观察结果。该软件保留第二组的观察结果以供验证。GYdF4y2Ba

    3. 对于第三、第四和第五种模型,软件以类似的方式进行。GYdF4y2Ba

    如果您使用GYdF4y2BakfoldPredictGYdF4y2Ba,该软件计算出对小组观测结果的预测GYdF4y2Ba我GYdF4y2Ba通过使用GYdF4y2Ba我GYdF4y2Ba模型。简而言之,该软件通过使用未经该观察而训练的模型来估计每个观察的响应。GYdF4y2Ba

    创建GYdF4y2Ba

    您可以创建GYdF4y2BaRegressionPartitionedGAMGYdF4y2Ba模型以两种方式:GYdF4y2Ba

    • 从GAM对象创建一个交叉验证的模型GYdF4y2BaRegressionGAMGYdF4y2Ba通过使用GYdF4y2Ba克罗斯瓦尔GYdF4y2Ba对象的功能。GYdF4y2Ba

    • 通过使用使用的交叉验证模型GYdF4y2BafitrgamGYdF4y2Ba函数并指定一个名称-值参数GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba,GYdF4y2Ba“CVPartition”GYdF4y2Ba,GYdF4y2Ba“坚持”GYdF4y2Ba,GYdF4y2Ba“KFold”GYdF4y2Ba,或GYdF4y2Ba“发酵剂”GYdF4y2Ba.GYdF4y2Ba

    属性GYdF4y2Ba

    全部展开GYdF4y2Ba

    GAM特性GYdF4y2Ba

    指示响应变量的标准偏差的模型是否适合标志,指定为GYdF4y2Ba错误的GYdF4y2Ba或GYdF4y2Ba真正的GYdF4y2Ba.指定GYdF4y2Ba“FitStandardDeviation”GYdF4y2Ba名称-值参数GYdF4y2BafitrgamGYdF4y2Ba像GYdF4y2Ba真正的GYdF4y2Ba以拟合标准偏差的模型。GYdF4y2Ba

    如果GYdF4y2BaIsStandardDeviationFitGYdF4y2Ba是GYdF4y2Ba真正的GYdF4y2Ba,然后您可以评估预测数据的标准偏差GYdF4y2BaXGYdF4y2Ba通过使用GYdF4y2BakfoldPredictGYdF4y2Ba。此函数还返回响应变量的预测间隔,在GYdF4y2BaXGYdF4y2Ba.GYdF4y2Ba

    数据类型:GYdF4y2Ba必然的GYdF4y2Ba

    交叉验证属性GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    交叉验证的模型名称,指定为GYdF4y2Ba“社交”GYdF4y2Ba.GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    交叉验证折叠的数量,指定为正整数。GYdF4y2Ba

    数据类型:GYdF4y2Ba双GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    作为对象指定的交叉验证参数值。参数值对应于用于交叉验证广义可加模型的名称-值参数的值。GYdF4y2Ba模型参数GYdF4y2Ba不包含估计的参数。GYdF4y2Ba

    的属性GYdF4y2Ba模型参数GYdF4y2Ba使用点表示法。GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    数据分区,指示软件如何将数据分割成交叉验证折叠,指定为GYdF4y2BaCVD分区GYdF4y2Ba模型。GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    在交叉验证折叠上训练的紧凑模型,指定为单元阵列GYdF4y2Bacompactregressiongam.GYdF4y2Ba模型对象。GYdF4y2Ba训练有素的GYdF4y2Ba有GYdF4y2BaKGYdF4y2Ba细胞,GYdF4y2BaKGYdF4y2Ba为折叠次数。GYdF4y2Ba

    数据类型:GYdF4y2Ba细胞GYdF4y2Ba

    其他回归属性GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    分类预测指标,指定为一个正整数向量。GYdF4y2BaCategoricalPredictorsGYdF4y2Ba包含指示对应的预测器是分类的索引值。索引值在1到之间GYdF4y2BaPGYdF4y2Ba,在那里GYdF4y2BaPGYdF4y2Ba为用于训练模型的预测器数量。如果没有任何预测器是绝对的,则此属性为空(GYdF4y2Ba[]GYdF4y2Ba).GYdF4y2Ba

    数据类型:GYdF4y2Ba双GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    在训练数据中存储的观测数GYdF4y2BaXGYdF4y2Ba和GYdF4y2BaYGYdF4y2Ba,指定为数值标量。GYdF4y2Ba

    数据类型:GYdF4y2Ba双GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    预测器变量名,指定为字符向量的单元格数组。元素的顺序GYdF4y2Ba预测的人GYdF4y2Ba对应于预测器名称在训练数据中出现的顺序。GYdF4y2Ba

    数据类型:GYdF4y2Ba细胞GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    响应变量名,指定为字符向量。GYdF4y2Ba

    数据类型:GYdF4y2Ba字符GYdF4y2Ba

    响应转换函数,指定为GYdF4y2Ba“没有”GYdF4y2Ba或者函数句柄。GYdF4y2BaResponseTransformGYdF4y2Ba描述软件如何转换原始响应值。GYdF4y2Ba

    对于一个MATLABGYdF4y2Ba®GYdF4y2Ba函数或您定义的函数,输入其函数句柄。例如,输入GYdF4y2BaMdl。ResponseTransform = @GYdF4y2Ba函数GYdF4y2Ba,在那里GYdF4y2Ba函数GYdF4y2Ba接受原始响应的数字向量,并返回大小相同的数字向量,其中包含转换后的响应。GYdF4y2Ba

    数据类型:GYdF4y2Ba字符GYdF4y2Ba|GYdF4y2Ba功能手柄GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    用于训练模型的观测权值,指定为GYdF4y2BaNGYdF4y2Ba-1号数字矢量。GYdF4y2BaNGYdF4y2Ba为观测次数(GYdF4y2BaNumObservationsGYdF4y2Ba).GYdF4y2Ba

    该软件将观测权归一化GYdF4y2Ba“重量”GYdF4y2Ba参数的名称-值,以便GYdF4y2BaWGYdF4y2Ba总和为1。GYdF4y2Ba

    数据类型:GYdF4y2Ba双GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    用于交叉验证模型的预测器,指定为数字矩阵或表。GYdF4y2Ba

    每一行的GYdF4y2BaXGYdF4y2Ba对应于一个观察,并且每列对应于一个变量。GYdF4y2Ba

    数据类型:GYdF4y2Ba单GYdF4y2Ba|GYdF4y2Ba双GYdF4y2Ba|GYdF4y2Ba表格GYdF4y2Ba

    此属性是只读的。GYdF4y2Ba

    用于交叉验证模型(指定为数字向量)的响应。GYdF4y2Ba

    每一行的GYdF4y2BaYGYdF4y2Ba的对应行所观察到的响应GYdF4y2BaXGYdF4y2Ba.GYdF4y2Ba

    数据类型:GYdF4y2Ba单GYdF4y2Ba|GYdF4y2Ba双GYdF4y2Ba

    目标函数GYdF4y2Ba

    kfoldPredictGYdF4y2Ba 在交叉验证的回归模型中预测观察的反应GYdF4y2Ba
    kfoldLossGYdF4y2Ba 交叉验证分区回归模型的损失GYdF4y2Ba
    kfoldfunGYdF4y2Ba 交叉验证功能的回归GYdF4y2Ba

    例子GYdF4y2Ba

    全部折叠GYdF4y2Ba

    使用10倍交叉验证GAM,这是默认的交叉验证选项GYdF4y2BafitrgamGYdF4y2Ba.然后,用GYdF4y2BakfoldPredictGYdF4y2Ba使用在训练折叠观察上训练的模型预测验证折叠观察的响应。GYdF4y2Ba

    加载GYdF4y2BacarbigGYdF4y2Ba数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。GYdF4y2Ba

    负载GYdF4y2BacarbigGYdF4y2Ba

    创建一个包含预测变量的表(GYdF4y2Ba加速度GYdF4y2Ba,GYdF4y2Ba位移GYdF4y2Ba,GYdF4y2Ba马力GYdF4y2Ba,GYdF4y2Ba重量GYdF4y2Ba)和响应变量(GYdF4y2Ba英里/加仑GYdF4y2Ba).GYdF4y2Ba

    tbl=表(加速度、位移、马力、重量、MPG);GYdF4y2Ba

    使用默认的交叉验证选项创建一个交叉验证的GAM。指定GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba名称-值参数为GYdF4y2Ba“开”GYdF4y2Ba.GYdF4y2Ba

    RNG(GYdF4y2Ba'默认'GYdF4y2Ba)GYdF4y2Ba再现性的百分比GYdF4y2BaCVMdl=FITGAM(待定,GYdF4y2Ba“MPG”GYdF4y2Ba,GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba,GYdF4y2Ba“开”GYdF4y2Ba)GYdF4y2Ba
    CVMdl=RegressionPartitionedGAM CrossValidatedModel:'GAM'预测名称:{1x4 cell}ResponseName:'MPG'NumObservations:398 KFold:10分区:[1x1 cvpartition]NumTrainedPerFold:[1x1 struct]ResponseTransform:'none'是标准偏差拟合:0属性、方法GYdF4y2Ba

    这个GYdF4y2BafitrgamGYdF4y2Ba函数创建一个GYdF4y2BaRegressionPartitionedGAMGYdF4y2Ba模型对象GYdF4y2Bacvmdl.GYdF4y2Ba10倍。在交叉验证期间,软件完成以下步骤:GYdF4y2Ba

    1. 将数据随机分成10组。GYdF4y2Ba

    2. 对于每个集合,保留集合作为验证数据,并使用其他9个集合训练模型。GYdF4y2Ba

    3. 将10个紧凑、经过训练的模型a存储在GYdF4y2Ba训练有素的GYdF4y2Ba属性的交叉验证模型对象GYdF4y2BaRegressionPartitionedGAMGYdF4y2Ba.GYdF4y2Ba

    您可以使用GYdF4y2Ba“CVPartition”GYdF4y2Ba,GYdF4y2Ba“坚持”GYdF4y2Ba,GYdF4y2Ba“KFold”GYdF4y2Ba,或GYdF4y2Ba“发酵剂”GYdF4y2Ba名称-值参数。GYdF4y2Ba

    预测观察的响应GYdF4y2BaTBL.GYdF4y2Ba通过使用GYdF4y2BakfoldPredictGYdF4y2Ba.该函数预测每个观测的响应,使用未经该观测训练的模型。GYdF4y2Ba

    yHat=kfoldPredict(CVMdl);GYdF4y2Ba

    yHatGYdF4y2Ba是一个数字向量。显示前五个预测的反应。GYdF4y2Ba

    yhat(1:5)GYdF4y2Ba
    ans=GYdF4y2Ba5×1GYdF4y2Ba19.4848 15.7203 15.5742 15.3185 17.8223GYdF4y2Ba

    计算回归损失(均方误差)。GYdF4y2Ba

    L = kfoldLoss (CVMdl)GYdF4y2Ba
    L = 17.7248.GYdF4y2Ba

    kfoldLossGYdF4y2Ba返回10倍的平均平方误差。GYdF4y2Ba

    利用遗传算法训练回归广义加性模型(GAM)GYdF4y2BafitrgamGYdF4y2Ba,并创建一个交叉验证的GAMGYdF4y2Ba克罗斯瓦尔GYdF4y2Ba和HoldOut选项。然后,用GYdF4y2BakfoldPredictGYdF4y2Ba使用在训练折叠观察上训练的模型预测验证折叠观察的响应。GYdF4y2Ba

    加载GYdF4y2Ba耐心GYdF4y2Ba数据集。GYdF4y2Ba

    负载GYdF4y2Ba耐心GYdF4y2Ba

    创建一个包含预测变量的表(GYdF4y2Ba年龄GYdF4y2Ba,GYdF4y2Ba舒张压GYdF4y2Ba,GYdF4y2Ba吸烟者GYdF4y2Ba,GYdF4y2Ba重量GYdF4y2Ba,GYdF4y2Ba性别GYdF4y2Ba,GYdF4y2BaSelfassessedHealthStatus.GYdF4y2Ba)和响应变量(GYdF4y2Ba收缩压GYdF4y2Ba).GYdF4y2Ba

    TBL =表(年龄,舒张,吸烟者,体重,性别,自主精神健康,收缩系统);GYdF4y2Ba

    训练包含预测因子线性项的GAM。GYdF4y2Ba

    Mdl=FITGAM(待定,GYdF4y2Ba“收缩”GYdF4y2Ba);GYdF4y2Ba

    MdlGYdF4y2Ba是一个GYdF4y2BaRegressionGAMGYdF4y2Ba模型对象。GYdF4y2Ba

    通过指定30%HoldOut示例来交叉验证模型。GYdF4y2Ba

    RNG(GYdF4y2Ba'默认'GYdF4y2Ba)GYdF4y2Ba再现性的百分比GYdF4y2BaCVMdl=crossval(Mdl,GYdF4y2Ba“坚持”GYdF4y2Ba, 0.3)GYdF4y2Ba
    CVMdl=RegressionPartitionedGAM CrossValidatedModel:'GAM'预测名称:{1x6 cell}分类预测值:[3 5 6]ResponseName:'Sytolic'NumObservations:100 KFold:1分区:[1x1 cvpartition]NumTrainedPerFold:[1x1结构]ResponseTransform:'none'是标准偏差拟合:0属性、方法GYdF4y2Ba

    这个GYdF4y2Ba克罗斯瓦尔GYdF4y2Ba函数创建一个GYdF4y2BaRegressionPartitionedGAMGYdF4y2Ba模型对象GYdF4y2Bacvmdl.GYdF4y2Ba选择“钉鞋”。在交叉验证期间,软件完成以下步骤:GYdF4y2Ba

    1. 随机选择并保留30%的数据作为验证数据,并使用其余数据对模型进行训练。GYdF4y2Ba

    2. 将经过培训的紧凑型模型存储在GYdF4y2Ba训练有素的GYdF4y2Ba属性的交叉验证模型对象GYdF4y2BaRegressionPartitionedGAMGYdF4y2Ba.GYdF4y2Ba

    您可以使用GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba,GYdF4y2Ba“CVPartition”GYdF4y2Ba,GYdF4y2Ba“KFold”GYdF4y2Ba,或GYdF4y2Ba“发酵剂”GYdF4y2Ba名称-值参数。GYdF4y2Ba

    使用GYdF4y2BakfoldPredictGYdF4y2Ba.该功能通过使用在训练折叠观测上培训的模型来预测验证折叠观测的响应。函数分配GYdF4y2Ba楠GYdF4y2Ba到训练折叠观察。GYdF4y2Ba

    yFit=kfoldPredict(CVMdl);GYdF4y2Ba

    找到验证折叠观察索引,并创建包含观察索引,观察到的响应值和预测响应值的表。显示表的前八行。GYdF4y2Ba

    idx =找到(~ isnan (yFit));t =表(idx tbl.Systolic (idx) yFit (idx),GYdF4y2Ba...GYdF4y2Ba“VariableNames”GYdF4y2Ba,{GYdF4y2Ba“观测指标”GYdF4y2Ba,GYdF4y2Ba的观测值GYdF4y2Ba,GYdF4y2Ba的预测价值GYdF4y2Ba});头(t)GYdF4y2Ba
    ans =GYdF4y2Ba8×3表GYdF4y2Ba观测指数观测值预测值_________________ ______________ _______________ 1 124 130.22 6 121 124.38 7 130 125.26 12 115 117.05 20 125 121.82 22 123 116.99 23 114 107 24 128 122.52GYdF4y2Ba

    计算验证倍数观测的回归误差(均方误差)。GYdF4y2Ba

    L = kfoldLoss (CVMdl)GYdF4y2Ba
    L = 43.8715GYdF4y2Ba

    训练10倍交叉验证的广义可加模型。然后,用GYdF4y2BakfoldLossGYdF4y2Ba计算累积交叉验证回归损耗(均值平方误差)。使用错误来确定每个预测器的最佳树木(用于预测器的线性术语)和每个互动项的最佳树木。GYdF4y2Ba

    或者,您可以找到的最优值GYdF4y2BafitrgamGYdF4y2Ba的名称-值参数GYdF4y2BaOptimizeHyperparametersGYdF4y2Ba名称-值参数。例如,请参见GYdF4y2Ba使用OptimizeHyperparameters优化GAMGYdF4y2Ba.GYdF4y2Ba

    加载GYdF4y2Ba耐心GYdF4y2Ba数据集。GYdF4y2Ba

    负载GYdF4y2Ba耐心GYdF4y2Ba

    创建一个包含预测变量的表(GYdF4y2Ba年龄GYdF4y2Ba,GYdF4y2Ba舒张压GYdF4y2Ba,GYdF4y2Ba吸烟者GYdF4y2Ba,GYdF4y2Ba重量GYdF4y2Ba,GYdF4y2Ba性别GYdF4y2Ba,GYdF4y2BaSelfassessedHealthStatus.GYdF4y2Ba)和响应变量(GYdF4y2Ba收缩压GYdF4y2Ba).GYdF4y2Ba

    TBL =表(年龄,舒张,吸烟者,体重,性别,自主精神健康,收缩系统);GYdF4y2Ba

    使用默认的交叉验证选项创建一个交叉验证的GAM。指定GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba名称-值参数为GYdF4y2Ba“开”GYdF4y2Ba.另外,指定包含5个交互项。GYdF4y2Ba

    RNG(GYdF4y2Ba'默认'GYdF4y2Ba)GYdF4y2Ba再现性的百分比GYdF4y2BaCVMdl=FITGAM(待定,GYdF4y2Ba“收缩”GYdF4y2Ba,GYdF4y2Ba“克罗斯瓦尔”GYdF4y2Ba,GYdF4y2Ba“开”GYdF4y2Ba,GYdF4y2Ba“互动”GYdF4y2Ba,5);GYdF4y2Ba

    如果您指定GYdF4y2Ba“模式”GYdF4y2Ba像GYdF4y2Ba“累积”GYdF4y2Ba对于GYdF4y2BakfoldLossGYdF4y2Ba,则函数返回累积错误,累积错误是使用相同数目的树为每次折叠获得的所有折叠的平均错误。显示每个折叠的树的数量。GYdF4y2Ba

    cvmdl.numtrainerperfold.GYdF4y2Ba
    ans=GYdF4y2Ba结构体字段:GYdF4y2BaInteractionTrees: [76 100 100 100 100 100 42 100 100 100 59 100]GYdF4y2Ba

    kfoldLossGYdF4y2Ba可以使用多达300个预测树和42个交互树计算累积误差。GYdF4y2Ba

    绘制累积,10倍交叉验证,平均平方误差。指定GYdF4y2Ba“包容性互动”GYdF4y2Ba像GYdF4y2Ba错误的GYdF4y2Ba将相互作用项从计算中排除。GYdF4y2Ba

    l_nointactactions = kfoldloss(cvmdl,GYdF4y2Ba“模式”GYdF4y2Ba,GYdF4y2Ba“累积”GYdF4y2Ba,GYdF4y2Ba“包容性互动”GYdF4y2Ba、假);图绘制(0:min (CVMdl.NumTrainedPerFold.PredictorTrees) L_noInteractions)GYdF4y2Ba

    图中包含一个axes对象。axes对象包含一个line类型的对象。GYdF4y2Ba

    第一个元素GYdF4y2Ba无交互作用GYdF4y2Ba为仅使用截距(常数)项得到的所有折叠的平均误差。(GYdF4y2BaJ + 1GYdF4y2Ba)GYdF4y2Ba无交互作用GYdF4y2Ba是使用截距项和第一项得到的平均误差吗GYdF4y2BaJGYdF4y2Ba每个线性项的预测树。绘制累积损失允许您监控误差如何随着GAM中预测树数量的增加而变化。GYdF4y2Ba

    找出最小误差和用于达到最小误差的预测树的数目。GYdF4y2Ba

    [M,我]= min (L_noInteractions)GYdF4y2Ba
    M = 28.0506GYdF4y2Ba
    I=6GYdF4y2Ba

    该算法在包含5棵预测树时误差最小。GYdF4y2Ba

    利用线性项和交互项计算累积均方误差。GYdF4y2Ba

    L = kfoldLoss (CVMdl,GYdF4y2Ba“模式”GYdF4y2Ba,GYdF4y2Ba“累积”GYdF4y2Ba);图绘制(0:min (CVMdl.NumTrainedPerFold.InteractionTrees), L)GYdF4y2Ba

    图中包含一个axes对象。axes对象包含一个line类型的对象。GYdF4y2Ba

    第一个元素GYdF4y2BaLGYdF4y2Ba为使用截距(常数)项和所有预测树每个线性项获得的所有折叠的平均误差。(GYdF4y2BaJ + 1GYdF4y2Ba)GYdF4y2BaLGYdF4y2Ba是使用截距项、每个线性项的所有预测树和第一个预测树获得的平均误差GYdF4y2BaJGYdF4y2Ba每个交互项的交互树。图中显示,当添加交互项时,误差增加。GYdF4y2Ba

    如果当预测树的数目为5时,您对错误感到满意,则可以通过再次训练单变量GAM并指定GYdF4y2Ba“NumTreesPerPredictor”,5GYdF4y2Ba没有交叉验证。GYdF4y2Ba

    更多关于GYdF4y2Ba

    全部展开GYdF4y2Ba

    介绍了R2021aGYdF4y2Ba