avatar
C*a
1
有nxk的一组数据,包括n个数据,每个数据有k个covariate,
这k个covariate有的是numerical,有的是categorical,
现在任取一个数据,找出和它最‘相似’的10个数据,
这个在R里面怎么实现,改用那个包?
avatar
c*1
2
On top of my head,要实现这个功能并没有现成的package或者function可以调用。
如果要自己写代码来实现的话感觉还颇有难度。如果采用euclidean distance to
measure similarity, the distance would be dominated by the distance of
numerical covariates. 换句话说categorical covariates is somewhat ignored in
the similarity metrics.
谷歌了下,关于similarity metrics of categorical variables没有简单现成的答案
,基本都是paper。不知版上诸多大牛是否有好的解决方法?
avatar
f*8
3
"任取一个数据,找出和它最‘相似’的10个数据,"这个好办,用apply就可以,比如:
sort(apply(mtcars[-1, ], 1, function(x) cor(x, unlist(mtcars[1, ]))),
decreasing=TRUE)[1:10]
至于categorical的数据如何处理,需要自己定义一个cor 函数.

【在 C*******a 的大作中提到】
: 有nxk的一组数据,包括n个数据,每个数据有k个covariate,
: 这k个covariate有的是numerical,有的是categorical,
: 现在任取一个数据,找出和它最‘相似’的10个数据,
: 这个在R里面怎么实现,改用那个包?

avatar
l*n
4
弄怎么定义相似?

【在 C*******a 的大作中提到】
: 有nxk的一组数据,包括n个数据,每个数据有k个covariate,
: 这k个covariate有的是numerical,有的是categorical,
: 现在任取一个数据,找出和它最‘相似’的10个数据,
: 这个在R里面怎么实现,改用那个包?

avatar
n*3
5
I think it depends on the question:
nearest neighborhood, Edit Distance , or just the the corr like last post.

【在 l******n 的大作中提到】
: 弄怎么定义相似?
avatar
m*O
6
你这个问题问得不在点上啊
最重要的是搞清楚什么是“相似”,搞清楚了以后再谈implementation

【在 C*******a 的大作中提到】
: 有nxk的一组数据,包括n个数据,每个数据有k个covariate,
: 这k个covariate有的是numerical,有的是categorical,
: 现在任取一个数据,找出和它最‘相似’的10个数据,
: 这个在R里面怎么实现,改用那个包?

avatar
m*s
7
相似度是个很泛的概念,有很多不同的定义,看你取那个了。还有比如numerical变量
要不要做normalization,不然换个单位相似度就不一样了
avatar
d*c
8
说到apply,上次我折腾很久,什么apply,mapply,各种apply family,发现只有最简
单的函数用这种apply看起来容易,稍微复杂一点,尤其是数据结构复杂的时候就很麻
烦,而且后来发现各种apply实质就是for loop,还不如直接写for loop,性能上没有
损失,而且处理数据结构简单明了。
之前我是怕for loop没用上vectorization所以去尝试apply,但是apply并不是真正
vectorization,只是for loop的简写形式而已。有builtin vectorization的函数当然
一定要用,否则的话除非特别简单的函数,感觉没必要用apply。

如:

【在 f***8 的大作中提到】
: "任取一个数据,找出和它最‘相似’的10个数据,"这个好办,用apply就可以,比如:
: sort(apply(mtcars[-1, ], 1, function(x) cor(x, unlist(mtcars[1, ]))),
: decreasing=TRUE)[1:10]
: 至于categorical的数据如何处理,需要自己定义一个cor 函数.

avatar
f*8
9
http://adv-r.had.co.nz/Functionals.html

【在 d******c 的大作中提到】
: 说到apply,上次我折腾很久,什么apply,mapply,各种apply family,发现只有最简
: 单的函数用这种apply看起来容易,稍微复杂一点,尤其是数据结构复杂的时候就很麻
: 烦,而且后来发现各种apply实质就是for loop,还不如直接写for loop,性能上没有
: 损失,而且处理数据结构简单明了。
: 之前我是怕for loop没用上vectorization所以去尝试apply,但是apply并不是真正
: vectorization,只是for loop的简写形式而已。有builtin vectorization的函数当然
: 一定要用,否则的话除非特别简单的函数,感觉没必要用apply。
:
: 如:

avatar
c*1
10
谢谢这位大牛的分享!我一直想系统地学习apply这些函数,之前一直没有找到好的资源

【在 f***8 的大作中提到】
: http://adv-r.had.co.nz/Functionals.html
avatar
s*r
13
pca mds
avatar
c*z
14
I think it is the other direction, one first defines what similarity means,
then defines the metric to represent that idea.

【在 n*****3 的大作中提到】
: I think it depends on the question:
: nearest neighborhood, Edit Distance , or just the the corr like last post.

avatar
A*a
15
如前面的大牛们所言,定义“相似”很重要
听上去这个和医学研究里的“case control match”有点像,你可以看看optmatch
package

【在 C*******a 的大作中提到】
: 有nxk的一组数据,包括n个数据,每个数据有k个covariate,
: 这k个covariate有的是numerical,有的是categorical,
: 现在任取一个数据,找出和它最‘相似’的10个数据,
: 这个在R里面怎么实现,改用那个包?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。