数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(上)

简介: 数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化

原文链接: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图也有肥尾,表明误差可能不是正态分布。

表明我们可能需要寻找改进这个模型。尽管多重共线性对预测没有影响,但这看起来是一个极端的案例,有一个明显的模式违反了模型的假设。这可以通过几种技术来实现,例如变量选择和转换。让我们来看看变量选择方法,看看哪些变量可以用来创建另一个不违反恒定方差和正态性假设的模型。


数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(中):https://developer.aliyun.com/article/1491705

相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
6天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
26 5
|
4天前
|
机器学习/深度学习 算法 搜索推荐
图神经网络综述:模型与应用
图神经网络综述:模型与应用
|
8天前
|
存储 机器人 Linux
Netty(二)-服务端网络编程常见网络IO模型讲解
Netty(二)-服务端网络编程常见网络IO模型讲解
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的信息安全新挑战
【9月更文挑战第29天】在数字化浪潮的推动下,云计算服务如雨后春笋般涌现,为各行各业提供了前所未有的便利和效率。然而,随着数据和服务的云端化,网络安全问题也日益凸显,成为制约云计算发展的关键因素之一。本文将从技术角度出发,探讨云计算环境下网络安全的重要性,分析云服务中存在的安全风险,并提出相应的防护措施。我们将通过实际案例,揭示如何在享受云计算带来的便捷的同时,确保数据的安全性和完整性。
|
4天前
|
SQL 安全 算法
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第29天】随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者了解网络安全的重要性,提高自身的网络安全意识。
|
4天前
|
存储 SQL 安全
网络安全与信息安全:构建安全防线的关键策略
本文深入探讨了网络安全与信息安全领域的核心要素,包括网络安全漏洞、加密技术以及安全意识的重要性。通过对这些关键领域的分析,旨在为读者提供一套综合性的防护策略,帮助企业和个人在日益复杂的网络环境中保障数据安全。
14 4
|
1天前
|
安全 网络协议 网络安全
网络安全与信息安全:漏洞、加密与意识的三重奏
【9月更文挑战第32天】在数字世界的交响乐中,网络安全是那不可或缺的乐章。本文将带您深入探索网络安全的三大主题:网络漏洞的识别与防范、加密技术的奥秘以及安全意识的重要性。通过深入浅出的方式,我们将一起揭开这些概念的神秘面纱,并学习如何在实际生活中应用它们来保护自己的数字足迹。让我们开始这场既刺激又富有教育意义的旅程,提升个人和组织的网络安全防御能力。
|
3天前
|
SQL 安全 程序员
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第30天】在数字化时代,网络安全和信息安全已成为全球关注的焦点。本文将探讨网络安全漏洞、加密技术以及提升安全意识的重要性。我们将通过代码示例,深入理解网络安全的基础知识,包括常见的网络攻击手段、防御策略和加密技术的实际应用。同时,我们还将讨论如何提高个人和企业的安全意识,以应对日益复杂的网络安全威胁。
|
2天前
|
SQL 安全 算法
数字时代的守护者:网络安全与信息安全的现代策略
【9月更文挑战第31天】在数字化时代,网络安全与信息安全成为保护个人隐私和企业资产的关键。本文将深入探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性,旨在为读者提供防范网络威胁的策略和知识分享。
17 7
下一篇
无影云桌面