正交匹配追求回归 - 我用错了吗?

时间:2016-03-29 14:19:55

标签: python statistics scikit-learn regression regularized

我正在尝试将此方法作为正则化回归,作为套索和弹性网的替代方法。我有40k数据点和40个功能。 Lasso选择5个特征,正交匹配追踪仅选择1个。

可能导致这种情况的原因是什么?我是以错误的方式使用omp吗?也许它并不意味着用作回归。如果你能做任何我可能做错的事情,请告诉我。

1 个答案:

答案 0 :(得分:2)

正交匹配追踪似乎有点破碎,或者至少对输入数据非常敏感,就像在scikit-learn中实现的那样。

示例:

import sklearn.linear_model 
import sklearn.datasets 
import numpy

X, y, w = sklearn.datasets.make_regression(n_samples=40000, n_features=40, n_informative=10, coef=True, random_state=0)

clf1 = sklearn.linear_model.LassoLarsCV(fit_intercept=True, normalize=False, max_n_alphas=1e6) 
clf1.fit(X, y)

clf2 = sklearn.linear_model.OrthogonalMatchingPursuitCV(fit_intercept=True, normalize=False)
clf2.fit(X, y)

# this is 1e-10, LassoLars is basically exact on this data 
print numpy.linalg.norm(y - clf1.predict(X))

# this is 7e+8, OMP is broken
print numpy.linalg.norm(y - clf2.predict(X))

有趣的实验:

  • sklearn.datasets中有一堆固定数据集。 OMP是否在所有这些方面都失败了?显然,它对糖尿病数据集没有效果......

  • 是否有任何make_regression参数组合可以生成OMP适用的数据?仍在寻找那个... 100 x 100和100 x 10以同样的方式失败。