2009年2月21日星期六
2009年2月19日星期四
解决matlab中out of memory <转>
但使用后效果均不理想,数据量一旦增加,马上要出现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)
(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)
效果在里面是最好的.
2009年1月30日星期五
Conf. Info
http://www.ecmlpkdd2009.net/information/key-dates/
April 20th
ICDM2009:
http://www.cs.umbc.edu/ICDM09/
June 26
ICDE2010:
http://www.icde2010.org/
Coming soon.
ICCCAS09:
http://icccas09.uestc.edu.cn
Feb 28, 2009
JCST ,Special issue on Machine Learning
http://jcst.ict.ac.cn/tempfile/JCST_AMLA.htm
May 01, 2009
2009年1月29日星期四
KNN 和 KBWC-KNN 在 Clean Data 和 Noisy Data的性能
2009年1月28日星期三
Performance of Kernel Neigborhood Preservation Eembeding (Kernel NPE)
从matlab 程序运行时间来说:
Conclusion: KNPE is reasonable approach, when used in intrusion detection, at least in system call detection. It also could be extended later.
至于Kernel LPP, 如果选用:
%options.Regu = 0;
options.Regu = 1;
options.ReguAlpha = 0.01;
即在SVD的处理中,用regularization factor 来处理, 提高了性能. Why? Need to take deeper insight on it.
至于semi-supervised NPE 可以借鉴 Prof. DaoQiang Zhang 的文章"semi-supervised dimension reduction"
Cn 表示 can't not link, Cm 表示 must link, Cw 表示C-Cn-Cm, 在Cn , Cm 和 Cw中以 LLE的目标函数为准.
使目标函数 (Cn - Cm)/Cw 最大化.
2009年1月27日星期二
KNN, BWC-KNN, NPE-KNN, K-LLP-KNN的对比效果
KNN检测sys call是02年的一篇文章,google scholar 引用率很高的一篇文章.
BWC-KNN检测sys call是07年的一篇文章(Journal of Computer Security)的一篇文章,用到了kernel trick, 并将Binary Matrix between two processes用上.
NMU大学提供的sys call pool, 针对 solaris系统是182 dimensionality的 向量.
(1) proximity measurement 可能在高维数空间失效.
(2) curse of high dimensionality.
所以试图用 high-dimensional reduction 在subspace中 进行KNN或许效果更好.
需要用到 NPE, 和 Kernel-LPP方法, 来对比KNN和 BWC-KNN的效果. 参考Fig.1
Note:
(1) Kernel-LPP 的效果 有点意外, 需要找下原因,为什么跳变为什么那么厉害?
I'm now trying to design Kernel-NPE, and semi-supervised NPE.


