This package contains the source code for multiple kernel learning with multiple labels. The source code can be downloaded at: http://leitang.net/code/mkl-multiple-label/mkl-multiple-label.tar.gz Please refer to the following paper for algorithm details: @INPROCEEDINGS{Tang-etal09-IJCAI, author = {Lei Tang and Jianhui Chen and Jieping Ye}, title = {On Multiple Kernel Learning with Multiple Labels}, booktitle = {Proceedings of the 21st International Joint Conference on Artificial Intelligence}, year = {2009}, } For convenient comprehension of the source code, we provide a toy example (USPS.mat) and a driver file (maindriver.m) to call different functions. In order to run the code, two packages must be installed and add to the matlab path: 1. libsvm matlab inferface(http://www.csie.ntu.edu.tw/~cjlin/libsvm/). After compilation, the runnable "svmtrain" is required. 2. mosek (http://www.mosek.com/). We use mosek to solve the LP problem involved. Mosek provides student trial license. Please refer to the corresponding documents for installation. Please add the runnable path of both packages to the matlab path, otherwise the code provided here is not runnable. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Here are some descriptions of the code: - SILP_1norm_independent.m: The INDEPENDENT Model, each label selects kernel independently; - SILP_1norm_partial.m: The PARTIAL model, allowing partial kernel sharing among different labels; - SILP_1norm_same.m: The SAME model, all labels selets the same kernel; All these functions take the input of candidate kernels and class label information, and output the kernel weights as well as the SVM classifier (within the structure "model") model.mu is the kernel weights for shared part; model.gamma are the kernel weights specific for each label. model.alpha and model.bias are the parameters of the SVM classifier with the following desicion function: y = sign( \sum_i alpha_i * y_i * k(x_i, x) + bias) Some common mistakes when using the code: - The class labels should be represented as +1/-1, instead of 1/0; - The kernel matrix for prediction should be index_te X index_tr, not index_tr X index_te. Hope this helps :) If you encounter any problem, please feel free to contact Lei Tang (L.Tang@asu.edu). Updated on July 29th, 2009.