//+------------------------------------------------------------------+//| This subroutine builds random decision forest. |//| INPUT PARAMETERS: |//| XY - training set |//| NPoints - training set size, NPoints>=1 |//| NVars - number of independent variables, NVars>=1 |//| NClasses - task type: |//| * NClasses=1 - regression task with one |//| dependent variable |//| * NClasses>1 - classification task with |//| NClasses classes. |//| NTrees - number of trees in a forest, NTrees>=1. |//| recommended values: 50-100. |//| R - percent of a training set used to build |//| individual trees. 0<R<=1. |//| recommended values: 0.1 <= R <= 0.66. |//| OUTPUT PARAMETERS: |//| Info - return code: |//| * -2, if there is a point with class number |//| outside of [0..NClasses-1]. |//| * -1, if incorrect parameters was passed |//| (NPoints<1, NVars<1, NClasses<1, |//| NTrees<1, R<=0 or R>1). |//| * 1, if task has been solved |//| DF - model built |//| Rep - training report, contains error on a training|//| set and out-of-bag estimates of |//| generalization error. |//+------------------------------------------------------------------+staticvoid CDForest::DFBuildRandomDecisionForest(CMatrixDouble &xy,
constint npoints,
constint nvars,
constint nclasses,
constint ntrees,
constdouble r,int &info,
CDecisionForest &df,
CDFReport &rep)
例えば、このバリアントでは1000の入力があり、そのうち600はプラス(推測)で働き、400は赤(推測)で働いた。だから誤差はすべてのバリアントに対する推測されていないオプションの数で、この例では誤差 = 400/1000 = 0.4
謹んで申し上げます。
他の人にはどうなのかわかりませんが、私の場合は、運の悪いバリアントの割合をカウントしています。
たとえば、このバリアントでは1000のエントリーがあり、そのうち600がプラス(推測)、400が赤(推測しなかった)でした。 つまり、誤差はすべてのバリアントに対する推測しない選択肢の数で、この例では誤差 = 400/1000 = 0.4 となります。
謹んで申し上げます。
ここで私は、最終的な誤差は、それを削除すると、何らかの理由で入力数を乗じたサンプル数で割られると理解しています。
return(result/(npoints*df.m_nclasses));
これを掛け直すと、例えば0.5578064232767638の ように、かなり分かりやすい結果が得られます:)
ここで私は、最終的な誤差は、それを削除すると、何らかの理由で入力数を乗じたサンプル数で割られると理解しています。
これを掛け算すると、例えば0.5578064232767638の ようにはっきりとした結果が得られます)
とは、「...から推測されるような点(ポイント)」という意味です。またはその逆。
リーズナブル。
たいがい
意味 _点(ポイント)は、...から推測された点のようなものです。またはその逆。
よろしくお願いします。
いいえ、ここではnpointsは入力ベクトルの長さを意味します :)
nclassesが出力数であるのに対して、どのように
したがって、最終的な誤差は、学習サンプルの長さに出力数を掛けたものになります(1の場合は出力は省略されるはずです)。
誰かの役に立つかもしれない
私は何も混同しておらず、正しく実行されていることを望みます :) 少なくともエラー値は明確です。いいえ、ここではnpointsは入力ベクトルの長さを意味します :)
敬意を込めて。
もしそうなら、除数が入力パラメータなので、何がrezultなのかを確認する必要がありますね。
敬意を込めて。
要するに、全サンプルの平均的な 誤差なので、必要ないのですが...。rezultは総誤差だけを返し,それをサンプルの例数で割る(これは削除可能).
要するに、全サンプルの平均的な 誤差なので、必要ないのでは......。rezultは単に総誤差を返し,それをサンプルの例数で割ったものです
そこで、元に戻す必要があるのですが、そのために、除数を掛けることにしました。
Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)
敬意を込めて。
だから、元に戻す必要があるのですが、そのために除数を掛けているのです。
敬意を込めて。
何かをいじって、子供のように喜ぶ感覚です :)
何かに手を加えて、子供のように喜ぶときの気持ち :)
敬具
ランダムフォレストでは、決定木ですべての変数を使用し、ニューラルネットワークのようなメモリ使用量の制限、つまりニューロンの数がないので、理論上はほとんど誤差がないはずです。そこでは、レベル制限、ツリートリミング、すごろくなど、結果を「ぼかす」ための別々の操作しかできません。MQのalglibの実装に枝刈りがあるかどうかは知らないが、タグ付けはある。
この変数が1より小さいと、誤差が大きくなるはずです。