定数関数を非線形関数の和で近似したい。通常の最小二乗法ならできるのですが、lasso では近似する関数が定数なので何かがおかしいのです。以下に、Matlab でおもちゃの例を示します。
t = -1:0.01:1; %horizontal axis
x = [exp(-(t+0.5).^2); exp(-t.^2); exp(-(t-0.5).^2);]'; %I use radial basis functions in this example
y = 0.7 * ones(201,1); %Approximate a constant function by a weighted sum of radial basis functions
w = y'/x'; %ordinary least squares works fine
plot(t,w*x'); hold on; plot(t,y,'--k'); axis([-1,1,0,1]); %show results
b = lasso(x,y); %lasso does not work, this gives only zeros
w = b(:,1); %zero weights
plot(t,w*x'); hold on; plot(t,y,'--k'); axis([-1,1,0,1]); %show results
なげなわが最初に入力と出力から平均を減算することに気付きました。これにより、出力がゼロになり、なげなわから生じるすべての重みがゼロになります。これを回避する方法はありますか?または、重みのまばらな結果を取得する別の方法はありますか?