From 59e64d4286459c49df442124548db9b80c8a29e9 Mon Sep 17 00:00:00 2001 From: Xiao Nan Date: Mon, 19 Oct 2015 02:00:21 -0500 Subject: [PATCH] add regression metrics MAE and RMSLE --- R-package/NAMESPACE | 2 ++ R-package/R/metric.R | 26 +++++++++++++++++++++----- R-package/man/mx.metric.accuracy.Rd | 4 ++-- R-package/man/mx.metric.mae.Rd | 20 ++++++++++++++++++++ R-package/man/mx.metric.rmse.Rd | 4 ++-- R-package/man/mx.metric.rmsle.Rd | 20 ++++++++++++++++++++ 6 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 R-package/man/mx.metric.mae.Rd create mode 100644 R-package/man/mx.metric.rmsle.Rd diff --git a/R-package/NAMESPACE b/R-package/NAMESPACE index ab141f4abdc6..e1bb9570fb40 100644 --- a/R-package/NAMESPACE +++ b/R-package/NAMESPACE @@ -33,7 +33,9 @@ export(mx.io.extract) export(mx.kv.create) export(mx.metric.accuracy) export(mx.metric.custom) +export(mx.metric.mae) export(mx.metric.rmse) +export(mx.metric.rmsle) export(mx.model.FeedForward.create) export(mx.model.load) export(mx.model.save) diff --git a/R-package/R/metric.R b/R-package/R/metric.R index 97cc7314977d..7d0b09fca922 100644 --- a/R-package/R/metric.R +++ b/R-package/R/metric.R @@ -1,7 +1,7 @@ #' Helper function to create a customized metric -#' +#' #' @export -mx.metric.custom <-function(name, feval) { +mx.metric.custom <- function(name, feval) { init <- function() { c(0, 0) } @@ -18,7 +18,7 @@ mx.metric.custom <-function(name, feval) { return(ret) } -#' Accuracy metric +#' Accuracy metric for classification #' #' @export mx.metric.accuracy <- mx.metric.custom("accuracy", function(label, pred) { @@ -26,10 +26,26 @@ mx.metric.accuracy <- mx.metric.custom("accuracy", function(label, pred) { return(sum((label + 1) == ypred) / length(label)) }) -#' RMSE metric -#' +#' RMSE (Root Mean Squared Error) metric for regression +#' #' @export mx.metric.rmse <- mx.metric.custom("rmse", function(label, pred) { res <- sqrt(mean((label-pred)^2)) return(res) }) + +#' MAE (Mean Absolute Error) metric for regression +#' +#' @export +mx.metric.mae <- mx.metric.custom("mae", function(label, pred) { + res <- mean(abs(label-pred)) + return(res) +}) + +#' RMSLE (Root Mean Squared Logarithmic Error) metric for regression +#' +#' @export +mx.metric.rmsle <- mx.metric.custom("rmsle", function(label, pred) { + res <- sqrt(mean((log(pred + 1) - log(label + 1))^2)) + return(res) +}) diff --git a/R-package/man/mx.metric.accuracy.Rd b/R-package/man/mx.metric.accuracy.Rd index c8f4049a6ea6..174d77fed8f9 100644 --- a/R-package/man/mx.metric.accuracy.Rd +++ b/R-package/man/mx.metric.accuracy.Rd @@ -3,7 +3,7 @@ \docType{data} \name{mx.metric.accuracy} \alias{mx.metric.accuracy} -\title{Accuracy metric} +\title{Accuracy metric for classification} \format{\preformatted{List of 3 $ init :function () $ update:function (label, pred, state) @@ -14,7 +14,7 @@ mx.metric.accuracy } \description{ -Accuracy metric +Accuracy metric for classification } \keyword{datasets} diff --git a/R-package/man/mx.metric.mae.Rd b/R-package/man/mx.metric.mae.Rd new file mode 100644 index 000000000000..a98df21f7d7f --- /dev/null +++ b/R-package/man/mx.metric.mae.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/metric.R +\docType{data} +\name{mx.metric.mae} +\alias{mx.metric.mae} +\title{MAE (Mean Absolute Error) metric for regression} +\format{\preformatted{List of 3 + $ init :function () + $ update:function (label, pred, state) + $ get :function (state) + - attr(*, "class")= chr "mx.metric" +}} +\usage{ +mx.metric.mae +} +\description{ +MAE (Mean Absolute Error) metric for regression +} +\keyword{datasets} + diff --git a/R-package/man/mx.metric.rmse.Rd b/R-package/man/mx.metric.rmse.Rd index f6f4cc2d1d87..76b4696a910b 100644 --- a/R-package/man/mx.metric.rmse.Rd +++ b/R-package/man/mx.metric.rmse.Rd @@ -3,7 +3,7 @@ \docType{data} \name{mx.metric.rmse} \alias{mx.metric.rmse} -\title{RMSE metric} +\title{RMSE (Root Mean Squared Error) metric for regression} \format{\preformatted{List of 3 $ init :function () $ update:function (label, pred, state) @@ -14,7 +14,7 @@ mx.metric.rmse } \description{ -RMSE metric +RMSE (Root Mean Squared Error) metric for regression } \keyword{datasets} diff --git a/R-package/man/mx.metric.rmsle.Rd b/R-package/man/mx.metric.rmsle.Rd new file mode 100644 index 000000000000..3e2737fe07b7 --- /dev/null +++ b/R-package/man/mx.metric.rmsle.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/metric.R +\docType{data} +\name{mx.metric.rmsle} +\alias{mx.metric.rmsle} +\title{RMSLE (Root Mean Squared Logarithmic Error) metric for regression} +\format{\preformatted{List of 3 + $ init :function () + $ update:function (label, pred, state) + $ get :function (state) + - attr(*, "class")= chr "mx.metric" +}} +\usage{ +mx.metric.rmsle +} +\description{ +RMSLE (Root Mean Squared Logarithmic Error) metric for regression +} +\keyword{datasets} +