SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LossFunction.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2009 Yahoo! Inc. All rights reserved. The copyrights
3  embodied in the content of this file are licensed under the BSD
4  (revised) open source license.
5 
6  Copyright (c) 2011 Berlin Institute of Technology and Max-Planck-Society.
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 3 of the License, or
11  (at your option) any later version.
12 
13  Modifications (w) 2011 Shashwat Lal Das
14  Modifications (w) 2012 Fernando José Iglesias García
15 */
16 
17 #ifndef _LOSSFUNCTION_H__
18 #define _LOSSFUNCTION_H__
19 
20 #include <shogun/lib/config.h>
21 
22 #include <shogun/base/SGObject.h>
23 #include <shogun/lib/common.h>
24 #include <math.h>
25 
26 namespace shogun
27 {
29  enum ELossType
30  {
35  L_LOGLOSS = 100,
37  };
38 }
39 
40 namespace shogun
41 {
55 class CLossFunction: public CSGObject
56 {
57 public:
58 
63 
67  virtual ~CLossFunction() {};
68 
77  virtual float64_t loss(float64_t prediction, float64_t label)
78  {
79  return loss(prediction * label);
80  }
81 
89  virtual float64_t loss(float64_t z) = 0;
90 
99  virtual float64_t first_derivative(float64_t prediction, float64_t label)
100  {
101  return loss(prediction * label);
102  }
103 
111  virtual float64_t first_derivative(float64_t z) = 0;
112 
121  virtual float64_t second_derivative(float64_t prediction, float64_t label)
122  {
123  return loss(prediction * label);
124  }
125 
133  virtual float64_t second_derivative(float64_t z) = 0;
134 
145  virtual float64_t get_update(float64_t prediction, float64_t label, float64_t eta_t, float64_t norm) = 0;
146 
155  virtual float64_t get_square_grad(float64_t prediction, float64_t label) = 0;
156 
164  virtual ELossType get_loss_type()=0;
165 
171  virtual const char* get_name() const { return "LossFunction"; }
172 };
173 }
174 #endif // _LOSSFUNCTION_H__

SHOGUN Machine Learning Toolbox - Documentation