All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.alink.operator.common.linear.unarylossfunc.SmoothHingeLossFunc Maven / Gradle / Ivy

package com.alibaba.alink.operator.common.linear.unarylossfunc;

/**
 * Hinge loss function.
 * More http://qwone.com/~jason/writing/smoothHinge.pdf
 */
public class SmoothHingeLossFunc implements UnaryLossFunc {
    public SmoothHingeLossFunc() { }

    @Override
    public double loss(double eta, double y) {

        double d = eta * y;
        if (d <= 0) {
            return 0.5 - d;
        } else if (d >= 1.0) {
            return 0.0;
        } else {
            return 0.5 * (1 - d) * (1 - d);
        }
    }

    @Override
    public double derivative(double eta, double y) {
        double d = eta * y;
        if (d <= 0) {
            return -y;
        } else if (d >= 1.0) {
            return 0;
        } else {
            return (1 - d) * (-y);
        }
    }

    @Override
    public double secondDerivative(double eta, double y) {
        double d = eta * y;
        if (d >= 1.0) {
            return 0.0;
        } else if (d <= 0.0) {
            return 0.0;
        } else {
            return y * y;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy