Source code for olpy.classifiers.eccw

import numpy as np
import math

from scipy.stats import norm
from . cw import CW


[docs]class ECCW(CW): """The Exact convex confidence-weighted learning model. Crammer, K.; Dredze, M. & Pereira, F. Koller, D.; Schuurmans, D.; Bengio, Y. & Bottou, L. (Eds.) Exact convex confidence-weighted learning Advances in Neural Information Processing Systems, Curran Associates, Inc., 109, 21, 345-352 Attributes: a (:obj:`float`, optional): Initial variance parameter, `a > 0`. Defaults to 1. eta (:obj:`float`, optional): Mean weight value. Defaults to 0.7. num_iterations (:obj:`int`, optional): Number of iterations to run the training for. Defaults to 1. random_state (:obj:`int`, optional): The random seed to use with the pseudo-random generator. Defaults to `None`. positive_label (:obj:`int`, optional): The number in the output field that represents the positive label. The value passed should be different than -1. Defaults to 1. class_weight (:obj:`dict`, optional): Represents the relative weight of the labels in the data. Useful for imbalanced classification tasks. Raises: AssertionError: if `positive_label` is equal to -1. """ def __init__(self, eta=0.7, a=1, num_iterations=1, random_state=None, positive_label=1, class_weight=None): super().__init__( eta=eta, a=a, num_iterations=num_iterations, random_state=random_state, positive_label=positive_label, class_weight=class_weight ) def _get_alpha(self, m_t, v_t): """Computes the alpha for the CW/SCW algorithms. The `alpha` variable is used to determine the magnitude of update that needs to be applied to the weights. Args: m_t (:obj:`float`): Represents whether there was an error in prediction or not. 1 for no error, -1 otherwise. v_t (:obj:`float`): Represents how far the point was from its actual value. Returns: float: the value for `alpha`. """ return max(0, ((1 / (v_t * self._xi)) * (-m_t * self._psi + math.sqrt((m_t ** 2 * self._phi / 4 + v_t * self._phi ** 2 * self._psi)))))