いくつかの疑問
あなたの質問は明確ではありません。たとえば、次のようになります。
ほとんどの X が S3 に到達するように最適化したいので、入力データに基づいて、X が S1 を通過できるようにするかどうかを決定します。
実際には、S3 に到達するオブジェクトの数を最大化するため、最良のモデルは「常にはい」と答えることをお勧めします (任意のオブジェクトがこのポイントに到達できるようにするため)。
一般的な考え方
私は2つの可能な解釈を想定しています:
ラベル「パイプライン」があります。これは単に、すべてのS_nラベルがまだ付けられていない場合、そのオブジェクトにラベルを付けることができないことを意味しますS_ii < n
これは 1 つのモデルの問題ではないようです。自然な方法でモデルをパイプライン処理できます。1objectxに label が必要な場合、認識するモデルをトレーニングしますS_1。2次に、トレーニング セット内のラベルを持つすべてのデータでモデルをS_1トレーニングし、ラベルを予測S_2します。i実行中、各モデルに着信オブジェクトを受け入れる (ラベルを付ける) かどうかを尋ねるだけxで、最初のモデルが「いいえ」と言ったときに停止します。
ラベルには、より複雑な制約がいくつかありますが、これは厳密であるかどうかに関係なく、多くの方法のいずれかを試す必要がありますmulti label classification with constraints。特に、ML のこの側面に関するテクニカル レポートがあります。
解決策 1 - テスト関数の近似
問題が次のように説明できる場合:
- データポイントが
Xあり、それらのそれぞれについて、合格するいくつかのパイプライン可能なテストの最大数がわかりT_iますx
- 予測できる分類器をトレーニングしたいのですが、ポイント
xが合格する連続テストの最大数は何ですか
- 実際のテストにアクセスできない
T_iか、非常に非効率的です
その場合、最も簡単な方法は、1 つの分類子の代わりに次のトレーニング手順を適用することです。
- すべてのデータ ポイントを取得し、それらに
y=0as0およびas のラベルを付けy>=1て、いくつかのバイナリ分類器(SVM など)1 をトレーニングします。したがって、一時的にデータにラベルを付け直して、最初のテストに合格したポイントとそうでないポイントを表示するだけです。この分類子を呼び出しましょうcl_1
- 次に、データポイントを取得し、as でラベル付けし、
y=1asでラベル付けし、バイナリ分類器をトレーニングして、それを0呼び出しy>=2ます1cl_2
- すべてのテストが分類子を持つまで繰り返します。一般に、 でラベル付けされたポイントと でラベル付けされたポイントを区別できる場合、分類子を呼び出し
cl_iます。y=i-1y>=i
cl_iここで、新しい点を分類するには、すべてのforを繰り返しチェックし、 のようなi=1,..,tests最大のもので答えます。したがって、分類子を使用してテストを「シミュレート」し、このテストの近似値がいくつ合格したかを単純に伝えます。icl_i(x)=1
要約すると、各テストは 1 つのバイナリ分類子で近似でき、「ポイントが合格する最大の連続テスト番号は?」という質問は、「アウト ポイントが true として分類される最大の連続分類子番号は?」で近似されます。 "。
解決策 2 - 単純な回帰
入力スペースから到達したテストの数に単純に回帰を適用することもできます。回帰には、実際には、出力値が相関しているという、刻印された仮定があります。したがって、が によって渡された最後のテストの数である(x,y)ペアを使用してデータをトレーニングする場合、実際には、出力が最初に計算に入ることに非常に関連しているという事実を使用しています。このような回帰 (非線形!) は、ニューラル ネットワーク (おそらく正則化) を使用して簡単に実行できます。yxy=3y=2