度量学习也可以认为是相似度。knn最合适的是学习马氏距离,怎么学?要给出先验知识,哪两个数据更相似,欧式距离不可靠。SVM也是metric learning的一种,因为kernel matrix就是相似度。state of art的metric learning方法LMNN,有代码可以下载。也未必效果最好,用得很多,因为有代码。度量就是相似度,任何方法只要用到相似度,就可以用到度量学习。度量学习主流就是学习马氏距离!(listen to the report of Kaizhu Huang).
度量学习首篇是Eric Xing在NIPS 2002提出,nannan wang讲现在metric learning基本都是通过子空间学习,就是子空间学习换了个说法,没啥太多实际意义。
代码
http://www.cs.cmu.edu/~liuy/distlearn.htm 其中的Principal Component Analysis(PCA)是有蔡登老师开发 http://www.cse.wustl.edu/~kilian/Downloads/LMNN.html有Large Margin NN Classifier (LMNN)的代码在Dodo的blog中提到:在此有必要提提Lawrence Saul这个人。在Isomap和LLE的作者们中,Saul算是唯一一个以流形学习(并不限于)为研究对象开创学派的人。Saul早年主要做参数模型有关的算法。自从LLE以后,坐阵UPen创造了一个个佳绩。主要成就在于他的两个出色学生,Kilian Weinberger和 Fei Sha,做的方法。拿了很多奖,在此不多说,可以到他主页上去看。Weinberger把学习核矩阵引入到流形学习中来。他的这个方法在流形学习中影响到不是很显著,却是在 convex optimization 中人人得知。但看Kilian Weinberger主页,其论文真的很少,第一作者数量:04年1篇,05年2篇,06年3篇,07年2篇,08年3篇,09年2篇.这与灌水风格差异还是很大的
DISTANCE METRIC LEARNING FOR LARGE MARGIN NEAREST NEIGHBOR CLASSIFICATION的MATLAB代码
程序中lmnn,Parameters注释下面都是其自由参数,validation = (def 0) fraction of training data to be used as validation set
On line 4 of Page 225 of his paper (JLMR): To guard against overfitting, we employed a validation set consisting of 30% of the training data and stopped the training early when the lowest classification error on the validation set was reached.
Wei Bian做实验室时,采用的默认的也就是验证集是0.虽然论文说了用30%,他觉得这样不太合理。但根据
http://en.wikipedia.org/wiki/Early_stopping (Mingming gong send this link to me) ,应该是合理的