6

いくつかの弱い学習器を強い分類器に結合するにはどうすればよいですか? 私は公式を知っていますが、問題は、私が読んだ AdaBoost に関するすべての論文には、例のない公式だけがあることです。つまり、弱い学習者とその重みを取得したので、式が指示することを実行できます (学習者にその重みを掛け、別の学習者にその重みを掛けたものを追加し、別の学習者を追加するなど)。私の弱い学習者は意思決定の切り株です。属性としきい値があるので、何を乗算しますか?

4

2 に答える 2

7

私があなたの質問を正しく理解していれば、これらの講義ノートで、ブースティングが弱い分類器を多くの画像を含む強い分類器にアンサンブルする方法についての素晴らしい説明があります。

www.csc.kth.se/utbildning/kth/kurser/DD2427/bik12/DownloadMaterial/Lectures/Lecture8.pdf

基本的に、分離超平面の重み付けされた組み合わせを使用して、より複雑な決定面を作成します (講義ノートにこれを示す素晴らしいプロットがあります)。

お役に立てれば。

編集

実際にそれを行うには:

42 ページalpha_t = 1/2*ln((1-e_t)/e_t)には、for ループで簡単に計算できる数式が表示されます。または、数値ライブラリ (私は numpy を使用していますが、これは非常に優れています) を直接ベクトル演算で使用している場合です。はalpha_tアダブーストの内部で計算されるので、すでにこれらを持っていると思います。

38 ページに数式があります。ビッグシグマは全体の合計を表します。 h_tは弱分類関数で、-1 (いいえ) または 1 (はい) を返します。 alpha_t基本的に、弱分類器がどれだけ優れているか、したがって、強分類器の最終決定でどれだけ言わなければならないかです(あまり民主的ではありません)。

私は実際には forloops を決して使用しませんが、理解しやすくなり、言語に依存しなくなります (これは pythonish 疑似コードです):

strongclassifier(x):
    response=0
    for t in T: #over all weakclassifiers indices
        response += alpha[t]*h[t](x)
    return sign(response)

これは、数学的に重みと弱い応答の間の内積と呼ばれます (基本的には、strong(x) = alpha*weak(x))。

http://en.wikipedia.org/wiki/Dot_product

EDIT2

これが strongclassifier(x) 内で起こっていることです: 超平面の分離は基本的に関数 weak(x) で決定されるため、weak(x)=1 を持つすべての x は超平面の片側にあり、weak(x)=-1 です。超平面の反対側にあります。平面上に線があると考えると、平面を(常に)2つの部分に分割する平面があり、一方の側は(-)で、もう一方は(+)です。負の側が外側に向いた三角形の形をした 3 つの無限線がある場合、三角形の内側に 3 つの (+) があり、外側に 1 つまたは 2 つの (-) があり、結果として (強い分類子で)正で残りが負の三角形領域に。これは単純化しすぎていますが、ポイントはまだそこにあり、高次元でもまったく同じように機能します。

于 2012-08-28T20:48:45.023 に答える
1

通常の Ada Boost では、学習者に重みを掛けません。代わりに、誤分類されたデータの重みを増やします。[1..1000] のような配列があり、ニューラル ネットワークを使用してどの数値が素数であるかを推定したいとします。(ばかげた例ですが、デモンストレーションには十分です)。

NeuralNet クラスがあるとします。最初のもの、n1 = NeuralNet.new をインスタンス化します。次に、トレーニング セット、つまり 1 から 1000 までの素数の別の配列を取得します (数字などの数値の機能セットを作成する必要があります)。次に、トレーニング セットの素数を認識するように n1 をトレーニングします。n1 が弱いと仮定して、トレーニング期間が終了すると、1 から 1000 までのすべての数値を素数と非素数に正しく分類できなくなります。n1 が 27 が素数で 113 が非素数であると誤って言い、他の間違いを犯したとします。職業はなんですか?別の NeuralNet n2 をインスタンス化し、27、113 およびその他の誤った数値の重みを 1 から 1.5 に増やし、正しく分類された数値の重みを 1 から 0.667 に減らします。次に、n2 をトレーニングします。トレーニング後、あなたは n2 が、no を含む n1 の間違いのほとんどを修正したことがわかります。27、しかしいいえ。113 はまだ誤分類されています。したがって、n3 をインスタンス化し、113 の重みを 2 に増やし、27 とその他の正しく分類された数値の重みを 1 に減らし、以前の正しく分類された数値の重みを 0.5 に減らします。等々...

私は十分に具体的ですか?

于 2012-08-27T23:29:56.063 に答える