learn_multiclass_gp.m 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. function model = learn_multiclass_gp(K, labels, noise)
  2. % Learn a multi-class GP model
  3. %
  4. % function model = learn_multiclass_gp(K, labels, noise)
  5. %
  6. % INPUT: K -- kernel matrix of all data points
  7. % labels -- multi-class labels, e.g., 1, 3, 4, 5, ...
  8. % noise -- variance of Gaussian noise model within GP framework
  9. % Copyright (c) by Alexander Freytag, 2013-11-13.
  10. % obtain unique class labels (length of this vector equals the number of classes)
  11. unique_labels = unique(labels);
  12. % cholesky factorization of regularized kernel matrix
  13. L = chol( K + noise*eye(size(K)) , 'lower');
  14. % store relevant data
  15. model.L = L;
  16. model.noise = noise;
  17. model.unique_labels = unique_labels;
  18. % loop over classes and thus over binary one-vs-all tasks
  19. for k=1:length(unique_labels)
  20. % binary label vector for each binary task
  21. current_labels = 2*(labels==unique_labels(k))-1;
  22. % precompute and store alpha vector for each binary task
  23. model.alpha{k} = L'\(L\current_labels);
  24. end
  25. model.y = labels;
  26. end