2017-06-15 5 views
0

私はいくつかの歪んだデータ分布に対してDNN回帰タスクを実行するとします。今、私は損失関数として平均絶対誤差を使用しています。回帰。傾きのある分布の平均の代わりに中央値を最適化する

機械学習での一般的なアプローチはすべて、平均損失を最小限に抑えますが、歪みがあって不適切であるためです。実用的な観点から、損失の中央値を最小限に抑える方がよい。一つの方法は大きな損失にある係数でペナルティをかけることだと私は思う。そして平均は中央値に近いでしょう。しかし、未知の分布型のためにその係数をどのように計算するのですか?他のアプローチはありますか?アドバイスは何ができますか? (テンソルフロー/ケラスを使用しています)

答えて

1

平均平方誤差ではなく平均絶対誤差損失関数を使用してください。 平均絶対値は中央値とほぼ同等で、とにかく外れ値や歪んだデータに対してより堅牢です。あなたが可能keras損失のすべてを見ている必要があります

https://keras.io/losses/

と明らかにし、あなたも独自に作成することができます。 しかし、ほとんどのデータセットでは、平均平方がより正確になることが経験的に分かりました。だから私は、絶対的な平均絶対値に収まる前に少なくとも両方の方法を試みることをお勧めします。

+0

ありがとう、オレン、私はすでに絶対的な損失を使用していますが、トリッキーな方法です。最初は、損失が1未満になる前に、四捨五入、トレーニングモデルを使用していました。その後、私はABSの損失を使用しています。それはうまくいく。しかし、それでも、適切な損失計算ではるかに良いことがあります。中央値の誤差は依然として変動しており、平均は私が観察できるように最適化されています。 –

0

損失(/目的)機能をカスタマイズするのは難しいです。理論的にはKerasはこれを行うことができますが、2.0リリースで具体的に記述されているドキュメントは削除されているようです。

あなたはアイデアのための彼らのdocs on loss functionsを確認し、あなたが実装すべきAPIの種類を確認するためにsource codeにオーバー向かうことができます。

しかし、この問題を抱えている人々によって提出された数はissuesであり、その文書を削除したという事実は刺激的ではありません。

ケラス独自のバックエンドを使用して損失機能を計算する必要があることを覚えておいてください。あなたがそれを働かせたら、これは他の多くの人々が苦労している/苦労している何かであるので、ブログ投稿を書くか、ここで答えを更新してください!

関連する問題