ハイパープレーンヒートマップはどのように作成され、どのように解釈する必要がありますか?
-
16-10-2019 - |
解決
他の図書館でどのように実装されているかわからなくても、自分のライブラリにそのようなことを実装するので、私はそれに答えることができると思います。他の方法があれば、それらはあまり変わらないと確信しています。
そのようなグラフをどのように描画できるかを理解するのに数週間かかりました。
一般的な関数$ f: mathbb {r} times mathbb {r} to mathbb {r} $から始めましょう。あなたが望むのは、関数の値を意味する色でポイントを描くことです。 1つの方法は、問題全体を簡素化し、各ピクセルに1つのポイントを描くことです。これは機能しますが、日陰の表面のみを描画し、さまざまな形式(いくつかの色と線の幅のある点線の線を描くことは不可能です。
私が見つけた本当の解決策は、2つの単純化を行います。最初のものは、グラデーションで着色する代わりに、バンドを着色することができます。あなたの関数$ f $が$ [-1、1] $で値を取ると仮定します。 $ [1、-0.9] $、$ [0.9、-0.8] $などのような多くのサブインターバルに共同ドメインを分割できます。今、あなたがしなければならないことは、各間隔で適切な色で満たされたポリゴンをペイントすることです。そのため、元の問題は、より単純な問題の複数のインスタンスを描くように簡素化されます。間隔が十分に小さい場合、勾配のように見え、訓練された目でさえ気づかないことに注意してください。
2番目の単純化は、小さな長方形のグリッドに引き込む必要があるスペースを分割することです。したがって、表面全体にポリゴンを描く代わりに、各小さな長方形を適切なはるかに単純なポリゴンで満たす必要があります。
それが明らかでない場合、問題ははるかに単純化されています。たとえば、長方形の1つを考えてみましょう。この長方形には4つの角があり、その長方形の中心に追加のポイントを取ることができます(特定の状況ではそのポイントが必要になる場合があります)。
問題は、適切な色で適切な領域を埋める方法です。 4つの角と中央で機能を評価する必要があります。
いくつかの特定のケースがあります:
- すべての角で評価される関数は、間隔=>間隔の先頭よりも小さいです
- すべての角で評価された関数は、間隔の終わりよりも大きい=>あなたは何もする必要がありません
- すべての角で評価された関数は間隔=>長方形全体を適切な色で満たします
必要に応じてここで停止できますが、あなたの数字は滑らかではないように見えます。あなたはさらに進むことができます:
- 左上、左へ、右下右側に、右上が大きい=> 2つのポイントがあります。1つはアップサイド、もう1つは間隔=>これらの2つのポイントから最大値で評価された関数を含むものです。右上のコーナーが充填できる三角形を形成する
- どのポリゴンを形成し、埋めるべきかを決定するために一般的な判断のみを必要とする他の多くのケース。
このアルゴリズムを使用して、ポリゴンを埋めるか、線を描くことができます。 SVMの特定の場合、$ f(x、y)= 0 $に対応する線が、ポイントを正と負のサンプルに分類する線であることを知る必要があります。また、関数を$ -1 $または$ 1 $で評価する行は、SVMの最大マージンに対応します。
しばらくして、この種のアプローチはISOライン、またはISO曲線と名付けられていることがわかりました。おそらく、そのようなより似たアルゴリズムです。
私の実装はメッシュの輪郭と名付けられています(最初はその時点で適切な名前が見つかりませんでした)、ソースを見つけることができます ここ.
いくつかの例: