C*******a 发帖数: 448 | 1 有nxk的一组数据,包括n个数据,每个数据有k个covariate,
这k个covariate有的是numerical,有的是categorical,
现在任取一个数据,找出和它最‘相似’的10个数据,
这个在R里面怎么实现,改用那个包? |
c********1 发帖数: 60 | 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。不知版上诸多大牛是否有好的解决方法? |
f***8 发帖数: 571 | 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里面怎么实现,改用那个包?
|
l******n 发帖数: 9344 | 4 弄怎么定义相似?
【在 C*******a 的大作中提到】 : 有nxk的一组数据,包括n个数据,每个数据有k个covariate, : 这k个covariate有的是numerical,有的是categorical, : 现在任取一个数据,找出和它最‘相似’的10个数据, : 这个在R里面怎么实现,改用那个包?
|
n*****3 发帖数: 1584 | 5 I think it depends on the question:
nearest neighborhood, Edit Distance , or just the the corr like last post.
【在 l******n 的大作中提到】 : 弄怎么定义相似?
|
m*****O 发帖数: 3558 | 6 你这个问题问得不在点上啊
最重要的是搞清楚什么是“相似”,搞清楚了以后再谈implementation
【在 C*******a 的大作中提到】 : 有nxk的一组数据,包括n个数据,每个数据有k个covariate, : 这k个covariate有的是numerical,有的是categorical, : 现在任取一个数据,找出和它最‘相似’的10个数据, : 这个在R里面怎么实现,改用那个包?
|
m****s 发帖数: 1481 | 7 相似度是个很泛的概念,有很多不同的定义,看你取那个了。还有比如numerical变量
要不要做normalization,不然换个单位相似度就不一样了 |
d******c 发帖数: 2407 | 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 函数.
|
f***8 发帖数: 571 | 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。 : : 如:
|
c********1 发帖数: 60 | 10 谢谢这位大牛的分享!我一直想系统地学习apply这些函数,之前一直没有找到好的资源
【在 f***8 的大作中提到】 : http://adv-r.had.co.nz/Functionals.html
|
|
|
d******c 发帖数: 2407 | |
p***r 发帖数: 920 | 12 propensity score.
【在 d******c 的大作中提到】 : 多谢,知道这本书,还一直没时间看。 : 另外找到这篇blog也写的不错,可以参考 : http://www.noamross.net/blog/2014/4/16/vectorization-in-r--why.
|
s*r 发帖数: 2757 | |
c***z 发帖数: 6348 | 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.
|
A*****a 发帖数: 1091 | 15 如前面的大牛们所言,定义“相似”很重要
听上去这个和医学研究里的“case control match”有点像,你可以看看optmatch
package
【在 C*******a 的大作中提到】 : 有nxk的一组数据,包括n个数据,每个数据有k个covariate, : 这k个covariate有的是numerical,有的是categorical, : 现在任取一个数据,找出和它最‘相似’的10个数据, : 这个在R里面怎么实现,改用那个包?
|