設定はこちらです。
X:6000x8000非スパース行列
B:数十の非ゼロのみを含む8000x1のスパースベクトル
d:正の数
M:はスパース化されたX'Xです。つまり、大きさがdより小さい要素を0にしきい値処理します。数百の要素だけが残ります。したがって、(X'* X --M)には多くの小さな要素があり、スパースではありません。
ベクトルy=(X'* X --M)* Bを計算したいので、y = X'*(X * B)-M*Bと書き直すことができます。最初の部分は十分に高速ですが、2番目の部分はX'* Xを含み、非常に低速です。
誰かが私がこの計算を加速するのを手伝ってくれるでしょうか?
どうもありがとう!