glum
glum copied to clipboard
`verbose=1` messages uninformative if `alpha_search=True`
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.