需要关注的会议:
data mining: KDD, SDM, ICDM
learning: ICML, NIPS, COLT
CVPR
2009年2月21日星期六
2009年2月19日星期四
解决matlab中out of memory <转>
这段时间做一个大数据量的仿真,发现经常出现out of memory 的问题,上网搜索了很多办法,如扩大虚拟内存,使用3Gb开关,优化算法流程,使用pack,save, clear函数等。详见http://hi.baidu.com/zwwcqu/blog/item/2ee2261ef7b9eecfa6866943.html 和http://hi.baidu.com/zwwcqu/blog/item/e3b34235c8560f49241f1474.html
但使用后效果均不理想,数据量一旦增加,马上要出现out of memory的问题。后来把程序相关算法优化了一遍,尤其是针对循环嵌套,把没必要的变量clear掉了,把有用的变量先save,后clear掉,最后终于得出较好的结果。
下面介绍一下关于clear、save、load的特殊用法,这对在for或while等多重循环里出现out of memory非常有效。
for k = 1:N % N为循环次数 % ---------------------
var0 = k; % 获得变量var0 %----------------------
string = [sprintf('var_%d', k) ' = var0;' ]; eval(string); % 等价于 var_k = var0; save(sprintf('var_%d.mat', k), sprintf('var_%d')); % 等价于 save var_k.mat var_k
clear(sprintf('var_%d')); % 等价于 clear var_kend 如果要读取刚才存取的变量var_k, (k = 1,2, ..., N).
那么,可以使用如下用法
for k = 1:N
load(sprintf('var_%d.mat', k)); % 等价于 load var_k.mat k = 1,2, ..., N
end
另外,还有一些非常有用的用法。如果用清除刚才读取的变量var_k, k = 1, 2, ..., Nclear '-regexp' '^var_' % 清除所有以“ var_ ”开头的变量还有很多关于save、clear、load等用法,具体help一下。
但使用后效果均不理想,数据量一旦增加,马上要出现out of memory的问题。后来把程序相关算法优化了一遍,尤其是针对循环嵌套,把没必要的变量clear掉了,把有用的变量先save,后clear掉,最后终于得出较好的结果。
下面介绍一下关于clear、save、load的特殊用法,这对在for或while等多重循环里出现out of memory非常有效。
for k = 1:N % N为循环次数 % ---------------------
var0 = k; % 获得变量var0 %----------------------
string = [sprintf('var_%d', k) ' = var0;' ]; eval(string); % 等价于 var_k = var0; save(sprintf('var_%d.mat', k), sprintf('var_%d')); % 等价于 save var_k.mat var_k
clear(sprintf('var_%d')); % 等价于 clear var_kend 如果要读取刚才存取的变量var_k, (k = 1,2, ..., N).
那么,可以使用如下用法
for k = 1:N
load(sprintf('var_%d.mat', k)); % 等价于 load var_k.mat k = 1,2, ..., N
end
另外,还有一些非常有用的用法。如果用清除刚才读取的变量var_k, k = 1, 2, ..., Nclear '-regexp' '^var_' % 清除所有以“ var_ ”开头的变量还有很多关于save、clear、load等用法,具体help一下。
2009年2月5日星期四
关于RSRNG ( Robust Supervised Relevance Neural Gas)
Robust Supervised Relevance Neural Gas 是 Supervised Relevance Neural Gas 的增强版本. 主要创新点在于:
(1) 引入 outiler resistance strategy , 使得对随机初始化不敏感,以及使得对一些outiler的出现, 在prototypes 权值更新,
(2) 引入 Bayes Information Criteria, 以确定 prototypes number 的最优数.
(3) 在protypes 上提供的 dissimilarity space 上, 使用 Discriminant Analysis 进行 分类 . (分类效果会比 1-NN 更好)
(4) Relevance Vector 能反映到底哪些特征,在分类中是起到主要作用的.
PS:
(1) 开始做实验的时候,一直怀疑 Robust Supervised Relevance Neural Gas 的稳定性, 认为效果没有Supervised Relevance Neural Gas 上效果好,而且对参数是比较敏感的.
发现 relevance vector 的迭代处理中,有些问题. 自己为了使 relevance vector 每一个元素都为positive, 自己在程序中强加了 abs 操作:
r_vec = abs(r_vec)/norm(r_vec);
其实:
r_vec = r_vec/norm(r_vec); 就可以了,原来结果不稳定的结果 消失了.
而且能在 比较小的 epoches 里面达到稳定.
(2) Robust SRNG 对 训练样本数据中noisy 的情况下, 效果并不如期盼的那样, 所以Robust SRNG 会在训练样本数据没有 noisy data的时候,有优势.
性能比较:
(1) KNN的性能:
th_hld: 0.420000 : Detection Rate: 0.828571 , False Positive: 0.200000 th_hld: 0.440000 : Detection Rate: 0.885714 , False Positive: 0.200000 th_hld: 0.460000 : Detection Rate: 1.000000 , False Positive: 0.205714
运行时间: 1.78秒
(2) Kernel Binary Weight - KNN:
th_hld: 0.100000 : Detection Rate: 0.771429 , False Positive: 0.071429 th_hld: 0.120000 : Detection Rate: 0.828571 , False Positive: 0.085714 th_hld: 0.140000 : Detection Rate: 1.000000 , False Positive: 0.094286
运行时间: 3.62 秒 (运行时间主要花在 Binary Weight Matrix的计算上)
(3) Robust SRNG:
the number of prototypes: 20
AIC: 3.977546 , BIC: 4.275054
1nn : Detection Rate: 0.914286 , False Positive: 0.031429
fld : Detection Rate: 1.000000 , False Positive: 0.028571
运行时间: 2.63秒
可以看出在dissimilarity space 用FLD来分类,效果比1-NN好,
从运行时间上来 T(KNN) < T(RSNG) < T(KBWKNN)
效果在里面是最好的.
(1) 引入 outiler resistance strategy , 使得对随机初始化不敏感,以及使得对一些outiler的出现, 在prototypes 权值更新,
(2) 引入 Bayes Information Criteria, 以确定 prototypes number 的最优数.
(3) 在protypes 上提供的 dissimilarity space 上, 使用 Discriminant Analysis 进行 分类 . (分类效果会比 1-NN 更好)
(4) Relevance Vector 能反映到底哪些特征,在分类中是起到主要作用的.
PS:
(1) 开始做实验的时候,一直怀疑 Robust Supervised Relevance Neural Gas 的稳定性, 认为效果没有Supervised Relevance Neural Gas 上效果好,而且对参数是比较敏感的.
发现 relevance vector 的迭代处理中,有些问题. 自己为了使 relevance vector 每一个元素都为positive, 自己在程序中强加了 abs 操作:
r_vec = abs(r_vec)/norm(r_vec);
其实:
r_vec = r_vec/norm(r_vec); 就可以了,原来结果不稳定的结果 消失了.
而且能在 比较小的 epoches 里面达到稳定.
(2) Robust SRNG 对 训练样本数据中noisy 的情况下, 效果并不如期盼的那样, 所以Robust SRNG 会在训练样本数据没有 noisy data的时候,有优势.
性能比较:
(1) KNN的性能:
th_hld: 0.420000 : Detection Rate: 0.828571 , False Positive: 0.200000 th_hld: 0.440000 : Detection Rate: 0.885714 , False Positive: 0.200000 th_hld: 0.460000 : Detection Rate: 1.000000 , False Positive: 0.205714
运行时间: 1.78秒
(2) Kernel Binary Weight - KNN:
th_hld: 0.100000 : Detection Rate: 0.771429 , False Positive: 0.071429 th_hld: 0.120000 : Detection Rate: 0.828571 , False Positive: 0.085714 th_hld: 0.140000 : Detection Rate: 1.000000 , False Positive: 0.094286
运行时间: 3.62 秒 (运行时间主要花在 Binary Weight Matrix的计算上)
(3) Robust SRNG:
the number of prototypes: 20
AIC: 3.977546 , BIC: 4.275054
1nn : Detection Rate: 0.914286 , False Positive: 0.031429
fld : Detection Rate: 1.000000 , False Positive: 0.028571
运行时间: 2.63秒
可以看出在dissimilarity space 用FLD来分类,效果比1-NN好,
从运行时间上来 T(KNN) < T(RSNG) < T(KBWKNN)
效果在里面是最好的.
订阅:
评论 (Atom)