共计 18354 个字符,预计需要花费 46 分钟才能阅读完成。
原文链接:http://tecdat.cn/?p=24127
最近咱们被客户要求撰写对于预测鲍鱼年龄的钻研报告,包含一些图形和统计输入。
鲍鱼是一种贝类,在世界许多中央都被视为美味佳肴
养殖者通常会切开贝壳并通过显微镜计算环数来预计鲍鱼的年龄。因而,判断鲍鱼的年龄很艰难,次要是因为它们的大小不仅取决于它们的年龄,还取决于食物的供给状况。而且,鲍鱼有时会造成所谓的“发育不良”种群,其成长特色与其余鲍鱼种群十分不同。这种简单的办法减少了老本并限度了其遍及。咱们在这份报告中的指标是找出最好的指标来预测鲍鱼的环,而后是鲍鱼的年龄。
数据集
背景介绍
这个数据集 ( 查看文末理解数据获取形式 ) 来自一项原始(非机器学习)钻研。
从原始数据中删除了有缺失值的例子(大多数预测值缺失),间断值的范畴被缩放用于 NA(通过除以 200)。在本剖析中,咱们将通过乘以 200 的形式将这些变量复原到其原始模式。
数据集中的观测值总数:4176
数据集中的变量总数:8 个
变量列表
变量 | 数据类型 | 测量 | 形容 |
---|---|---|---|
性别 | 分类(因子) | M、F 和 I(婴儿) | |
长度 | 间断 | 毫米 | 最长壳测量 |
直径 | 间断 | 毫米 | 垂直长度 |
高度 | 间断 | 毫米 | 带壳肉 |
整体分量 | 间断 | 克 | 整只鲍鱼 |
去壳分量 | 间断 | 克 | 肉的分量 |
内脏分量 | 间断 | 克 | 肠道分量 |
外壳分量 | 间断 | 克 | 晒干后 |
鲍鱼的环 | 间断 | +1.5 给出以年为单位的年龄 |
上面是剖析
“应用回归预测鲍鱼的年龄”
数据汇总与统计
balne$Sx <- s.acor(aalne$Sex)
kale(abaoe[1:10,],fomt 'madw')
分类变量
数值变量
看一下数据集的摘要,咱们能够看到,数据在雄性、雌性和婴儿这三个因素程度之间的散布是相当平均的。
因变量
因果变量 Rings 蕴含在数据集中。它被测量为切割和查看鲍鱼后察看到的环的数量。尽管它不能间接示意一个给定的鲍鱼的年龄,但它能够或多或少完满地确定它。一个鲍鱼的年龄等于环数 +1.5。因为这种关系是牢靠的,环数将被视为因变量。数据中测量的环数从 1 到 29 不等,大多数鲍鱼的环数在 5 到 15 之间。散布也有轻微的正偏斜,但没有问题。(见上面的图)
配对图
pairs(aalone, es(colour =Sex, aph = 0.)
从配对图中察看到的状况。
首先要留神的是数据的高度相关性。例如,直径和长度之间的相关性十分高(约 98.7)。
点击题目查阅往期内容
r 语言中对 LASSO 回归,Ridge 岭回归和弹性网络 Elastic Net 模型实现
左右滑动查看更多
01
02
03
04
同样,Whole\_weight 仿佛与其余分量预测因子高度相干,是 Shucked\_weight、Viscera\_weight 和 Shell\_weight 之和。
其次,预测因子 Sex 的散布与所有其余预测因子的因子程度值雌性和雄性十分类似。
对于雌性和雄性的因子程度,散布的形态也是十分类似的。
咱们能够思考从新定义这一特色,将性别定义为婴儿与非婴儿(其中非婴儿 = 雌性和雄性都是)。
大多数的 abalones 环都在 5 到 15 之间。
数据品质
减少变量。咱们将更新鲍鱼数据集,创立名为 “ 婴儿 “ 的新变量,它的值将基于性别变量的原始值。当性别变量为 I 时,它的值为 I,否则为 NI。
咱们还察看到,预测高度的最小值是 0,实际上这是不可能的,咱们将考察这些察看后果,认真钻研。
## 高度为 0 的数据质量检查
kable(abloe[aban$Height == 0,])
咱们看到,有两个观测值的高度可能没有被正确记录,因为其余预测因子仿佛都有无效的值。另外,如果咱们看一下预测因子 Whole_weight,咱们会发现这些值与其余察看值相比真的很小,而且低于第一个四分法。这通知咱们,这可能不是一个数据谬误,因而咱们不能将这些数据从咱们的数据集中排除。
咱们还将增加一个名为 weight.diff 的新变量。咱们能够在摘要中看到有四种不同的分量测量方法,即 Whole\_weight、Shucked\_weight、Viscera\_weight 和 Shell.weight。Whole\_weight 是其余分量预测因子的线性函数,在剥壳过程中损失的水 / 血的品质未知。
str(aane, give.attr= FASE)
咱们看到变量 Whole\_weight 应该是 Shucked\_weight、Viscersa\_weight 和 Shell\_weight 的线性函数,咱们能够写成 Whole\_weight = Shucked\_weight + Viscera\_weight + Shell\_weight + 剥壳过程中损失的未知水 / 血品质。
然而,当咱们计算 Whole_weight 和其余分量变量之间的差别时,咱们发现有 153 个观测值违反了这一规定,也就是说,这仿佛不合乎逻辑,可能是记录数据时的谬误。
如果咱们绘制新增加的 weight.diff 变量的直方图,咱们能够看到,当 weight.diff 为正数时,有一些察看后果。
# 确定没有正确记录的察看后果
#不合乎逻辑的察看后果的柱状图
ggplt(aalone, as(x=weight.diff)) +,ill=rb(1,.4,0,.7), bins = 30)
咱们来看看其中的一些记录。
nrow(ablon[abaoneweihtdff < 0,])
请留神,总共有 153 个观测值的综合权重超过了 Whole_weight。当咱们看了 10 个这样的观测值时,仿佛其余的值都是正确的,没有任何相似之处,所以咱们确信这可能是一个数据输出谬误。因而,咱们将保留这些察看后果,以便进一步剖析。
咱们将首先在训练和测试中潜入咱们的数据集。数据集将以 70/30 的比例在训练和测试之间进行宰割,并随机抉择观测值。
训练和测试拆分
set.ee(4)
#应用 70/30 办法在训练和测试中宰割数据
ndxes <-spl(1:owabaone, size= 0.3 nrw(bone))
aboetrai <- ablon[-indxs,]
abetest <- abloneindxe,]
咱们曾经开始用所有的变量拟合一个加法模型,并将钻研参数的重要性。在此基础上,咱们将批改咱们的模型。当初咱们将应用变量 Sex 的原始值,它的因子程度为 F、I 和 M。
加性多元线性回归模型
summary(abneadd)
在第一个加性模型中,留神因子程度雌性是性别变量的参考程度。
在用所有预测因子拟合加性模型后,咱们能够看到,除了长度之外,测试统计显示所有变量都是显著的。正如咱们之前从配对图中看到的那样,长度和直径的预测因子是高度相干的。咱们还看到,不同分量的预测因子也是显著的,只管它们应该是彼此的线性函数。
RMSE 分数
kable(rmse(aaloe_ad,"Aditve odel"))
咱们将计算方差收缩因子,以发现数据集存在的多重共线性问题。
多重共线性
vif
咱们看了所有变量的变量膨胀系数,仿佛所有的预测因子都有多重共线性问题,除了咱们之前在配对图中看到的性别和身高。预测因子 Whole_weight 的 VIF 值最高,因为它是其余体重的线性函数。
Whole_weight & Rings 之间的偏相关系数:咱们将首先计算Whole_weight
变量和因变量(Rings)的偏相关系数。
# 查看高共线性关系变量的异方差性
wole_wigt_it <- lm(holweight ~Sx LnhDametr + eit +Sucked_ght + Visrwght Shl_wegh data=alotrin)
变量增加图
同样地,变量增加图将这些残差相互之间的关系可视化。将因变量的残差与预测的残差进行回归,并将回归线增加到图中,也是有帮忙的。
cor(resid(whole_weight),resid(addwtouwolwigh))
cre_plot(baead_itht_whe_eght,wleeghtfit)
没有 Whole_weight 的加法模型的方差收缩因子
但直径和长度的 VIF 还是很高。
vif(abaln_ddithu_whoeeiht)
直径和环之间的偏相关系数
咱们当初将 在模型中 Diameter
没有Whole_weight
变量的状况下计算变量和因变量(环)的偏相关系数。
mete_i <- lm(Diameter ~ Sex + Length + Height + Shucked_weight + Viscera_weight + Shell_weight)
abaoned_sal <- lm(Rings ~ Sex + Length + Height + Shucked_weight + Viscera_weight + Shell_weight)
这两个残差的相关性接近于零,这意味着未被性别、长度、高度、去壳分量、内脏分量和贝壳分量解释的环的变动与未被性别、长度、高度、去壳分量、内脏分量和贝壳分量解释的直径的变动的相关性很小。因而,在模型中退出直径可能没有什么益处。
cor(resid(damer_it),resid(abonead_mll))
creaevarlt(ablone_d_smaldiaete_fi)
没有 Whole_weight & Diameter 的加法模型的方差收缩因子
vif(ablonadd_mll)
当初的 VIF 要低得多。咱们将同时应用 abalone\_add 和 abalone\_add_small 进行剖析。
abalone\_add\_small 的 RMSE 分数
kable(rmse(abalone_add_small
方差分析 F 测验
anova(small,ablone_add)
依据 Anova 测验,咱们能够回绝无效假设。
当初让咱们尝试对加性模型进行 AIC 和 BIC 的参数抉择。
# 在加性模型上运行 AIC 和 BIC
step(abae_add, dtonbackward" trace0)
step(abalon_ad, direction="backward"
咱们应用之前 Anova F 测试中的最佳模型(abalone_add)运行了 AIC 和 BIC 办法,AIC 和 BIC 都抉择了没有 Length 预测器的雷同模型。
咱们抉择了 BIC 的模型(因为两个模型都是一样的),并将绘制拟合与残差和 QQ 正态图。
加性模型假如
assumptions(aln_odad_bic,"baln_meddbic")
这里咱们看到,拟合图与残差图表明,模型违反了恒定方差,仿佛有一种模式,即残差随着拟合值的减少而减少。
正态 QQ 图也有肥尾,表明误差可能不是正态分布。
表明咱们可能须要寻找改良这个模型。只管多重共线性对预测没有影响,但这看起来是一个极其的案例,有一个显著的模式违反了模型的假如。这能够通过几种技术来实现,例如变量抉择和转换。让咱们来看看变量抉择办法,看看哪些变量能够用来创立另一个不违反恒定方差和正态性假如的模型。
穷举搜寻
# 穷举搜寻
allabaone_add<- sumr(ruetsings Sex + Legth Diamter + Hight + Whole_eght + Shllweigh + Shucke_weght + Viscea_weigh , data=ablontra))
for(i in c(1:8)){vr_nm[i]=sum(all_abwh[i,])-1
}
plot(var_num,all_a)
(besr <- which.max(adjr2))
alabaoe_ad$hch[bsj2,]
# 画出模型参数与 AIC 的关系图
n * log(a_aln_dd$rs / n) + 2 * (2:p)
plot(aloe_mo_ac ~ I(2:), ylab = "AIC"
")
当初咱们看到了一些乏味的后果。之前咱们看到 t 测验显示一些预测因子是不显著的,然而当咱们进行穷举搜寻时,它表明咱们的确须要所有的预测因子来创立 AIC 值最低的模型。从图中能够看出,AIC 值随着 8 个参数的模型大小而降落,并且是最小的。咱们将再次应用数据集中的所有预测因子来创立模型,并寻找变量转换技术。
接下来,为了稳固恒定的变动,咱们将进行一些因变量和预测变量的转换。
因变量转换
Box-Cox 变换
稳固方差的办法之一是应用对数转换因变量。为了失去正确的程序,咱们应用了 boxcox 办法,该办法倡议应用 $0 的值。因为在 0 的值上,对数可能性最大,而且区间十分靠近。因而,咱们将应用 log(Rings)模式的转换,用于咱们的加性模型。
boxcox(abloe_ad lambda = seq(-0.1, 0.1, by = 0.1))
Additive 模型与对数因变量转换
summary(abaone_dd_log)
将因变量进行对数转换后,咱们看到 t 测验是显著的,它也减少了先前加法模型的调整 r 平方值。咱们还看到,在这个模型中,简直所有的预测因子都是显著的。让咱们检查一下假如。
模型假如
上面的拟合与残差图和 Q - Q 图显示,对因变量进行对数转换后,后果有了很大的改善。
assumptionsba
均方根分数
kable(log_rmse(abalo)
然而,咱们没有看到 RMSE 分数有任何改善。恒定方差问题仿佛失去了改善,QQ 图也看起来不错。
下一步,咱们将对预测器进行一些转换,并评估模型,看看这是否有助于进一步提高预测的准确性。
Predictor 转换
回归剖析
为了使咱们可能进行任何预测器的转换,首先让咱们看看每个预测变量和因变量的关系。转换将取决于数据的形态以及预测因子和因变量之间的关系。
scatter(abale_tra$Lngt,abaone_train$Rngs,"Lenth""Rngs"),
咱们能够看到环和预测指标长度、直径、高度的关系简直是线性的。咱们还能够看到,分量预测指标之间的关系并不是真正的线性关系,而是能够从多项式转换中受害。因而,让咱们应用高阶多项式创立一个模型,即所有分量预测指标 Whole\_weight、Viscera\_weight、Shucked\_weight 和 Shell\_weight。
多项式
在模型中应用二阶项后,模型假如雷同。
asumptons(abloe_dd_oly2,"Poly2 Log Model")
均方根分数
kable(log_rmse(abaoly2,"Poly2 Log Moel)
均方根分数
在这里,咱们进行了一些变量转换。首先,咱们依照 Boxcox 办法的倡议对因变量进行了对数转换,并依照对数图的倡议对权重预测因子进行了多项式转换。在拟合模型后,咱们看到 rmse 比以前的模型要低,与以前拟合的加性模型相比,它也有更好的恒定方差和 Q - Q 图。因为咱们曾经进行了水平为 2 的多项式转换,让咱们尝试拟合水平为 3 的另一个模型并查看其意义。
方差分析 F 测验
anova(abaloe_addpoy2,aalon_add_oy3)
均方根分数
kable(log_rmse(abaloe_dd_pol4
方差分析 F 测验
anova
均方根分数
kable(log_rmse(abloneaddpoly5
方差分析 F 测验
anova
- 咱们再次看到测试对于较低的 rmse 是显着的。让咱们尝试拟合度数为 6 的模型。
均方根分数
kable(log_rmseaban_dd_poly6
方差分析 F 测验
anova
当初在用多项式次数为 6 进行拟合后,咱们看到即便 F 测验表明它很重要,但测验的 RMSE 回升了。这表明咱们当初可能曾经开始适度拟合数据,即咱们的模型十分靠近地拟合数据,这是咱们不心愿产生的。
在此之前,咱们看到多项式次数为 5 和 4 的测试和训练 RMSE 之间存在十分轻微的差别。测试 RMSE 简直雷同。因而,咱们违心就义绝对于更简略模型的 RMSE 十分渺小的改良(第三个小数点)。因而咱们抉择多项式次数为 4 的模型,即模型 abalone\_add\_poly4。
for(d in um_poly){abalone_add_polyestmodel(d)
rmse=g_log_mse(balone_ad_poly)
train_rmse[d]rmse$tran
test_re[d]=rse$st
}
plot(train_rmse
咱们看到多项式次数为 5 和 4 的测试和训练 RMSE 之间存在十分轻微的差别。测试 RMSE 简直雷同。因而,咱们违心就义绝对于更简略模型的 RMSE 十分渺小的改良。因而咱们抉择多项式次数为 4 的模型,即模型 abalone\_add\_poly4。
既然咱们曾经抉择了模型,让运行 AIC 和 BIC 办法进一步抉择适合的模型,看看咱们是否能够做进一步的改良。
当初让咱们计算和比拟高阶项的 RMSE,并绘制训练和测试数据的均方根误差。
多加法模型上的 AIC 和 BIC:
- 既然咱们曾经抉择了模型,让咱们运行
AIC
和BIC
办法来进一步抉择适合的模型。
step(abane_ad_poy4, directin="backwrd", trac=FALSE)
Compare AIC 与 BIC 模型参数
_aic$call[2]
add_bic$call[2]
Anove F 测验
anova(abalone_mode
- 抉择的模型
BIC
中没有预测器Length
。Anova F 测验的 p 值很大,因而咱们无奈回绝原假如。abalone_model_add_bic
模型很重要,因而咱们将持续推动并查看模型假如。
模型假如(AIC 和 BIC):
model_assumption
- 在这种状况下,恒定方差和正态性看起来都不错。
RMSE 分数 – AIC
kable(log_rmse(abaone_mde_down')
RMSE 分数 – BIC
kable(log_rmse(abalone_model_add_bic,paste("Additive Model - Degree 4 - BIC")), digits = 4,format = 'markdown')
在应用 AIC 和 进行变量抉择后 BIC,咱们从中抉择了模型 BIC 并查看了 t 统计量和假如。乏味的是,BIC 模型抛弃了很少的预测变量,但也具备与咱们开始应用的原始模型(多项式次数为 4 的模型)类似的测试 RMSE。这表明咱们能够删除一些变量并依然放弃较低的 RMSE。这将咱们带到下一个批改和引入 BIC 上述模型抉择的变量之间的交互项。
来自 BIC 模型的模型假如 也看起来更好。
接下来,咱们将介绍交互项,并将尝试应用 BIC 办法倡议的预测变量来拟合模型。
交互模型
log(Rings) ~ Height + Diameter + poly(Whole_weight, 4) +
poly(Viscera_weight, 4) + poly(Shucked_weight,4) + poly(Shell_weight, 4) + Sex + Diameter:poly(Shucked_weight, 4) + poly(Shucked_weight, 4):Sex
RMSE 分数
方差分析 F 测验
anova
在拟合交互模型并应用最佳可加模型执行 F 测验后,咱们看到该测验表明交互模型是一个显着模型,具备改良的调整 r 平方值。RMSE 也变低了 因为它更好地解释了可变性,咱们当初将抉择交互模型并尝试在交互模型上运行 AIC 和 BIC。
同时,咱们会比拟交互模型的多个度数,以计算和比拟高阶项的 RMSE,并绘制训练和测试数据的均方根误差。
for(d in num_poly){ablone_int_poly=test_itmodel(d)
rmse=et_lg_rmseaaloneint_poly)
trainrse_int[d]=rmse$train
test_mse_it[d]=rme$tst
}
plot(tran_rse_n
- 咱们能够看到,随着多项式次数的减少,RMSE 越来越低。只管对于此剖析而言,RMSE 的这种改良十分渺小,咱们能够疏忽这种对模型简略性的改良。思考到这一点,咱们能够看到多项式次数为 4 的模型性能更好,因而咱们将持续应用该模型。
交互模型上的 AIC 和 BIC
step(aalone_int, diretin="backar", trac=FALSE)
step(aalone_nt, diection="bacward", =loce=ALE)
RMSE 分数 – BIC/AIC
kable(log_rmse(abalone_model_int_bic,paste("Interaction Model - Degree 4 - BIC")), digits = 4,format = 'markdown')
在咱们的交互模型上运行 AIC 和 BIC 后,咱们看到该模型抉择了雷同的模型。因为这是咱们迄今为止看到的最好的模型之一,具备正当的复杂性,咱们将把它视为咱们比拟的候选模型之一,作为本剖析的最佳拟合模型。
谈到候选模型,在详尽的搜寻过程中,咱们曾经看到,当咱们应用所有预测变量时,模型附带了最低的 AIC。咱们能够尝试构建一个模型,其中蕴含所有具备交互作用和多项式次数的预测变量,并与咱们抉择的第一个候选模型进行比拟,看看它的体现如何。因而,让咱们拟合一个蕴含所有预测变量的模型。
在最后的数据分析中,咱们发现 Sex 因子程度为 female 和 的分类变量的散布 male 极其类似。因而,咱们决定将这两个因子程度合并为一个,并且总因子程度为 2 infant 和 non-infant。咱们创立了新变量 Infant。这里 non-infant 代表 female 和 male 两者。咱们也通过这种办法进行了剖析(能够在本报告的附录局部找到)。
让咱们看看 Infant 模型剖析,看看这个模型如何与咱们下面抉择的模型相抗衡。
婴儿模型剖析
咱们探讨过针对此剖析采纳不同的办法。咱们引入了一个新的分类预测变量名称 Infant。咱们应用现有的 Sex 具备 3 个因子程度的分类预测变量,并创立了一个具备 2 个因子程度的新分类预测变量。咱们这样做是因为咱们从原始分类预测变量 female 和 中 确定了 2 个因子程度上的类似散布 male。新的因素程度当初是 I(婴儿 = 雌性和雄性组合)和 NI(非婴儿)。
这个新分类的剖析与下面的剖析齐全一样,所以咱们将用起码的解释和细节疾速进行这个剖析。
summary(abae_d_nf)
均方根分数
rmse <- funcin(atual predicted) {sqrt(mean((actual - predicted ^ 2))
}
加性模型假如
model_assumption
Box-Cox 变换
boxcox(abon_adinf,lmda seq(-0.1, 0.1, by = 0.1))
具备对数因变量转换的附加婴儿模型
summary(abaln_ad_log)
均方根分数
kable(log_mseabalone_d_lo_f,"")
加性模型假如
model_assumptions
多项式模型
lm(log(Rings) ~ Diameter + Length + Height + poly(Whol_weiht,3) + poly(Viscra_weight,3) + polyShuckwegt,3) + poly(Selweight,3) + Infant, data=abaone_rain
均方根分数
kable(log_rmse(abalnead_poly
多项式模型假如
model_assumption
方差分析 F 测验
``````
anova
交互模型
lm(log(Rings) ~ Height + Diaeter + poly(Whole_weight, 4) +
poly(Viscera_weght, 4) + poly(Shucke_weght,4) + poly(Shel_weight, 4) + Infant + Diameter:poly(Shckedweight, 4) + poly(Shckd_weight, 4):Infant, data=aboe_tain)
均方根分数
kable(log_rms(abaoe_int_infan,"
交互模型假如
model_assumption
方差分析 F 测验
anova
在这里,咱们抉择性能最佳的交互模型作为咱们的候选模型之一。该模型具备较低的复杂性以及最低的 rmse。
咱们在这里看到的是,与前两个残缺模型相比,该模型在未见数据(测试数据)上的 rmse 最低。除此之外,这个模型也没有前两个简单,这些个性使得这个模型成为咱们抉择的候选模型之一。
当初,因为咱们有一些咱们喜爱的候选模型,让咱们将它们互相比拟并寻找最佳模型。
候选模型
从下面的剖析中,咱们抉择了多项式次数为 4 的交互模型,因为咱们曾经看到它具备最低的测试 rmse 之一,并且具备良好的模型假如。咱们将把它作为第一抉择的候选模型之一。该模型蕴含一些预测变量,而不是具备高度多重共线性的预测变量。这个模型是 abalone\_model\_int_bic。
另一个选定的模型是所有预测变量都具备类似较低 rmse 的交互模型。尽管这个模型将有更多的参数,因而是一个比晚期模型更简单的模型,但因为咱们的指标是预测,咱们不关怀模型的复杂性。这个型号是 abalone\_int\_full
另一种候选模型将是具备 2 个因子程度的分类变量的交互模型。在开始或咱们的剖析中,咱们看到该预测变量的散布在级别之间类似 male,female 因而咱们决定引入一个新变量,该变量基本上有 2 个级别,婴儿和非婴儿,其中非婴儿 = 雄性和雌性。该模型也是多项式次数为 4 的交互模型。这个模型是 abalone\_int\_infant。注:(附录局部减少了应用婴儿预测器的加法模型和相干剖析)。应用分类预测变量和具备 3 值和 2 值的因子程度进行剖析的整个过程 是雷同的。
候选模型的 RMSE 比拟
- 候选模型 1(abalone\_model\_int_bic)
``````
kable(log_rmseabaone_modlint_bic
- 候选模型 2(abalone\_int\_\_candidate_full)
kable(log_rmse(aalone_int_l,pte
kable(log_rmse(abalone_nt_nan
- 候选模型 3 (abalone\_int\_infant)
<!—->
- 从下面咱们能够看到,候选模型 3 (abalone\_int\_infant) 在所有三个模型中体现最好。
候选模型的模型假如
- 候选模型 1(abalone\_model\_int_bic)
候选模型的模型假如
- 候选模型 1(abalone\_model\_int_bic)
model_assumptions(abalone_model_int_bic,"Candidate model 1")
- 候选模型 2 (abalone\_int\_full)
``````
model_assumption
- 候选模型 3 (abalone\_int\_infant)
model_assumption
- 基于这些图,咱们能够看到咱们所有的候选模型都很好地满足了恒定方差和正态性假如。
- 接下来,咱们将比拟所有这些候选模型的预测和置信区间,并察看数据中的任何影响点。让咱们看看它。
异样察看样本:高杠杆、离群点和影响点
咱们将查看每个候选模型的训练数据集中存在的异样察看后果。首先咱们将别离寻找高杠杆点、离群点和影响点,而后通过公共数据点失去具备高杠杆、离群点和影响力的数据点。
候选模型 1(abalone\_model\_int_bic)
## [1] 16
- 咱们看到有 16 个察看值是高杠杆、异样值和影响点。
-
- *
候选模型 2(abalone\_int\_full)
length(comon_mdel_2)
## [1] 15
- 在这个模型中,咱们看到有 15 个察看值是高杠杆、异样值和有影响的点。
候选模型 3(abalone\_int\_infant)
length(comon_odl_3)
## [1] 19
- 这个模型有 19 个这样的察看后果,它们是高杠杆、离群点和有影响力的点。
所有候选模型之间的异样察看
- 咱们当初曾经编制了候选模型中常见的察看后果列表。让咱们来看看这些,看看是否有任何相似之处。
``````
intersect(commodl,intersect(commodel1,omomodl_2))
length(cmmondaa)
## [1] 13
咱们立刻留神到的第一件事是,咱们最后在数据集中确定为不合逻辑或数据输出谬误的察看后果很少。这些察看后果具备负权重差别,这是不可能的。这是有情理的,因为在记录此数据时可能会呈现一些谬误。
另一种模式是其中一些察看后果的整体权重与均匀整体权重相比超过 2。此外,这些察看后果具备大量环,即这些是较老的鲍鱼。
因为存在其余合乎异样察看条件的察看后果,因而总体而言,它们之间没有特定的模式。因而,咱们不能从咱们正在思考进行预测的模型和剖析中排除这些。
咱们将应用平行坐标图来可视化后果局部中的任何显著模式。
让咱们看看一旦咱们删除这些数据集,咱们的候选模型的体现如何。
删除异常察看后的 RMSE 分数
接下来,咱们将通过从训练数据集中删除异常察看并计算测试数据集的 RMSE 分数来执行疾速试验。
obs_rmse <- get_log_rmse_obs(lmlog(_updated)
result <- ata.frae( "Mdel" = modelnames,
"RMSE Train" = c( ),
"RMSE Test" = c(
"RMSE Train all Data" = c(
"RMSE Test all data" = c(get_lo_ms(aaloe_modl_intbic)$test,
- 乏味的是,所有在没有异样察看的状况下训练的模型在测试数据上产生了更好的 rmse。在上表中咱们能够看到不同 RMSE 值的比拟。
- 因为这些不寻常的察看没有揭示任何特定的模式或任何不寻常的行为,咱们无奈从咱们的数据集中删除这些,并将应用候选模型持续咱们的剖析。
预测和置信区间
#model 1
vif(abalone_mdl_ntbic)
#model 2
#model 3
让咱们从置信区间开始。咱们所有候选模型的置信区间都在类似的范畴内。即均匀而言,在任何一点,所有模型的区间范畴仿佛都雷同。请留神,3 个候选模型中有 2 个应用了所有预测变量,因而具备十分高的共线性。因为咱们的模型很好地拟合了数据,因而均匀缩小了任何点的方差范畴。这很好。
此外,与置信区间相似,模型之间的预测区间也在雷同的范畴内。模型拟合再次对这个较窄的区间范畴产生影响。请留神,预测区间比咱们预期的置信区间宽得多。因为所有模型的预测区间即便在高度共线性之后也处于类似的范畴内,咱们会说这些是好的。咱们应用默认的 95% 公式来计算所有候选模型的置信区间和预测区间。
基于咱们对所有这些候选模型的剖析,咱们认为候选模型 3 abalone\_int\_infant 将是预测鲍鱼年龄的最佳抉择。与其余两个候选模型相比,该模型更小,复杂度更低,但 rmse 最低。此外,模型之间的预测和置信区间十分类似。因为这些起因,咱们将抉择模型 abalone\_int\_infant 作为咱们剖析的最佳模型。
预测鲍鱼的年龄
- 当初让咱们应用咱们抉择的模型预测鲍鱼的年龄。咱们将从测试数据中随机抉择 5 个察看值并尝试预测年龄。请留神,该模型实际上预测了鲍鱼中的环数。咱们须要在环数中加上 1.5 能力确定鲍鱼的实在年龄。所以实质上,咱们将比拟模型预测的环数与测试数据集中的理论环数。
``````
#从测试数据中随机抽取 5 个察看值
sample <- sample_n(test_data, 5)
exp(predict( ta=sample)
咱们能够从下面的例子中看到,咱们从测试和模型中计算了环数和年龄,用于多数察看。咱们看到咱们的模型正确预测了鲍鱼的年龄,或者十分靠近鲍鱼的理论年龄。这些是模型以前从未见过的测试数据中的 5 个样本察看值。咱们能够多取一些并执行雷同的过程,看看咱们的模型对鲍鱼年龄的预测成果如何。
在这份剖析报告中,咱们利用了各种多元回归技术和办法,但这并不意味着这个问题不能应用其余更先进的技术来解决。咱们尝试利用一些超出本报告范畴的先进办法,只是为了评估这些技术是否能够进一步改良咱们的预测。
应用先进技术
- 在本节中,咱们超过了传统的常见回归技术,并尝试利用一些先进的技术,看看咱们是否能够创立一个具备较低测试 RMSE 的模型。
Elastic Net 弹性网络是一种正则化回归办法,它线性组合了 lasso 和 ridge 办法的 L1 和 L2 惩办。
- 咱们将尝试应用弹性网络来进一步优化咱们的预测。
- 与 lasso 和 ridge 一样,截距不会受到惩办,并且 glment 在外部负责标准化。
- 咱们将应用与候选模型 3 (abalone\_int\_infant) 中雷同的预测变量。
train(Rings ~ke_ight, 4) + pol(Shell_weigh, 4) + Infant + Diameter:poly(Shucked_weight, 4) poly(Shuckedwight, 4:Infant,daa=abalone_trai
method = "glmnet",
trControl = cv_10,
kable(result, digit
- 咱们看到训练和测试 rmse 后果都低于咱们的候选模型。
随机森林回归
随机森林或随机决策森林是一种用于分类、回归和工作的集成学习办法,它通过在训练时构建大量决策树并输入类别(在分类的状况下)或均匀预测来进行操作(在回归的状况下)单个树。随机决策森林纠正了 Doe 决策树适度拟合训练数据集的习惯。
咱们在这里实现了随机森林回归模型进行预测,看看咱们是否能够进一步改良。随机森林回归模型的 RMSE 后果比候选模型的 RMSE Score 更好。
bm(Rig ~, daa aloeran stbton = "gausian", ntre =, inrtindeth 3, shrinkage = 0.01)
以下是随机森林办法的一些优缺点
它不对数据分布做出任何假如。
主动拟合高度非线性的交互。
通过靠近度很好地解决缺失值。
即便对于大型数据集也能疾速拟合。
曾经察看到随机森林对某些具备嘈杂分类 / 回归工作的数据集适度拟合。
如果树不小就不容易解释
后果
本报告系统地解决了预测鲍鱼年龄的工作。摸索了第一个数据集,发现了不寻常的察看后果,并对变量进行了适当的标准化。
咱们从一个加法模型开始,该模型蕴含所有名为 abalone_add 的预测变量。咱们持续查看各种假如和测试,以进一步提高模型的准确性并升高 rmse。
而后,咱们对因变量和预测变量进行了屡次转换。当咱们执行各种变量抉择程序时,咱们看到了 rmse 的改良。
通过咱们的剖析,咱们找到了几个不错的候选模型,咱们抉择了模型 abalone\_int\_infant 作为咱们的最佳模型。
以下是一些重要的关键点,阐明了咱们对这一论断的抉择。
利用上述技术后,咱们得出了 3 个可能的候选模型。
候选模型 1 是 abalone\_model\_int_bic,这是对交互模型的各种抉择过程的后果。咱们看到这个模型 AIC 得分最低,rmse 排名第二。模型蕴含一些高共线预测变量,但当查看 rmse、预测和置信区间时,这是一个适合的抉择。
候选模型 2 是 abalone\_int\_full。回忆一下,详尽的搜寻过程表明,当咱们所有的预测变量,咱们失去最好的模型。所以咱们决定增加模型中交互项和多项式次数为 4 的所有预测变量。该模型具备最高的多重共线性,但从 rmse 和预测以及置信区间来看是十分正当的。
候选模型 3 是 abalone\_int\_infant。正如咱们最后的数据分析表明分类变量 Sex 有 3 个因子程度。female,male 和 infant。程度 female 和 male 咱们在散布方面极其类似,因而咱们将这两个程度合二为一,使预测变量的总程度为 Sex 两个。因为这种级别的升高,与前两个模型相比,该模型可能是最简略的模型。咱们对此进行了彻底的剖析,最终模型具备类似的 rmse、预测和置信区间。这就是咱们抉择该模型作为候选模型之一的起因。
在以上 3 个候选模型中,候选模型 3 abalone\_int\_infant 略微好一点,同时也不太简单,因而它是咱们进行此剖析的首选模型。这有很多起因。让咱们讨论一下。
以下是为此剖析抉择的模型的公式
lm(log(Rings) ~ Height + Diameter + poly(Whole_weight, 4) +
poly(Viscera_weight, 4) + poly(Shucked_weight,4) + poly(Shell_weight, 4) + Infant + Diameter:poly(Shucked_weight, 4) + poly(Shucked_weight, 4):Infant
- 这是所有 3 个候选模型的测试 / 训练 RMSE 的疾速比拟。
- 下图显示了整个剖析报告中所选模型的 rmse(以红色标记)、候选模型和模型的其余部分以及它们的测试 rmse 比拟。咱们能够分明地看到,咱们抉择的模型 abalone\_int\_infant 也在
int infant
上面的图中重命名,其测试 rmse 最低。
- 这里一个明确的模式是,当模型更小、更简略时,测试 rmse 很高,但随着咱们改良模型并开始变得更加灵便(因而模型长度更大),测试 rmse 降落。
- 以下是所选模型的正态性假如。咱们能够分明地看到,当咱们用对数变换和交互项拟合模型时,常数变动和正态性假如变得越来越好。
这里要留神的一个关键点是,多重共线性的存在并没有真正影响预测(这是咱们剖析的指标),咱们可能将其影响升高到肯定水平。咱们通过拟合与残差图验证了这一点,能够看出咱们抉择的模型具备以残差为核心的残差,0 并且大抵是恒定的变动。
如果咱们应用平行坐标图绘制异样观测值,咱们能够看到 Height 这些观测值与鲍鱼的均匀高度相比更短。Whole\_weight 和 Viscera\_weight which as lower 也是如此。此外 weight.diff,其中一些察看后果是否定的,这是咱们在初始数据分析期间发现的。
上面的平行坐标图描述了这些异样察看的特色,其中婴儿 = 1(橙色线)和非婴儿 [男 / 女] = 2(蓝线)。
当初,如果咱们只是从咱们的训练数据中抽取一个样本并应用平行坐标绘图,咱们能够看到个别状况下 Height
,Whole_weight
并且 Viscera_weight
均匀分布。
- 咱们还看到从数据集中删除异常察看进一步升高了测试 rmse,然而咱们没有从咱们的数据集中删除那些,因为它们仿佛是无效的假如而不是极其状况。
- 咱们能够看到的均方根误差得分
Elastic Net
和Random Forest
比咱们的候选模型较低,但差异不是很显著。
探讨
让咱们从咱们正在剖析的数据集开始探讨。从最后的汇总统计数据中,咱们看到数据中存在十分高的共线性。简直所有的变量都有很高的 vif 值。
咱们所做的另一个重要察看是数据品质。咱们发现在某些状况下没有正确记录察看后果。例如,对于 2 个察看,高度为 0,这实际上是不可能的。然而当咱们查看整个察看后果和其余变量时,咱们没有发现任何异样模式。咱们意识到这可能是数据输出谬误,因而咱们决定将它们保留在咱们的数据集中进行剖析。以下是这 2 个察看后果。
咱们还看到,有些察看后果不合乎逻辑。预测器 Whole\_weight 被认为是预测的线性函数 Shucked\_weight,Viscera\_weight,Shell\_weight 并在去壳过程中损失的血液 / 水的加成未知品质。换句话说,所有其余权重预测变量的总和应该等于或小于 Whole_weight。然而咱们发现 153 这样的察看违反了这个假如。仔细观察后,咱们发现察看后果之间没有相似之处或任何模式,因而咱们得出结论,这可能只是数据记录谬误,因而这些察看后果并未从数据集中删除。以下是这些 153 察看后果。
咱们在探索性剖析中发现的下一个乏味趋势是预测 Sex 因子程度的散布。因子程度 female 和 male 所有其余预测因子 都十分类似。此外,整体数据也大抵平均地散布在 female、male 和 的 程度值之间 infant。以下是程度之间的散布及其绝对于其余预测变量和响应变量的总体散布。
- 在下面的箱线图中,咱们能够看到
female
和 的散布形态male
对于所有预测变量都十分类似。 - 当初让咱们来看看它的频率。
同样,它十分类似。这些后果为咱们指明了另一个方向,通过将 female 和 组合 male 成一个级别名称作为,咱们在数据集中创立了一个新变量 non-infant。所以当初新的分类变量有两个级别 infant 和 non-infant。在咱们的一个候选模型中,咱们应用这个新的分类而不是原始的来查看其成果。最初,这是咱们抉择的模型。
初始数据分析期间的下一个重要发现是预测变量之间存在十分高的多重共线性。这是有情理的,因为咱们之前发现 Whole_weight 预测在某种程度上依赖于其余分量预测。Length 鲍鱼的 Diameter. 以下是 来自加法模型的模型系数的 变异收缩因子值。
## SexI SexM Length Diameter Height
## 1.982824 1.400405 42.874862 44.907429 3.114493
## Whole_weight Shucked_weight Viscera_weight Shell_weight
## 118.819537 29.579686 18.591058 22.182789
初始模型违反了恒定方差和正态性假如。应用各种方差稳固技术和转换,咱们可能提出一个很好的模型。这些选定的候选模型应用了交互项、预测变量的多项式变换和响应变量的对数变换。
乏味的是,即便存在高度多重共线性,在模型抉择过程中,咱们最终还是抉择了具备所有 8 个参数的模型。即所有的抉择程序都表明当应用模型中的所有预测变量时,最低的 AIC 呈现。只管在咱们应用各种响应和预测变量转换进行模型抉择之后,咱们可能在放弃类似的测试 rmse 的同时略微减小模型的大小。
咱们看到咱们简直没有对升高测试 rmse 有轻微影响的异样察看,但因为这些察看不代表显着变动或挪动模型系数,咱们没有将它们从数据集中删除。
在数据的背景下议论这个剖析,咱们能够从模型中看到,Length 变量可能不会成为预测鲍鱼年龄的重要因素。咱们能够看到咱们没有在咱们的模型中抉择这个。这种状况是有意义的,因为 Length 或多或少地相干 Diameter(即长度越大直径越大),并且因为咱们曾经将直径带入咱们的模型,所以咱们不须要鲍鱼数据集中的长度。
预测时另一个十分乏味的事实是,不能独自应用整个体重来预测年龄。咱们晓得,鲍鱼的去壳过程会使鲍鱼的血液和水分变干,而后再称重,不同阶段(去皮、去壳、干燥)的分量组合也是决定鲍鱼年龄的重要因素。
咱们从测试数据中抽取了 10 个样本察看值,并应用咱们抉择的模型 (abalone\_int\_infant) 预测了年龄,均匀而言,它正确预测了 10 次中的第 3 次。从所选模型 (2.2021) 的测试 rmse 值思考出响应变量环的范畴(1 到 29),咱们认为咱们的模型非常适合预测鲍鱼的年龄。
数据获取
在上面公众号后盾回复“鲍鱼 数据”,可获取残缺数据。
本文摘选 《 R 语言用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化 》,点击“ 浏览原文”获取全文残缺材料。
点击题目查阅往期内容
R 语言高维数据惩办回归办法:主成分回归 PCR、岭回归、lasso、弹性网络 elastic net 剖析基因数据(含练习题)
Python 中 LARS 和 Lasso 回归之最小角算法 Lars 剖析波士顿住房数据实例
R 语言 Bootstrap 的岭回归和自适应 LASSO 回归可视化
R 语言 Lasso 回归模型变量抉择和糖尿病倒退预测模型 R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
基于 R 语言实现 LASSO 回归剖析
R 语言用 LASSO,adaptive LASSO 预测通货膨胀工夫序列
R 语言自适应 LASSO 多项式回归、二元逻辑回归和岭回归利用剖析
R 语言惩办 logistic 逻辑回归(LASSO, 岭回归)高维变量抉择的分类模型案例
Python 中的 Lasso 回归之最小角算法 LARS
r 语言中对 LASSO 回归,Ridge 岭回归和弹性网络 Elastic Net 模型实现
r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现
R 语言实现 LASSO 回归——本人编写 LASSO 回归算法
R 应用 LASSO 回归预测股票收益
python 应用 LASSO 回归预测股票收益