我有一组具有订单关系的元素(可能很大):
[a,b,c,d,e,f]
Run Code Online (Sandbox Code Playgroud)
和一组带有id的频繁模式(可能很大):
[a]:1,[b]:2,[c]:3,[a,b]:4,[b,c]:5,[a,b,c]:6
Run Code Online (Sandbox Code Playgroud)
我有一系列有序集:
[a,b], [e], [c], [e,f], [a,b,c]
Run Code Online (Sandbox Code Playgroud)
我想将序列中的每个集合与相应模式的ID匹配:
[a,b]:{1,2,4}, [e]:{}, [c]:{3}, [a,b,c]:{1,2,3,4,5,6}
Run Code Online (Sandbox Code Playgroud)
我的目标是限制序列上的传递次数,因此我想构建一个我可以在扫描期间使用的数据结构.我在想一个前缀树:
??null
???a : 1
| |
| ???b : 4
| |
| ???c : { 5, 6 }
|
???b : 2
| |
| ???c : 5
|
???c : 3
Run Code Online (Sandbox Code Playgroud)
我扫描序列中的一个集合,并通过递归多次传递它(set,set.tail,set.tail.tail ...),每当我到达一个节点时,我将相应的id添加到数组中.
我是否会错过我的推理中的任何特殊情况(只是意识到depth>2如果我不想错过[a,c]如果[a,b,c]存在于集合中,我必须为节点添加多个id )?我可以使用更复杂的数据结构来改善处理时间吗?
编辑:事实上在深度n,我需要2^(n-2)用我的方法的id(考虑到我的树是密集的).我不确定这是一个有效的方法......
Edit2:另一种合并序列中每个元素的位图以构建每个模式的方法(如SPADE算法中所使用的).
a : [1,0,0,0,1]
b : [0,1,0,0,1]
ab : [0,0,0,0,1]
Run Code Online (Sandbox Code Playgroud)
通过一些数组操作,我应该能够将它与我的初始数组的元素相匹配.
我正在一个数据库上,周围25万的观察和预测50(有些因素,因此在年底约100的功能),我有使用blackboost()函数(从mboost包)惹的祸给我一个内存分配错误.
同时,gbm()处理数据量没有问题.根据文档,blackboost使用的算法与gbm相同.(" http://cran.r-project.org/web/packages/mboost/mboost.pdf ").
目前尚不清楚为什么一个函数能够管理数据库而不是另一个函数,我的猜测:
我想使用mboost中可用的AUC()丢失功能,但不能使用gbm,所以我会对任何克服blackboost内存使用限制的建议感兴趣.
另一个问题是,当我尝试减少模型中的变量数量时,我从blackboost获得了这个新错误:
Error in matrix(f[ind1], nrow = n0, ncol = n1, byrow = TRUE) : the length of the data [107324] is not a multiple of the number of lines [152107]
Run Code Online (Sandbox Code Playgroud)
它似乎来自AUC梯度函数.
谢谢您的帮助.