FeatureInfo.Builder fib) {
double rmse = Double.MAX_VALUE;
double trail = initialValue * initialValue * (featureCount - feature - 1);
TrainingLoopController controller = rule.getTrainingLoopController();
Collection<IndexedPreference> ratings = snapshot.getRatings();
while (controller.keepTraining(rmse)) {
rmse = doFeatureIteration(estimates, ratings, userFeatureVector, itemFeatureVector, trail);
fib.addTrainingRound(rmse);
logger.trace("iteration {} finished with RMSE {}", controller.getIterationCount(), rmse);
}
}