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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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