38 for (
int i = 0; i <
xcsf->y_dim; ++i) {
39 error += fabs(y[i] - pred[i]);
56 for (
int i = 0; i <
xcsf->y_dim; ++i) {
57 error += (y[i] - pred[i]) * (y[i] - pred[i]);
88 for (
int i = 0; i <
xcsf->y_dim; ++i) {
89 error += y[i] * log(fmax(pred[i], DBL_EPSILON));
105 for (
int i = 0; i <
xcsf->y_dim; ++i) {
106 error += y[i] * log(fmax(pred[i], DBL_EPSILON)) +
107 (1 - y[i]) * log(fmax((1 - pred[i]), DBL_EPSILON));
140 const double delta =
xcsf->HUBER_DELTA;
141 for (
int i = 0; i <
xcsf->y_dim; ++i) {
142 const double a = y[i] - pred[i];
143 if (fabs(a) > delta) {
144 error += 0.5 * delta * delta + delta * (fabs(a) - delta);
146 error += 0.5 * a * a;
149 error /=
xcsf->y_dim;
161 switch (
xcsf->LOSS_FUNC) {
212 printf(
"loss_type_as_string(): invalid type: %d\n", type);
double loss_binary_log(const struct XCSF *xcsf, const double *pred, const double *y)
Binary logistic log loss for binary-class classification.
double loss_rmse(const struct XCSF *xcsf, const double *pred, const double *y)
Root mean squared error loss function.
double loss_onehot(const struct XCSF *xcsf, const double *pred, const double *y)
One-hot classification error.
double loss_log(const struct XCSF *xcsf, const double *pred, const double *y)
Logistic log loss for multi-class classification.
int loss_type_as_int(const char *type)
Returns the integer representation of a loss type given a name.
double loss_mae(const struct XCSF *xcsf, const double *pred, const double *y)
Mean absolute error loss function.
double loss_mse(const struct XCSF *xcsf, const double *pred, const double *y)
Mean squared error loss function.
int loss_set_func(struct XCSF *xcsf)
Sets the XCSF error function to the implemented function.
double loss_huber(const struct XCSF *xcsf, const double *pred, const double *y)
Huber loss function.
const char * loss_type_as_string(const int type)
Returns a string representation of a loss type from the integer.
Loss functions for calculating prediction error.
#define LOSS_RMSE
Root mean squared error.
#define LOSS_MSE
Mean squared error.
#define LOSS_STRING_MSE
Mean squared error.
#define LOSS_STRING_LOG
Log loss.
#define LOSS_STRING_MAE
Mean absolute error.
#define LOSS_STRING_HUBER
Huber loss.
#define LOSS_BINARY_LOG
Binary log loss.
#define LOSS_MAE
Mean absolute error.
#define LOSS_STRING_ONEHOT
One-hot classification error.
#define LOSS_STRING_BINARY_LOG
Binary log loss.
#define LOSS_LOG
Log loss.
#define LOSS_ONEHOT
One-hot encoding classification error.
#define LOSS_STRING_RMSE
Root mean squared error.
#define LOSS_HUBER
Huber loss.
#define LOSS_INVALID
Error code for invalid loss type.
Utility functions for random number handling, etc.
static int argmax(const double *X, const int N)
Returns the index of the largest element in vector X.