2009年2月21日星期六

top rank conference

需要关注的会议:

data mining: KDD, SDM, ICDM

learning: ICML, NIPS, COLT

CVPR

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一下。

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)
效果在里面是最好的.

2009年1月30日星期五

Conf. Info

PKDD2009:
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的性能

Fig .1 KNN 和 KBWC-KNN 在 Clean Data 和 Noisy Data的性能 (50 维数)
也正如 论文提到的那样:
KBWC-KNN 比 KNN 具有 capability of toleration of noisty training data.
自己设计的RSRNG(Robust Supervised Neural Gas) is supposed to make better performance than KBWC-KNN in both clean training data and noisy training data circumstances.
references:
(1) [06'] Intrusion Detection using Text Processing Techniques with a Binary-Weighted Cosine Metric
(2) [02'] Using Text Categorization Techniques for Intrusion Detection
(3) [07'] Intrusion detection using text processing techniques with a kernel based similarity measure.pdf

2009年1月28日星期三

Performance of Kernel Neigborhood Preservation Eembeding (Kernel NPE)

Fig 1. Detection Rate vs False Positive
Fig.1 中 NPE, 和 Kernel NPE 将 182 维数的向量, 降维至 30 维.
Kernel NPE 做再用KNN ,明显提高了Detection Rate while False Positive is kept smaller than others.

从matlab 程序运行时间来说:
KNPE: 4.343750e+000 sec (182 dims -> 30 dims, then KNN)
NPE: 4.062500e+000 sec (182 dims -> 30 dims, then KNN)
BWC_KNN: 1.592188e+001 sec (182 dims , 处理时间主要集中在kernel上了)
KNN: 4.562500e+000 sec (182 dims)


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"和 文章"Neighborhood discriminant projection for face recognition"的思想.

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的对比效果

Fig .1 Detection Rate vs False Positive


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.