私は金属コイルの品質を予測しようとしています。私は幅10メートル、長さ1〜6キロメートルの金属コイルを持っています。訓練データとして、私は〜600のパラメータを測定し、各10メートル、最終的な品質管理マーク - 良い/悪い(コイル全体)。悪いことは少なくとも1つの場所があることを意味しますコイルが悪いです、正確にどこにデータがありません。私は約10000コイルのデータを持っています。いくつかの点の最小値としての損失関数、カスタム損失関数および勾配
私たちは、このデータのロジスティック回帰を訓練したいと考えています(2つの要因で)。
X = [[0, 0],
...
[0, 0],
[1, 1], # coil is actually broken here, but we don't know it yet.
[0, 0],
...
[0, 0]]
Y = ?????
私は分類器のために混乱しますので、私はちょうど、Y、実行クラシファイアに「悪い」のすべて置くことはできません。私はどこに悪い位置があるのかわからないので、私はすべての "良い"と1つの "悪い"を置くことはできません。
私が気づいている解決策は以下の通りです。損失関数をsum((Y-min(F(x1、x2)))^ 2)(1つのコイルに属するすべてのF )not sum((YF(x1、x2))^ 2)。この場合、恐らくFは悪いところを指すように正しく訓練されます。私はそれのための勾配が必要です、それはすべての点でそれを計算することは不可能です、分はすべての場所でdifferentiableではありませんが、私は弱い勾配を代わりに使用することができます(各場所でコイルで最小限の関数の値を使用して)。
私は多かれ少なかれ自分でそれを実装する方法を知っていますが、疑問はscikit-learnでPythonでそれを行う最も簡単な方法です。理想的には、いくつかの学習方法(損失関数と勾配に基づく多くの方法)で同じ(または容易に適応可能)でなければなりません。このように動作する学習方法のラッパーを作ることが可能です。
更新:gradient_boosting.pyを参照してください。内部抽象クラスLossFunctionには、損失と勾配を計算する能力があり、パースペクティブに見えます。共通の解決策がないように見えます。
「min(F(x1、x2))」とはどういう意味ですか?**この最小操作は何ですか**? F(x1、x2)は単なる数値なので、典型的な表記法のようには見えません。これは横列ですか?したがって、あなたはいつも「悲観的」で、全体のセットからの予測が下がっているものは何でも予測したいと思っていますか? – lejlot
1つのコイルではなく、コース全体のセットです。 –
オリジナルの質問を更新しました –