@@ -5,3 +5,85 @@ cdef class LossFunction:
55
66 cpdef double loss(self , double p, double y)
77 cpdef double get_update(self , double p, double y)
8+
9+
10+ cdef class ModifiedHuber(LossFunction):
11+
12+ cpdef double loss(self , double p, double y)
13+
14+ cpdef double get_update(self , double p, double y)
15+
16+
17+ cdef class Hinge(LossFunction):
18+
19+ cdef double threshold
20+
21+ def __init__ (self , double threshold = 1.0 )
22+ self.threshold = threshold
23+
24+ cpdef double loss(self , double p , double y )
25+
26+ cpdef double get_update(self , double p , double y )
27+
28+
29+ cdef class SmoothHinge(LossFunction ):
30+
31+ cdef double gamma
32+
33+ def __init__ (self , double gamma = 1.0 ):
34+ self .gamma = gamma # the larger, the smoother
35+
36+ cpdef double loss(self , double p, double y)
37+
38+ cpdef double get_update(self , double p, double y)
39+
40+
41+ cdef class SquaredHinge(LossFunction):
42+
43+ cdef double threshold
44+
45+ def __init__ (self , double threshold = 1.0 ):
46+ self .threshold = threshold
47+
48+ cpdef double loss(self , double p, double y)
49+
50+ cpdef double get_update(self , double p, double y)
51+
52+
53+ cdef class Log(LossFunction):
54+
55+ cpdef double loss(self , double p, double y)
56+
57+ cpdef double get_update(self , double p, double y)
58+
59+
60+ cdef class SquaredLoss(LossFunction):
61+
62+ cpdef double loss(self , double p, double y)
63+
64+ cpdef double get_update(self , double p, double y)
65+
66+
67+ cdef class Huber(LossFunction):
68+
69+ cdef double c
70+
71+ def __init__ (self , double c ):
72+ self .c = c
73+
74+ cpdef double loss(self , double p, double y)
75+
76+ cpdef double get_update(self , double p, double y)
77+
78+
79+ cdef class EpsilonInsensitive(LossFunction):
80+
81+ cdef double epsilon
82+
83+ def __init__ (self , double epsilon ):
84+ self .epsilon = epsilon
85+
86+ cpdef double loss(self , double p, double y)
87+
88+ cpdef double get_update(self , double p, double y)
89+
0 commit comments