diff toolboxes/SVM-light/src/svm_learn.h @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/SVM-light/src/svm_learn.h	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,169 @@
+/***********************************************************************/
+/*                                                                     */
+/*   svm_learn.h                                                       */
+/*                                                                     */
+/*   Declarations for learning module of Support Vector Machine.       */
+/*                                                                     */
+/*   Author: Thorsten Joachims                                         */
+/*   Date: 02.07.02                                                    */
+/*                                                                     */
+/*   Copyright (c) 2002  Thorsten Joachims - All rights reserved       */
+/*                                                                     */
+/*   This software is available for non-commercial use only. It must   */
+/*   not be modified and distributed without prior permission of the   */
+/*   author. The author is not responsible for implications from the   */
+/*   use of this software.                                             */
+/*                                                                     */
+/***********************************************************************/
+
+#ifndef SVM_LEARN
+#define SVM_LEARN
+
+void   svm_learn_classification(DOC **, double *, long, long, LEARN_PARM *, 
+				KERNEL_PARM *, KERNEL_CACHE *, MODEL *,
+				double *);
+void   svm_learn_regression(DOC **, double *, long, long, LEARN_PARM *, 
+			    KERNEL_PARM *, KERNEL_CACHE **, MODEL *);
+void   svm_learn_ranking(DOC **, double *, long, long, LEARN_PARM *, 
+			 KERNEL_PARM *, KERNEL_CACHE **, MODEL *);
+void   svm_learn_optimization(DOC **, double *, long, long, LEARN_PARM *, 
+			      KERNEL_PARM *, KERNEL_CACHE *, MODEL *,
+			      double *);
+long   optimize_to_convergence(DOC **, long *, long, long, LEARN_PARM *,
+			       KERNEL_PARM *, KERNEL_CACHE *, SHRINK_STATE *,
+			       MODEL *, long *, long *, double *,
+			       double *, double *,
+			       TIMING *, double *, long, long);
+long   optimize_to_convergence_sharedslack(DOC **, long *, long, long, 
+			       LEARN_PARM *,
+			       KERNEL_PARM *, KERNEL_CACHE *, SHRINK_STATE *,
+			       MODEL *, double *, double *, double *,
+			       TIMING *, double *);
+double compute_objective_function(double *, double *, double *, double,
+				  long *, long *);
+void   clear_index(long *);
+void   add_to_index(long *, long);
+long   compute_index(long *,long, long *);
+void   optimize_svm(DOC **, long *, long *, long *, double, long *, long *, 
+		    MODEL *, 
+		    long, long *, long, double *, double *, double *, 
+		    LEARN_PARM *, CFLOAT *, KERNEL_PARM *, QP *, double *);
+void   compute_matrices_for_optimization(DOC **, long *, long *, long *, double,
+					 long *,
+					 long *, long *, MODEL *, double *, 
+					 double *, double *, long, long, LEARN_PARM *, 
+					 CFLOAT *, KERNEL_PARM *, QP *);
+long   calculate_svm_model(DOC **, long *, long *, double *, double *, 
+			   double *, double *, LEARN_PARM *, long *,
+			   long *, MODEL *);
+long   check_optimality(MODEL *, long *, long *, double *, double *,
+			double *, long, 
+			LEARN_PARM *,double *, double, long *, long *, long *,
+			long *, long, KERNEL_PARM *);
+long   check_optimality_sharedslack(DOC **docs, MODEL *model, long int *label,
+		      double *a, double *lin, double *c, double *slack,
+		      double *alphaslack, long int totdoc, 
+		      LEARN_PARM *learn_parm, double *maxdiff, 
+		      double epsilon_crit_org, long int *misclassified, 
+		      long int *active2dnum,
+		      long int *last_suboptimal_at, 
+		      long int iteration, KERNEL_PARM *kernel_parm);
+void   compute_shared_slacks(DOC **docs, long int *label, double *a, 
+			     double *lin, double *c, long int *active2dnum, 
+			     LEARN_PARM *learn_parm,
+			     double *slack, double *alphaslack);
+long   identify_inconsistent(double *, long *, long *, long, LEARN_PARM *, 
+			     long *, long *);
+long   identify_misclassified(double *, long *, long *, long,
+			      MODEL *, long *, long *);
+long   identify_one_misclassified(double *, long *, long *, long,
+				  MODEL *, long *, long *);
+long   incorporate_unlabeled_examples(MODEL *, long *,long *, long *,
+				      double *, double *, long, double *,
+				      long *, long *, long, KERNEL_PARM *,
+				      LEARN_PARM *);
+void   update_linear_component(DOC **, long *, long *, double *, double *, 
+			       long *, long, long, KERNEL_PARM *, 
+			       KERNEL_CACHE *, double *,
+			       CFLOAT *, double *);
+long   select_next_qp_subproblem_grad(long *, long *, double *, 
+				      double *, double *, long,
+				      long, LEARN_PARM *, long *, long *, 
+				      long *, double *, long *, KERNEL_CACHE *,
+				      long, long *, long *);
+long   select_next_qp_subproblem_rand(long *, long *, double *, 
+				      double *, double *, long,
+				      long, LEARN_PARM *, long *, long *, 
+				      long *, double *, long *, KERNEL_CACHE *,
+				      long *, long *, long);
+long   select_next_qp_slackset(DOC **docs, long int *label, double *a, 
+			       double *lin, double *slack, double *alphaslack, 
+			       double *c, LEARN_PARM *learn_parm, 
+			       long int *active2dnum, double *maxviol);
+void   select_top_n(double *, long, long *, long);
+void   init_shrink_state(SHRINK_STATE *, long, long);
+void   shrink_state_cleanup(SHRINK_STATE *);
+long   shrink_problem(DOC **, LEARN_PARM *, SHRINK_STATE *, KERNEL_PARM *, 
+		      long *, long *, long, long, long, double *, long *);
+void   reactivate_inactive_examples(long *, long *, double *, SHRINK_STATE *,
+				    double *, double*, long, long, long, LEARN_PARM *, 
+				    long *, DOC **, KERNEL_PARM *,
+				    KERNEL_CACHE *, MODEL *, CFLOAT *, 
+				    double *, double *);
+
+/* cache kernel evalutations to improve speed */
+KERNEL_CACHE *kernel_cache_init(long, long);
+void   kernel_cache_cleanup(KERNEL_CACHE *);
+void   get_kernel_row(KERNEL_CACHE *,DOC **, long, long, long *, CFLOAT *, 
+		      KERNEL_PARM *);
+void   cache_kernel_row(KERNEL_CACHE *,DOC **, long, KERNEL_PARM *);
+void   cache_multiple_kernel_rows(KERNEL_CACHE *,DOC **, long *, long, 
+				  KERNEL_PARM *);
+void   kernel_cache_shrink(KERNEL_CACHE *,long, long, long *);
+void   kernel_cache_reset_lru(KERNEL_CACHE *);
+long   kernel_cache_malloc(KERNEL_CACHE *);
+void   kernel_cache_free(KERNEL_CACHE *,long);
+long   kernel_cache_free_lru(KERNEL_CACHE *);
+CFLOAT *kernel_cache_clean_and_malloc(KERNEL_CACHE *,long);
+long   kernel_cache_touch(KERNEL_CACHE *,long);
+long   kernel_cache_check(KERNEL_CACHE *,long);
+long   kernel_cache_space_available(KERNEL_CACHE *);
+
+void compute_xa_estimates(MODEL *, long *, long *, long, DOC **, 
+			  double *, double *, KERNEL_PARM *, 
+			  LEARN_PARM *, double *, double *, double *);
+double xa_estimate_error(MODEL *, long *, long *, long, DOC **, 
+			 double *, double *, KERNEL_PARM *, 
+			 LEARN_PARM *);
+double xa_estimate_recall(MODEL *, long *, long *, long, DOC **, 
+			  double *, double *, KERNEL_PARM *, 
+			  LEARN_PARM *);
+double xa_estimate_precision(MODEL *, long *, long *, long, DOC **, 
+			     double *, double *, KERNEL_PARM *, 
+			     LEARN_PARM *);
+void avg_similarity_of_sv_of_one_class(MODEL *, DOC **, double *, long *, KERNEL_PARM *, double *, double *);
+double most_similar_sv_of_same_class(MODEL *, DOC **, double *, long, long *, KERNEL_PARM *, LEARN_PARM *);
+double distribute_alpha_t_greedily(long *, long, DOC **, double *, long, long *, KERNEL_PARM *, LEARN_PARM *, double);
+double distribute_alpha_t_greedily_noindex(MODEL *, DOC **, double *, long, long *, KERNEL_PARM *, LEARN_PARM *, double); 
+void estimate_transduction_quality(MODEL *, long *, long *, long, DOC **, double *);
+double estimate_margin_vcdim(MODEL *, double, double, KERNEL_PARM *);
+double estimate_sphere(MODEL *, KERNEL_PARM *);
+double estimate_r_delta_average(DOC **, long, KERNEL_PARM *); 
+double estimate_r_delta(DOC **, long, KERNEL_PARM *); 
+double length_of_longest_document_vector(DOC **, long, KERNEL_PARM *); 
+
+void   write_model(char *, MODEL *);
+void   write_prediction(char *, MODEL *, double *, double *, long *, long *,
+			long, LEARN_PARM *);
+void   write_alphas(char *, double *, long *, long);
+
+typedef struct cache_parm_s {
+  KERNEL_CACHE *kernel_cache;
+  CFLOAT *cache;
+  DOC **docs; 
+  long m;
+  KERNEL_PARM *kernel_parm;
+  long offset,stepsize;
+} cache_parm_t;
+
+#endif