не знаю как у кого считает, у меня считает процент НЕ угаданных вариантов. например по данному варианту было 1000 входов из них 600 отработал в плюс(угадал) 400 отработал в минус(не угадал). так вот ошибка это количество НЕ угаданных вариантов по отношению ко всем вариантам, в данном примере ошибка=400/1000=0.4
Andrey Kisselyov: не знаю как у кого считает, у меня считает процент НЕ угаданных вариантов. например по данному варианту было 1000 входов из них 600 отработал в плюс(угадал) 400 отработал в минус(не угадал). так вот ошибка это количество НЕ угаданных вариантов по отношению ко всем вариантам, в данном примере ошибка=400/1000=0.4
с уважением.
Здесь я так понял итоговая ошибка делится на кол-во примеров умноженное на кол-во входов зачем-то, если убрать это:
return(result/(npoints*df.m_nclasses));
если перемножить обратно то будет вполне внятный результат, например 0.5578064232767638 :)
Andrey Kisselyov: скорее всего означает _Point (пункты) типа угадано пунктов из ... или наоборот.
с уважением.
нет, здесь npoints означает длину входного вектора :)
а nclasses это количество выходов, о даже как
//+------------------------------------------------------------------+//| 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)
Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)
мб кому-то пригодится
Надеюсь, я ничего не перепутал и сделал правильно :) оп крайней мере значения ошибок стали внятными
Andrey Kisselyov: тогда нужно смотреть что такое rezult , раз делитель это входные параметры.
с уважением.
короче это просто усредненная ошибка по всем примерам, а нафиг она нужна.. rezult возвращает как раз общую ошибку, а затем она делится на кол-во примеров в выборке (это можно убрать)
короче это просто усредненная ошибка по всем примерам, а нафиг она нужна.. rezult возвращает как раз общую ошибку, а затем она делится на кол-во примеров в выборке
значит ее нужно вернуть в нормальное состояние, что вы и сделали, умножив на делитель.
Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)
По идее в случайных лесах и должна быть маленькая ошибка, потому что при их построении в деревьях решений используется все переменные и нет ограгничения на использование памяти как в нейросетях - количествово нейронов. Там можно только отдельные операции использовать для "размывания" результата, типа ограничения уровне, обрезки деревьев или бэггинга. Не знаю есть-ли в MQ реализации алглиба обрезка, бэггинг есть
// R - percent of a training set used to build |
//| individual trees. 0<R<=1. |//| recommended values: 0.1 <= R <= 0.66.
если эту переменную делать поменьше чем 1 ,то должна ошибка увеличиваться.
например по данному варианту было 1000 входов из них 600 отработал в плюс(угадал) 400 отработал в минус(не угадал). так вот ошибка это количество НЕ угаданных вариантов по отношению ко всем вариантам, в данном примере ошибка=400/1000=0.4
с уважением.
не знаю как у кого считает, у меня считает процент НЕ угаданных вариантов.
например по данному варианту было 1000 входов из них 600 отработал в плюс(угадал) 400 отработал в минус(не угадал). так вот ошибка это количество НЕ угаданных вариантов по отношению ко всем вариантам, в данном примере ошибка=400/1000=0.4
с уважением.
Здесь я так понял итоговая ошибка делится на кол-во примеров умноженное на кол-во входов зачем-то, если убрать это:
return(result/(npoints*df.m_nclasses));если перемножить обратно то будет вполне внятный результат, например 0.5578064232767638 :)
Здесь я так понял итоговая ошибка делится на кол-во примеров умноженное на кол-во входов зачем-то, если убрать это:
если перемножить обратно то будет вполне внятный результат, например 0.5578064232767638 :)
означает _Point (пункты) типа угадано пунктов из ... или наоборот.
с уважением.
скорее всего
означает _Point (пункты) типа угадано пунктов из ... или наоборот.
с уважением.
нет, здесь npoints означает длину входного вектора :)
а nclasses это количество выходов, о даже как
Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)
мб кому-то пригодится
Надеюсь, я ничего не перепутал и сделал правильно :) оп крайней мере значения ошибок стали внятныминет, здесь npoints означает длину входного вектора :)
с уважением.
тогда нужно смотреть что такое rezult , раз делитель это входные параметры.
с уважением.
короче это просто усредненная ошибка по всем примерам, а нафиг она нужна.. rezult возвращает как раз общую ошибку, а затем она делится на кол-во примеров в выборке (это можно убрать)
короче это просто усредненная ошибка по всем примерам, а нафиг она нужна.. rezult возвращает как раз общую ошибку, а затем она делится на кол-во примеров в выборке
значит ее нужно вернуть в нормальное состояние, что вы и сделали, умножив на делитель.
Т.е. итоговую ошибку нужно домножить на длину обучающей выборки умноженную на кол-во выходов (если 1 то выходы опускаем)с уважением.
значит ее нужно вернуть в нормальное состояние, что вы и сделали, умножив на делитель.
с уважением.
То чувство, когда что-то подкрутил и потом радуешься как ребенок :)
То чувство, когда что-то подкрутил и потом радуешься как ребенок :)
с уважением.
По идее в случайных лесах и должна быть маленькая ошибка, потому что при их построении в деревьях решений используется все переменные и нет ограгничения на использование памяти как в нейросетях - количествово нейронов. Там можно только отдельные операции использовать для "размывания" результата, типа ограничения уровне, обрезки деревьев или бэггинга. Не знаю есть-ли в MQ реализации алглиба обрезка, бэггинг есть
если эту переменную делать поменьше чем 1 ,то должна ошибка увеличиваться.