Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linalg error #343

Open
ThomasMeissnerDS opened this issue Jan 20, 2024 · 0 comments
Open

Linalg error #343

ThomasMeissnerDS opened this issue Jan 20, 2024 · 0 comments

Comments

@ThomasMeissnerDS
Copy link

Hi,

as part of a Kaggle competition I wanted to use Ngboost. However it fails with:

LinAlgError                               Traceback (most recent call last)
Cell In[58], line 112
     97     base_learner_choice = GradientBoostingRegressor(
     98                     max_depth=7,
     99                     n_estimators=300,
    100                     n_iter_no_change=20,
    101                     random_state=seed,
    102                 )
    104     model = NGBClassifier(
    105                     Dist=k_categorical(int(y_train.nunique())),
    106                     n_estimators=300,
   (...)
    109                     learning_rate=0.1,
    110                 )
--> 112     model.fit(
    113                 x_train,
    114                 y_train.values.ravel(),
    115                 X_val=x_test,
    116                 Y_val=y_test.values.ravel(),
    117                 sample_weight=classes_weights_sample,
    118                 early_stopping_rounds=10,
    119                 )
    121 if target_type=='num':
    122     preds.append(model.predict(X_test_temp))

File /opt/conda/lib/python3.10/site-packages/ngboost/ngboost.py:250, in NGBoost.fit(self, X, Y, X_val, Y_val, sample_weight, val_sample_weight, train_loss_monitor, val_loss_monitor, early_stopping_rounds)
    247 self.scalings = []
    248 self.col_idxs = []
--> 250 return self.partial_fit(
    251     X,
    252     Y,
    253     X_val=X_val,
    254     Y_val=Y_val,
    255     sample_weight=sample_weight,
    256     val_sample_weight=val_sample_weight,
    257     train_loss_monitor=train_loss_monitor,
    258     val_loss_monitor=val_loss_monitor,
    259     early_stopping_rounds=early_stopping_rounds,
    260 )

File /opt/conda/lib/python3.10/site-packages/ngboost/ngboost.py:384, in NGBoost.partial_fit(self, X, Y, X_val, Y_val, sample_weight, val_sample_weight, train_loss_monitor, val_loss_monitor, early_stopping_rounds)
    382 loss_list += [train_loss_monitor(D, Y_batch, weight_batch)]
    383 loss = loss_list[-1]
--> 384 grads = D.grad(Y_batch, natural=self.natural_gradient)
    386 proj_grad = self.fit_base(X_batch, grads, weight_batch)
    387 scale = self.line_search(proj_grad, P_batch, Y_batch, weight_batch)

File /opt/conda/lib/python3.10/site-packages/ngboost/scores.py:12, in Score.grad(self, Y, natural)
     10 if natural:
     11     metric = self.metric()
---> 12     grad = np.linalg.solve(metric, grad)
     13 return grad

File <__array_function__ internals>:200, in solve(*args, **kwargs)

File /opt/conda/lib/python3.10/site-packages/numpy/linalg/linalg.py:386, in solve(a, b)
    384 signature = 'DD->D' if isComplexType(t) else 'dd->d'
    385 extobj = get_linalg_error_extobj(_raise_linalgerror_singular)
--> 386 r = gufunc(a, b, signature=signature, extobj=extobj)
    388 return wrap(r.astype(result_t, copy=False))

File /opt/conda/lib/python3.10/site-packages/numpy/linalg/linalg.py:89, in _raise_linalgerror_singular(err, flag)
     88 def _raise_linalgerror_singular(err, flag):
---> 89     raise LinAlgError("Singular matrix")

LinAlgError: Singular matrix

I tried to remove collinear features, but the error kept popping up. Here is the public notebook.

What could be the root cause?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant