R – 计算相似数据集之间的差异(相似性度量)

我已经看到许多涉及这个话题的问题,但还没有找到答案。如果我错过了已经回答这个问题的提问,请标记并指引我们到那个问题。

场景:我们有一个基准数据集,我们有插补方法,我们系统性地从基准数据集中删除值,并使用两种不同的插补方法。因此,我们有基准数据集、imputedData1 和 imputedData2。

问题:是否有一个函数可以产生一个数字,表示基准数据集与 imputedData1 之间的差异,或者/以及基准数据集与 imputedData2 之间的差异。例如,function(基准数据集, imputedData1) = 3.3 以及 function(基准数据集, imputedData2) = 2.8

注意:数据集是数值型的,数据集大小相同,方法应该尽可能在数据层面工作(即不创建回归并比较回归 – 除非它可以处理任何数值型数据集)。

可复现的数据集,仅第一行有变化:

基准数据集:

> head(mtcars,n=10)                   mpg cyl  disp  hp drat    wt  qsec vs am gear carbMazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

imputedData1:

> head(mtcars,n=10)                   mpg cyl  disp  hp drat    wt  qsec vs am gear carbMazda RX4         22.0   4 108.0 100 3.90 2.200 16.46  0  1    4    4Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

imputedData2:

> head(mtcars,n=10)                   mpg cyl  disp  hp drat    wt  qsec vs am gear carbMazda RX4         18.0   6 112.0 105 3.90 2.620 16.46  0  0    3    4Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

我尝试使用均方根误差(RMSE),但效果不佳,所以我在尝试寻找其他方法来解决这个问题。


回答:

你也可以查看 ftsa 包。它提供了大约 20 种误差度量 可以计算。在你的情况下,缩放误差是有意义的,因为各列的单位不同。

library(ftsa)error(forecast=unlist(imputedData1),true=unlist(bench),           insampletrue = unlist(bench), method = "mase")[1] 0.035136error(forecast=unlist(imputedData2),true=unlist(bench),           insampletrue = unlist(bench), method = "mase")[1] 0.031151

数据

bench <- read.table(text='mpg cyl  disp  hp drat    wt  qsec vs am gear carb21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    421.0   6 160.0 110 3.90 2.875 17.02  0  1    4    422.8   4 108.0  93 3.85 2.320 18.61  1  1    4    121.4   6 258.0 110 3.08 3.215 19.44  1  0    3    118.7   8 360.0 175 3.15 3.440 17.02  0  0    3    218.1   6 225.0 105 2.76 3.460 20.22  1  0    3    114.3   8 360.0 245 3.21 3.570 15.84  0  0    3    424.4   4 146.7  62 3.69 3.190 20.00  1  0    4    222.8   4 140.8  95 3.92 3.150 22.90  1  0    4    219.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4',header=TRUE,stringsAsFactors=FALSE)imputedData1 <- read.table(text='mpg cyl  disp  hp drat    wt  qsec vs am gear carb22.0   4 108.0 100 3.90 2.200 16.46  0  1    4    421.0   6 160.0 110 3.90 2.875 17.02  0  1    4    422.8   4 108.0  93 3.85 2.320 18.61  1  1    4    121.4   6 258.0 110 3.08 3.215 19.44  1  0    3    118.7   8 360.0 175 3.15 3.440 17.02  0  0    3    218.1   6 225.0 105 2.76 3.460 20.22  1  0    3    114.3   8 360.0 245 3.21 3.570 15.84  0  0    3    424.4   4 146.7  62 3.69 3.190 20.00  1  0    4    222.8   4 140.8  95 3.92 3.150 22.90  1  0    4    219.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4',header=TRUE,stringsAsFactors=FALSE)imputedData2 <- read.table(text='mpg cyl  disp  hp drat    wt  qsec vs am gear carb18.0   6 112.0 105 3.90 2.620 16.46  0  0    3    421.0   6 160.0 110 3.90 2.875 17.02  0  1    4    422.8   4 108.0  93 3.85 2.320 18.61  1  1    4    121.4   6 258.0 110 3.08 3.215 19.44  1  0    3    118.7   8 360.0 175 3.15 3.440 17.02  0  0    3    218.1   6 225.0 105 2.76 3.460 20.22  1  0    3    114.3   8 360.0 245 3.21 3.570 15.84  0  0    3    424.4   4 146.7  62 3.69 3.190 20.00  1  0    4    222.8   4 140.8  95 3.92 3.150 22.90  1  0    4    219.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4',header=TRUE,stringsAsFactors=FALSE)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注