【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享

简介: 【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享

全文下载链接:http://tecdat.cn/?p=24671


交叉验证是避免过度拟合和很好地理解预测模型性能的最有效技术之一


训练集用于训练模型,测试集用于评估其性能。但是这种方法通常应该避免,并且不应用于现实世界的场景。


这是因为如果我们长时间训练我们的模型直到找到正确的配置,我们可能会在测试集中引起过度拟合。这个概念被称为_数据泄漏_,是该领域最常见和最有影响力的问题之一。事实上,如果我们训练我们的模型在测试集上表现良好,那么_它_对那个测试集有效。


我所说的配置_是什么意思?每个模型都以一系列超参数为特征。这是一个定义

模型超参数是一种外部配置,其值无法从数据中估计。更改超参数会相应地更改模型对我们数据的行为,并且可以改善或恶化我们的性能。

例如,Sklearn 的_DecisionTreeClassifier_树,将max_depth作为管理树深度超参数。更改此超参数会改变模型的性能,无论好坏。我们无法事先知道 max\_depth 的理想值,除非通过实验。除了 max\_depth,决策树还有很多其他的超参数。

当我们选择要在数据集上使用的模型时,我们需要了解哪些是最佳的超参数配置。此活动称为_超参数调整_。


一旦我们找到最佳配置,您就可以将具有最佳配置的最佳模型带到“真实”世界——即由模型从未见过的数据组成的测试集。


为了在不直接测试测试集的情况下测试配置,我们引入了第三组数据,称为验证集

一般流程是这样的:

  1. 我们在训练集上训练模型
  2. 我们在验证集上测试当前配置的性能
  3. 当且仅当我们对验证集的性能感到满意时,我们才会在测试集上进行测试。

但是,为什么要通过添加额外的一组来评估性能来复杂化呢?为什么不使用经典的训练-测试集拆分?

原因很简单,但非常重要。

机器学习是一个 迭代过程

通过迭代,我的意思是一个模型可以而且必须用不同的配置多次评估,以便我们了解哪个是性能最好的条件。验证集允许我们测试不同的配置并为我们的场景选择最好的配置,而没有过度拟合的风险。

但是有一个问题。通过将我们的数据集分为三个部分,我们还减少了训练模型可用的示例数量。此外,由于通常的拆分为 50–30–20,因此模型结果可能随机取决于数据在各个集合中的分布方式。

交叉验证通过从方程中删除验证集并保留模型可用于学习的示例数量来解决此问题。


什么是交叉验证?


交叉验证是机器学习中最重要的概念之一。这是因为它允许我们创建能够_泛化的模型——_也就是说,即使在不属于训练集的数据上也能够创建一致的预测

一个可以泛化的模型是一个有用的、强大的模型。

交叉验证意味着将我们的训练数据分成不同的部分,并在这些部分的子集上测试我们的模型。测试集继续用于最终评估,而模型性能则在交叉验证生成的部分上进行评估。这种方法称为K-Fold 交叉验证,稍后我们将更详细地了解它。

下图总结了目前为止的这句话。


K 折交叉验证


交叉验证可以通过不同的方式完成,每种方法都适用于不同的场景。在本文中,我们将介绍_K-Fold 交叉验证_,这是迄今为止最流行的交叉验证技术。其他流行的变体是_分层_交叉验证和基于组的交叉验证。

训练集被分成 K-folds,模型在k-1个部分上进行训练。剩余部分用于评估模型。

这一切都发生在所谓的_交叉验证循环中。


在通过每个分段进行交互之后,我们将获得最终结果的平均表现。这提高了性能的有效性,因为在训练数据集的每个部分上都训练了一个“新”模型。然后,我们将得到一个最终分数,该分数总结了模型在许多验证步骤中的性能——与查看单个迭代的性能相比,这是一种非常可靠的方法!

让我们分解这个过程:

  1. 随机化数据集的每一行
  2. 将数据集划分为 k 个部分
  3. 对于每个组

1. 创建一个测试部分  

2. 将剩余部分分配给训练  

3. 训练模型并在提到的集合上对其进行评估  

4. 保存性能

  1. 通过在流程结束时取平均分来评估整体绩效

k 的值通常为 5 或 10,但Sturges规则可用于建立更精确的分割数

number of splits = 1 + log2(N)

其中 N 是样本总数。


R语言回归和主成分PCA 回归交叉验证分析预测城市犯罪率


在本文中,我解释了基本回归,并介绍了主成分分析 (PCA) 使用回归来预测城市中观察到的犯罪率。我还应用 PCA 创建了一个回归模型,用于使用前几个主成分对相同的犯罪数据进行建模。最后,我对两种模型的结果进行了比较,看看哪个表现更好。


回归有助于显示因素和因变量之间的关系,它基本上回答了两种类型的问题;1. 吸烟对癌症的影响 2. 未来会发生什么?(例如)三年后的油价。


数据


犯罪学家对惩罚制度对犯罪率查看文末了解数据免费获取方式的影响感兴趣。已使用汇总数据对此进行了研究。数据集包含以下列:

变量描述

M:  14-24岁的男性在总人口中的百分比

So:  南方的指标变量

Ed:  25岁或以上人口的平均受教育年限

Po1:年警察保护的人均支出

Po2:去年警察保护的人均支出

LF:14-24岁年龄组的城市男性平民的劳动力参与率

M.F:每100名女性的男性人数

Pop:国家人口,以十万计

NW:非白人在人口中的百分比

U1:14-24岁城市男性的失业率

U2:城市男性35-39岁的失业率

财富财富:可转让资产或家庭收入的中值

收入不平等:收入低于中位数一半的家庭的百分比

入狱概率:入狱人数与犯罪人数的比率

时间:罪犯在首次获释前在国家监狱中服刑的平均时间(月)。

犯罪:每10万人口中的犯罪数量

导入R环境

read("crim.txt")


检查变量是否正确


head(crim) #所有的变量都是预测因素,只有犯罪是因变量。

创建简单的回归模型

summary(model)

使用数据框架来手动创建我们的数据点测试,然后在测试数据上运行一些预测。

primodl <- predict(mdl, test)


输出值不到下一个最低城市的犯罪率的一半,所以我将创建第二个模型,观察它的输出并画出比较。

创建第二个模型

sumry(son_mel)

我们现在可以对第二个模型进行预测了

pic\_secn\_mel<- prict(sed_odel, tst)


pic\_secn\_mel

与第一个模型相比,其结果明显更高。所以,它更合理。


交叉验证


我们可以做一个5折的交叉验证。

cv(se,m=5)

我们可以得到数据和其平均值之间的平方差的总和


点击标题查阅往期内容


R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化


01

02

03

04


sum((Cm- mean(ui))^2)

我们可以得到模型1、模型2和交叉验证的平方残差之和

SSrl <- sum(res^2)

SSre <- sum(resi^2)

res <- "ms")*nrow

我们也可以计算出3个模型的R平方值

1 -res/tot

1-res/SS

1-res/SS

获得的R平方值表明我们的拟合质量很好。对于惩罚性回归,有必要对数据进行标准化,以确保所有的特征都受到同等的惩罚。但在线性回归的情况下,这其实并不重要。它将只是转移截距和系数,但相关关系保持不变。


PCA


PCA是一种用于描述变化的方法,显示数据集中的强相关性,从而使其易于探索和可视化数据。PCA通过以下方式对数据进行转换:(1)去除数据中的相关关系(2)按重要性对坐标进行排序。

我们可以检查crime数据的预测变量之间的相关性。

pairs(srm,c("o",Ed"o"))

对数据集中的所有预测变量应用PCA。请注意,为了获得更准确的PCA结果,需要对这些变量进行标准化。

sumr(pca)

rotan #PCA旋转是特征向量的矩阵

pca

然后,我们可以通过绘制每个主成分的方差来决定在 "前几个 "主成分中使用多少个主成分。

plotpcaye ="ie")

要确定使用多少PC?我们可以尝试使用5个主成分作为开始。

pcax\[,1:5\]

使用前五个PC,我们可以继续建立一个线性回归模型。

summary(mdPCA)

为了根据原始变量重建模型,首先我们从PCA线性回归模型中获得系数,之后通过使用主成分的特征向量将PCA成分系数转化为原始变量的系数。


PCA线性回归的系数


coefficients\[1\]
coefficients\[2:6\]
beta0 #截距

转换

rot %*% beta
 t(alpha) # 标准化的数据系数

获得未标准化数据的系数。

ahusl <- ahs / sppy(u\[,1:15\],sd)
 ba0cl <- ea0 - sum/sapply(sd))

未标准化数据的系数


t(alas_sled)


be0uced

#我们可以得到我们的未标准化数据的估计值
as.marx %*% unscle + beta0aled

最后,为了比较使用PCA的模型和使用回归的模型的质量,我们必须计算R-squared和调整后的R-squared,并将这些数值与前一个模型的数值进行比较。调整后的R平方考虑了模型中预测因子的数量。

Rsquared <- 1 - SSE/SST # R-squared

使用所有变量的无PCA的先前线性回归模型

summary(dlLR)

R-squared 和调整后的 R-squared 值都较高,这表明至少对于使用前五个主成分的模型,具有 PCA 的线性回归模型优于没有 PCA 的线性回归模型。为了检查使用不同数量的前 n 个主成分的线性回归模型是否产生了更好的拟合模型,我们可以使用循环并进一步进行交叉验证。

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
21天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
1月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
54 1
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
68 3

热门文章

最新文章