void TRecLinReg::Learn(const TFltV& Sample, const double& SampleVal) { double PredVal = Predict(Sample); TVector x(Sample); TVector Px = P * x; double xPx = Px.DotProduct(Sample); /* * linreg.P = (linreg.P - (Px * Px') / (linreg.lambda + xPx)) / linreg.lambda; * linreg.w = linreg.w + Px*((y - y_hat)/(linreg.lambda + xPx)); */ P = (P - (Px*Px.GetT()) / (ForgetFact + xPx)) / ForgetFact; Coeffs += Px*((SampleVal - PredVal) / (ForgetFact + xPx)); }