glum icon indicating copy to clipboard operation
glum copied to clipboard

`verbose=1` messages uninformative if `alpha_search=True`

Open mlondschien opened this issue 1 year ago • 0 comments

glum.GeneralizedLinearRegressor(verbose=1, alpha_search=True).fit(X, y) prints

Iteration 0: |                                                                       | 0/? [s/it, gradient norm=7.508788257837296e-09]
Iteration 1:  75%|████████████████████████████████████████████▎              | 1.5/2.0 [0.13s/it, gradient norm=0.0003172657161485404]
Iteration 1:  51%|█████████████████████████████▌                            | 1.02/2.0 [0.13s/it, gradient norm=0.0009597403695806861]
Iteration 1:  62%|████████████████████████████████████▍                      | 1.85/3.0 [0.13s/it, gradient norm=0.001405882416293025]
Iteration 1:  59%|██████████████████████████████████▍                       | 1.78/3.0 [0.14s/it, gradient norm=0.0016628883313387632]
Iteration 1:  64%|█████████████████████████████████████                     | 1.92/3.0 [0.14s/it, gradient norm=0.0012108837254345417]
Iteration 1:  66%|██████████████████████████████████████▎                   | 1.98/3.0 [0.13s/it, gradient norm=0.0010389171075075865]
Iteration 1:  68%|███████████████████████████████████████▋                  | 2.05/3.0 [0.13s/it, gradient norm=0.0008985388558357954]
Iteration 1:  74%|███████████████████████████████████████████               | 2.23/3.0 [0.14s/it, gradient norm=0.0005825760308653116]
Iteration 1:  82%|██████████████████████████████████████████████▉          | 2.47/3.0 [0.14s/it, gradient norm=0.00034266721922904253]
Iteration 1:  77%|████████████████████████████████████████████             | 2.32/3.0 [0.14s/it, gradient norm=0.00048133876407518983]
Iteration 1:  82%|██████████████████████████████████████████████▉          | 2.47/3.0 [0.14s/it, gradient norm=0.00034266721922904253/Users/mlondschien/mambaforge/envs/icufm/lib/python3.10/site-packages/glum/_solvers.py:819: ConvergenceWarning: Line search failed. Next iteration will be very close to current iteration. Might result in more convergence issues.it, gradient norm=0.00033976210397668183]
  warnings.warn(
Iteration 99:  93%|███████████████████████████████████████████████████▉    | 2.78/3.0 [0.15s/it, gradient norm=0.00016576898633502424]
/Users/mlondschien/mambaforge/envs/icufm/lib/python3.10/site-packages/glum/_solvers.py:345: ConvergenceWarning: IRLS failed to converge. Increase the maximum number of iterations max_iter (currently 100)█▉    | 2.78/3.0 [0.16s/it, gradient norm=0.00016576898633502424]
  warnings.warn(
Iteration 99:  93%|███████████████████████████████████████████████████▉    | 2.78/3.0 [0.15s/it, gradient norm=0.00016591088206041604]
Iteration 1:  92%|████████████████████████████████████████████████████▎    | 2.75/3.0 [0.13s/it, gradient norm=0.00017823440430220217]
Iteration 1:  90%|████████████████████████████████████████████████████▉      | 2.69/3.0 [0.13s/it, gradient norm=0.000204710042453371]
Iteration 1:  92%|████████████████████████████████████████████████████▎    | 2.75/3.0 [0.14s/it, gradient norm=0.00017646115156821907]
Iteration 2: 100%|███████████████████████████████████████████████████████████| 3.0/3.0 [0.14s/it, gradient norm=0.0001002990611596033]
Iteration 1:  86%|██████████████████████████████████████████████████        | 2.59/3.0 [0.13s/it, gradient norm=0.0002554648381192237]
Iteration 1:  89%|██████████████████████████████████████████████████▌      | 2.66/3.0 [0.13s/it, gradient norm=0.00021733390167355537]
Iteration 1:  90%|████████████████████████████████████████████████████      | 2.69/3.0 [0.13s/it, gradient norm=0.0002048183960141614]
Iteration 1:  85%|████████████████████████████████████████████████▋        | 2.56/3.0 [0.13s/it, gradient norm=0.00027676363242790103]
Iteration 99:  88%|█████████████████████████████████████████████████▍      | 2.65/3.0 [0.16s/it, gradient norm=0.00022573575552087277]
Iteration 1:  86%|████████████████████████████████████████████████▊        | 2.57/3.0 [0.13s/it, gradient norm=0.00027200422482565045]
Iteration 99:  86%|████████████████████████████████████████████████▊        | 2.57/3.0 [0.16s/it, gradient norm=0.0002698054304346442]
Iteration 1:  81%|██████████████████████████████████████████████▏          | 2.43/3.0 [0.14s/it, gradient norm=0.00037430081283673644]
Iteration 1:  78%|█████████████████████████████████████████████▍            | 2.35/3.0 [0.14s/it, gradient norm=0.0004516596090979874]
Iteration 1:  80%|█████████████████████████████████████████████▍           | 2.39/3.0 [0.13s/it, gradient norm=0.00040628996794112027]
Iteration 1:  80%|██████████████████████████████████████████████▌           | 2.41/3.0 [0.13s/it, gradient norm=0.0003867284976877272]
Iteration 1:  81%|██████████████████████████████████████████████▏          | 2.43/3.0 [0.13s/it, gradient norm=0.00037185661494731903]
Iteration 1:  82%|███████████████████████████████████████████████▌          | 2.46/3.0 [0.13s/it, gradient norm=0.0003491958195809275]
Iteration 1:  81%|█████████████████████████████████████████████▉           | 2.42/3.0 [0.13s/it, gradient norm=0.00037713570054620504]
Iteration 1:  82%|██████████████████████████████████████████████▉          | 2.47/3.0 [0.13s/it, gradient norm=0.00033874381915666163]
Iteration 1:  81%|██████████████████████████████████████████████▏          | 2.43/3.0 [0.13s/it, gradient norm=0.00037157523911446333]
Iteration 1:  81%|██████████████████████████████████████████████▊           | 2.42/3.0 [0.14s/it, gradient norm=0.0003796418895944953]
Iteration 1:  80%|███████████████████████████████████████████████▏           | 2.4/3.0 [0.14s/it, gradient norm=0.0004022199718747288]
Iteration 1:  69%|███████████████████████████████████████▎                 | 1.38/2.0 [0.14s/it, gradient norm=0.00041546724969521165]
Iteration 1:  68%|███████████████████████████████████████▏                  | 1.35/2.0 [0.13s/it, gradient norm=0.0004478266346268356]
Iteration 1:  69%|███████████████████████████████████████▎                 | 1.38/2.0 [0.14s/it, gradient norm=0.00041550674359314144]
Iteration 1:  70%|█████████████████████████████████████████▎                 | 1.4/2.0 [0.13s/it, gradient norm=0.0003980890614911914]
Iteration 1:  72%|██████████████████████████████████████████                | 1.45/2.0 [0.14s/it, gradient norm=0.0003545348299667239]
Iteration 1:  75%|█████████████████████████████████████████████               | 1.5/2.0 [0.14s/it, gradient norm=0.000313223572447896]
Iteration 1:  78%|████████████████████████████████████████████▏            | 1.55/2.0 [0.14s/it, gradient norm=0.00028230505995452404]
Iteration 1:  79%|█████████████████████████████████████████████▊            | 1.58/2.0 [0.14s/it, gradient norm=0.0002616484125610441]
Iteration 3:  96%|███████████████████████████████████████████████████████▋  | 1.92/2.0 [0.17s/it, gradient norm=0.0001191814080812037]
Iteration 1:  80%|██████████████████████████████████████████████▋           | 1.61/2.0 [0.14s/it, gradient norm=0.0002458784729242325]
Iteration 1:  82%|███████████████████████████████████████████████▎          | 1.63/2.0 [0.14s/it, gradient norm=0.0002325726964045316]
Iteration 1:  86%|█████████████████████████████████████████████████▌        | 1.71/2.0 [0.14s/it, gradient norm=0.0001939702924573794]
Iteration 1:  88%|████████████████████████████████████████████████████▏      | 1.77/2.0 [0.14s/it, gradient norm=0.000171586376382038]
Iteration 1:  90%|███████████████████████████████████████████████████      | 1.79/2.0 [0.13s/it, gradient norm=0.00016187841538339853]
Iteration 1:  90%|█████████████████████████████████████████████████████      | 1.8/2.0 [0.14s/it, gradient norm=0.0001593124179635197]
Iteration 1:  91%|███████████████████████████████████████████████████▊     | 1.82/2.0 [0.17s/it, gradient norm=0.00015229018754325807]
Iteration 3: 100%|████████████████████████████████████████████████████████▋| 1.99/2.0 [0.18s/it, gradient norm=0.00010123407264472917]
Iteration 1:  94%|██████████████████████████████████████████████████████▌   | 1.88/2.0 [0.15s/it, gradient norm=0.0001307498459937051]
Iteration 1:  96%|██████████████████████████████████████████████████████▍  | 1.91/2.0 [0.15s/it, gradient norm=0.00012234353926032782]
Iteration 1:  94%|█████████████████████████████████████████████████████▊   | 1.89/2.0 [0.14s/it, gradient norm=0.00012758237426169217]
Iteration 2: 100%|███████████████████████████████████████████████████████████| 2.0/2.0 [0.28s/it, gradient norm=0.0001009188054013066]
Iteration 99:  98%|██████████████████████████████████████████████████████▉ | 1.96/2.0 [0.13s/it, gradient norm=0.00011020649981219321]
Iteration 0:  45%|██████████████████████████▌                                | 0.9/2.0 [0.01s/it, gradient norm=0.0012655018363147974]
Iteration 0:  47%|███████████████████████████▎                              | 0.94/2.0 [0.01s/it, gradient norm=0.0011597602861002088]
Iteration 0:  50%|████████████████████████████▋                             | 0.99/2.0 [0.01s/it, gradient norm=0.0010316555853933096]
Iteration 0:   4%|██▎                                                       | 0.04/1.0 [0.01s/it, gradient norm=0.0009213720913976431]
Iteration 0:   8%|████▋                                                     | 0.08/1.0 [0.01s/it, gradient norm=0.0008234024280682206]
Iteration 0:  14%|████████                                                  | 0.14/1.0 [0.01s/it, gradient norm=0.0007270897622220218]
Iteration 0:  18%|██████████▍                                               | 0.18/1.0 [0.01s/it, gradient norm=0.0006548844976350665]
Iteration 0:  23%|█████████████▎                                            | 0.23/1.0 [0.01s/it, gradient norm=0.0005893072811886668]
Iteration 0:  29%|████████████████▊                                         | 0.29/1.0 [0.01s/it, gradient norm=0.0005132006481289864]

This is uninformative. Adding something like

        for k, alpha in enumerate(alphas):
            P1 = P1_no_alpha * alpha
            P2 = P2_no_alpha * alpha

            tic = perf_counter()
            coef = self._solve(
                X=X,
                y=y,
                sample_weight=sample_weight,
                P2=P2,
                P1=P1,
                coef=coef,
                offset=offset,
                lower_bounds=lower_bounds,
                upper_bounds=upper_bounds,
                A_ineq=A_ineq,
                b_ineq=b_ineq,
            )
            toc = perf_counter()

            if self.verbose > 0:
                print(f"alpha={alpha:.3e}, time={toc - tic:.2f}s, n_iter={self.n_iter_}")

to https://github.com/Quantco/glum/blob/cc8975ae5ad2d98e78df6ae6536b8de4c3c9d7f5/src/glum/_glm.py#L1183-L1201 would be more useful.

mlondschien avatar Sep 20 '24 05:09 mlondschien