function huberLoss( weights, x, y, eta, lambda, epsilon ) {
	var p = weights.innerProduct( x ) - y;

	// Perform L2 regularization...
	regularize( weights, lambda, eta );

	if ( p > epsilon ) {
		weights.add( x, -eta );
	} else if ( p < -epsilon ) {
		weights.add( x, +eta );
	} else {
		weights.add( x, -eta * p );
	}
}
Given a new observation `(x,y)`, updates the weights using the [Huber loss][1] function.

## Notes

The Huber loss uses squared-error loss for observations with error smaller than epsilon in magnitude and linear loss above that in order to decrease the influence of outliers on the model fit.

[1]: https://en.wikipedia.org/wiki/Huber_loss

@private
@param {WeightVector} weights - current model coefficients
@param {NumericArray} x - feature vector
@param {number} y - response value
@param {PositiveNumber} eta - current learning rate
@param {NonNegativeNumber} lambda - regularization parameter
@param {PositiveNumber} epsilon - insensitivity parameter