1

私は回帰の問題がありますが、コスト関数は異なります。過小評価のコストは過大評価よりも高くなります。たとえば、予測値<が真の値ならば、コストは3 *(真の予測)^ 2になります。予測値>真値の場合、コストは1 *(真の予測)^ 2になります。過小評価と過大評価のための異なるコスト

私は、線形回帰、ランダムフォレストなどの古典的な回帰モデルを使用することを考えています。このコスト関数を調整するためにはどのような変更を行う必要がありますか?

私が知っているように、scikit-learnのようなML APIは、コスト関数を直接変更する機能を提供しません。これらのAPIを使用する必要がある場合、私は何ができますか?

推奨読書はありますか?

答えて

1

カスタム費用関数にTensorflow(またはtheano)を使用できます。一般的な線形回帰の実装はhereです。

テンソルフローに実装されている雑音除去機能を見てカスタムコスト関数を実装する方法を知ることができます。

error = y_known - y_pred 
condition = tf.less(error, 0) 
overestimation_loss = 1 * tf.square(error) 
underestimation_loss = 3 * tf.square(error)  
cost = tf.reduce_mean(tf.where(condition, overestimation_loss, underestimation_loss)) 

条件が真のとき、エラーがより低くなっている。ここ:ここでは、その代わりに、あなたが持っているだろうにリンクされたコードで

cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) 

のリンクされたコードに置き換える必要がありますカスタム費用関数が来ますこれはy_knownがy_predよりも小さいことを意味するので、あなたは過大評価を受けるので、tf.whereステートメントは過大評価_lossを選択します。そうでなければ過小評価損失を選択します。

秘密は、両方の損失を計算し、tf.whereと条件を使用してそれらを使用する場所を選択することです。

更新:あなたは他のライブラリを使用したい場合はhuber lossが実装されている場合フーバー損失はあなたに似た条件損失関数であるため、

、あなたのアイデアを得るために見てみることができます。

関連する問題