私はHashingVectorizer [(n_features = 2 ** 24、binary = True、ngram_range =(1,2))を使用して、Sklearnの4709の別々のバイナリロジスティック回帰分類子をトレーニングしてマルチラベルテキスト分類を実装しています。 ]。Sklearn:Decision関数を高速化する方法
精度はかなり良いですが、予測待ち時間が巨大です。学習された行列の平均希薄化率は0.967であり、行列の形状は(1,16777216)1つのエントリのpredict_proba関数の予測時間でのビルドは147.9秒です(Intel Xeon E5 2630v4が1台搭載されているサーバーで)ほとんどの時間(80%)がscipy sparse csc_tocsr関数によって費やされます。
行列を前処理するとき:
cf[i] = sparse.csr_matrix(clf.coef_.T)
確率を推論する(Iは正規化、確率のちょうど順序を必要としない)直接
prob[i] = x*cf[i]
によってので、それは407(10%)の分類を推測するだけ0.043秒を要するが、メモリ消費量は25ギガバイトでありますすべての分類器をメモリに保存するには、約250GBのRAMが必要です。
行列を疎にしたり、あまりメモリを必要としない別の方法で前処理する方法はありますか?