Интересно, а если матрицу посчитать и такую же быстрым алгибовским алгоритмом PearsonCorrM. Кто быстрее будет. PearsonCorrM раз в 40-50 быстрее считал построчной алглибовской, наверное даже быстрая самоделка такой разрыв в скорости не преоделеет.
Forester #: Интересно, а если матрицу посчитать и такую же быстрым алгибовским алгоритмом PearsonCorrM. Кто быстрее будет. PearsonCorrM раз в 40-50 быстрее считал построчной алглибовской, наверное даже быстрая самоделка такой разрыв в скорости не преоделеет.
Здесь в два раза отставание самоделки от PearsonCorrM.
Сравнил скорость обучения CatBoost в питоне и через командную строку:
- На 20% быстрей от момента запуска и до сохранения моделей, с учётом чтения выборки
- На 12% быстрей сам процесс обучения
Проверка была на одной модели - результат обучения идентичный.
Быстрей, разумеется, командная строка.
Вы все еще командной строкой запускаете EXE-шники? Можно же через WinExec и даже оптимизировать в тестере.
#import "kernel32.dll"int WinExec(uchar &Path[],int Flag);
int SleepEx(int msec, bool Alertable=false);//SleepEx(1000,false); - для простого таймера#import
...
string CommonPath = TerminalInfoString(TERMINAL_COMMONDATA_PATH)+ "\\Files\\";
string RAM_dir="RAM\\";//использую диск в памяти для скоростиstring agent_dir=RAM_dir+"0000";//при запуске в терминалеstring p=MQLInfoString(MQL_PROGRAM_PATH);// C:\Users\User\AppData\Roaming\MetaQuotes\Tester\ххххххххххххххххххххххх\Agent-127.0.0.1-3000\MQL5\Experts\testEXE.ex5int agent_pos=StringFind(p,"Agent-");// при оптимизации запустится в папке с номером агентаif(agent_pos!=-1){agent_pos=StringFind(p,"-",agent_pos+6);agent_dir = RAM_dir+StringSubstr(p,agent_pos+1,4);}//выдаст 3001, 3002... по номеру папки в котором тестер запустилсяFolderCreate(agent_dir,FILE_COMMON);
...
sinputstring PathExe="С:\\your.exe";//path to exe fileuchar ucha[];
StringToCharArray(PathExe_+" --dir "+CommonPath+agent_dir+"\\",ucha);//string to trainint visible=0;
FileDelete(agent_dir+"\\model.bin",FILE_COMMON); //сначала удалить старыйint x=WinExec(ucha,visible); //visible=0 - work in hidden window, 1 - work in opened exe window - can be closed by user. Better to use 0, to run proces up to finish.while(true){if(FileIsExist(agent_dir+"\\model.bin",FILE_COMMON)){break;}SleepEx(1000);}// используем SleepEx из DLL (Sleep() от MQL не работает в оптимизаторе, будет грузить проц на 100% проверками файла. Через DLL 1%.). Файл с моделью появился - расчет закончен.//модель обучена, читаем файл модели и используем
Catboost не пробовал, но думаю можно что-то придумать. Самое сложное, определить момент окончания обучения. Я это делаю проверкой появления файла с моделью в папке agent_dir+"\\model.bin" 1 раз в секунду. Куда кладет файл модели Catboost - не знаю, возможно придется искать его в другом месте.
Еще возможная проблема, если файл модели огромный, то он может долго записываться, т.е. Файл уже существует, но не записан до конца. Возможно надо будет сделать доп паузу или проверять, что файл не закрыт от чтения процессом записи...
Вы все еще командной строкой запускаете EXE-шники? Можно же через WinExec и даже оптимизировать в тестере.
Я запускаю bat файлы - пока это самый удобный вариант для текущих задач.
Пока только одна задачка есть для автоматического запуска обучения после получения выборки - разведывательный поиск. Планирую чуть позже под неё сделать запуск автоматом bat файла.
Catboost не пробовал, но думаю можно что-то придумать.
Самое сложное, определить момент окончания обучения. Я это делаю проверкой появления файла с моделью в папке agent_dir+"\\model.bin" 1 раз в секунду. Куда кладет файл модели Catboost - не знаю, возможно придется искать его в другом месте.
Еще возможная проблема, если файл модели огромный, то он может долго записываться, т.е. Файл уже существует, но не записан до конца. Возможно надо будет сделать доп паузу или проверять, что файл не закрыт от чтения процессом записи...
Решение интересное у Вас - посмотрю, может и его возьму для применения.
Но, вроде есть возможность получить от исполняемой программы ответ об окончании - я этот подход хотел использовать.
Вариант с файлами - если запускать батник, то опять же - просто можно создать новый файл в конце задания.
Может относительная успешность варианта -1 и 0 в размере выборки train, и следует её уменьшить? Вообще, похоже что Recall на это реагирует.
Как считаете, должен ли результат быть при таких комбинациях сопоставим друг с другом в нашем случае? Или данные безвозвратно устаревают?
Разбил выборку train на 3 части, обучил 3 набора для варианта -1 и варианта 0, а так же обучил в качестве трёх выборок только изначальную train.
Вот что получилось.
Сделал такой обобщающий показатель PR=(Precision-0.5)*Recall
Похоже, что обучение происходит за счет 2 и 3 части выборки train - сейчас объединил их и запустил обучение - посмотрим, что получится.
И всё же, похоже, что это может быть не плохой метод для оценки случайности обучения. В идеале обучение должно быть относительно успешно на каждом отрезке, иначе совсем нет гарантии, что завтра модель просто перестанет работать.
Похоже, что обучение происходит за счет 2 и 3 части выборки train - сейчас объединил их и запустил обучение - посмотрим, что получится.
И всё же, похоже, что это может быть не плохой метод для оценки случайности обучения. В идеале обучение должно быть относительно успешно на каждом отрезке, иначе совсем нет гарантии, что завтра модель просто перестанет работать.
А вот и результат - два последних столбца
Действительно, результаты улучшились. Можно сделать предположение, что чем больше выборка, тем лучше будет результат обучения.
Надо попробовать обучиться на 1 и 2 части выборки train - и если результаты будут не сильно хуже, чем на 2 и 3 части, то фактор свежести выборки можно считать менее значимым, чем объём.
Действительно, результаты улучшились. Можно сделать предположение, что чем больше выборка, тем лучше будет результат обучения.
Надо попробовать обучиться на 1 и 2 части выборки train - и если результаты будут не сильно хуже, чем на 2 и 3 части, то фактор свежести выборки можно считать менее значимым, чем объём.
Кьюто, опят уперлись в незнание мат стата
Есть идея замонтекарлить матстат, ударяясь об него с разных сторон
Это ядро построчного расчета матрицы.
PearsonCorrM раз в 40-50 быстрее считал построчной алглибовской, наверное даже быстрая самоделка такой разрыв в скорости не преоделеет.
Интересно, а если матрицу посчитать и такую же быстрым алгибовским алгоритмом PearsonCorrM. Кто быстрее будет.
PearsonCorrM раз в 40-50 быстрее считал построчной алглибовской, наверное даже быстрая самоделка такой разрыв в скорости не преоделеет.
Здесь в два раза отставание самоделки от PearsonCorrM.
Сравнил скорость обучения CatBoost в питоне и через командную строку:
- На 20% быстрей от момента запуска и до сохранения моделей, с учётом чтения выборки
- На 12% быстрей сам процесс обучения
Проверка была на одной модели - результат обучения идентичный.
Быстрей, разумеется, командная строка.
Сравнил скорость обучения CatBoost в питоне и через командную строку:
- На 20% быстрей от момента запуска и до сохранения моделей, с учётом чтения выборки
- На 12% быстрей сам процесс обучения
Проверка была на одной модели - результат обучения идентичный.
Быстрей, разумеется, командная строка.
Вы все еще командной строкой запускаете EXE-шники?
Можно же через WinExec и даже оптимизировать в тестере.
Catboost не пробовал, но думаю можно что-то придумать.
Еще возможная проблема, если файл модели огромный, то он может долго записываться, т.е. Файл уже существует, но не записан до конца. Возможно надо будет сделать доп паузу или проверять, что файл не закрыт от чтения процессом записи...Самое сложное, определить момент окончания обучения. Я это делаю проверкой появления файла с моделью в папке agent_dir+"\\model.bin" 1 раз в секунду. Куда кладет файл модели Catboost - не знаю, возможно придется искать его в другом месте.
Вы все еще командной строкой запускаете EXE-шники?
Можно же через WinExec и даже оптимизировать в тестере.
Я запускаю bat файлы - пока это самый удобный вариант для текущих задач.
Пока только одна задачка есть для автоматического запуска обучения после получения выборки - разведывательный поиск. Планирую чуть позже под неё сделать запуск автоматом bat файла.
Catboost не пробовал, но думаю можно что-то придумать.
Самое сложное, определить момент окончания обучения. Я это делаю проверкой появления файла с моделью в папке agent_dir+"\\model.bin" 1 раз в секунду. Куда кладет файл модели Catboost - не знаю, возможно придется искать его в другом месте.
Еще возможная проблема, если файл модели огромный, то он может долго записываться, т.е. Файл уже существует, но не записан до конца. Возможно надо будет сделать доп паузу или проверять, что файл не закрыт от чтения процессом записи...Решение интересное у Вас - посмотрю, может и его возьму для применения.
Но, вроде есть возможность получить от исполняемой программы ответ об окончании - я этот подход хотел использовать.
Вариант с файлами - если запускать батник, то опять же - просто можно создать новый файл в конце задания.
Может относительная успешность варианта -1 и 0 в размере выборки train, и следует её уменьшить? Вообще, похоже что Recall на это реагирует.
Как считаете, должен ли результат быть при таких комбинациях сопоставим друг с другом в нашем случае? Или данные безвозвратно устаревают?
Разбил выборку train на 3 части, обучил 3 набора для варианта -1 и варианта 0, а так же обучил в качестве трёх выборок только изначальную train.
Вот что получилось.
Сделал такой обобщающий показатель PR=(Precision-0.5)*Recall
Похоже, что обучение происходит за счет 2 и 3 части выборки train - сейчас объединил их и запустил обучение - посмотрим, что получится.
И всё же, похоже, что это может быть не плохой метод для оценки случайности обучения. В идеале обучение должно быть относительно успешно на каждом отрезке, иначе совсем нет гарантии, что завтра модель просто перестанет работать.
Похоже, что обучение происходит за счет 2 и 3 части выборки train - сейчас объединил их и запустил обучение - посмотрим, что получится.
И всё же, похоже, что это может быть не плохой метод для оценки случайности обучения. В идеале обучение должно быть относительно успешно на каждом отрезке, иначе совсем нет гарантии, что завтра модель просто перестанет работать.
А вот и результат - два последних столбца
Действительно, результаты улучшились. Можно сделать предположение, что чем больше выборка, тем лучше будет результат обучения.
Надо попробовать обучиться на 1 и 2 части выборки train - и если результаты будут не сильно хуже, чем на 2 и 3 части, то фактор свежести выборки можно считать менее значимым, чем объём.
Много раз писал о "предсказательной способности предикторов". которая вычисляется как расстояние между двумя векторами.
Попался список инструментов для вычисления расстояния:
Это кроме стандартного, в котором свой набор расстояний
А вот и результат - два последних столбца
Действительно, результаты улучшились. Можно сделать предположение, что чем больше выборка, тем лучше будет результат обучения.
Надо попробовать обучиться на 1 и 2 части выборки train - и если результаты будут не сильно хуже, чем на 2 и 3 части, то фактор свежести выборки можно считать менее значимым, чем объём.
Много раз писал о "предсказательной способности предикторов". которая вычисляется как расстояние между двумя векторами.
Попался список инструментов для вычисления расстояния:
Это кроме стандартного, в котором свой набор расстояний
Покажите пример, как этим пользоваться?