4

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

这可能是什么原因造成的?我是否以错误的方式使用 omp?也许它不打算用作回归。如果你能解决我可能做错的任何事情,请告诉我。

4

1 回答 1

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 以同样的方式失败。

于 2016-04-05T20:37:13.760 回答