SHOGUN  v2.0.0
 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/base/SGObject.h>
21 #include <shogun/lib/common.h>
22 #include <math.h>
23 
24 namespace shogun
25 {
27  enum ELossType
28  {
33  L_LOGLOSS = 100,
35  };
36 }
37 
38 namespace shogun
39 {
53 class CLossFunction: public CSGObject
54 {
55 public:
56 
61 
65  virtual ~CLossFunction() {};
66 
75  virtual float64_t loss(float64_t prediction, float64_t label)
76  {
77  return loss(prediction * label);
78  }
79 
87  virtual float64_t loss(float64_t z) = 0;
88 
97  virtual float64_t first_derivative(float64_t prediction, float64_t label)
98  {
99  return loss(prediction * label);
100  }
101 
109  virtual float64_t first_derivative(float64_t z) = 0;
110 
119  virtual float64_t second_derivative(float64_t prediction, float64_t label)
120  {
121  return loss(prediction * label);
122  }
123 
131  virtual float64_t second_derivative(float64_t z) = 0;
132 
143  virtual float64_t get_update(float64_t prediction, float64_t label, float64_t eta_t, float64_t norm) = 0;
144 
153  virtual float64_t get_square_grad(float64_t prediction, float64_t label) = 0;
154 
162  virtual ELossType get_loss_type()=0;
163 
169  virtual const char* get_name() const { return "LossFunction"; }
170 };
171 }
172 #endif // _LOSSFUNCTION_H__

SHOGUN Machine Learning Toolbox - Documentation