function accumulator( x, y ) {
		var eta;

		if ( !isArray( x ) ) {
			throw new TypeError( format( 'invalid argument. First argument must be an array. Value: `%s`.', x ) );
		}
		if ( !_weights ) {
			_weights = new WeightVector( x.length, opts.intercept );
			_nFeatures = opts.intercept ? _weights.nWeights - 1 : _weights.nWeights;
		}
		if ( x.length !== _nFeatures ) {
			throw new TypeError( format( 'invalid argument. First argument must be an array of length %u. Value: `%s`.', _nFeatures, x ) );
		}

		// Get current learning rate...
		eta = _getEta();

		// Update weights depending on the chosen loss function...
		_lossfun( _weights, x, y, eta, opts.lambda, opts.epsilon );
	}
Update weights given new observations `y` and `x`.

@param {NumericArray} x - feature vector
@param {number} y - response value
@throws {TypeError} first argument must be an array
@throws {TypeError} first argument must have length equal to the number of predictors

@example
// Update model as observations come in:
var y = 3.5;
var x = [ 2.3, 1.0, 5.0 ];
accumulator( x, y );