def _build_res(self, res: OptimizeResult):
     res.log_likelihood = -res.fun
     res.predictive_power = (self.predict_permuted(res.x) *
                             self.is_chosen).sum() / len(self.df)
     res.aic = res.log_likelihood - self._n_free_params()
     res.bic = res.log_likelihood - self._n_free_params() * np.log(
         len(self.df)) / 2
     res.π_L = self.π_L
     res.β = self.β
     res.b = self.b