Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 931

 
Dr. Trader:

Генетика пытается за ограниченное количество вызовов функции найти правильные параметры. Сузив число вариантов этого параметра (30 вместо 200) генетика может более детально исследовать регион от 1 до 30. И это правильно, если знаешь конкретные пределы для поиска какого-то параметра модели, то лучше генетике сразу дать эту информацию.


Альтернативно:

Добавь в код эту строку (зелёненькая), тогда у генетики будет в популяции 500 особей вместо дефолтных 50. И она сможет проверить в 10 раз больше моделей (но и время выполнения скрипта вырастет в 10 раз), имея возможность перебрать как можно большее число комбинаций параметров модели. Даже при макс. числе нейронов в 200 думаю генетика тоже сможет найти лучший результат с 0.85, или хотябы приблизится к нему.

Я не могу понять о какой генетике Вы говорите. В ELM нет никакой генетики. Просто посмотрите теорию по ELM или описание к пакету elmNN:

"ELM algorithm is an alternative training method for SLFN ( Single Hidden Layer Feedforward Networks ) which does not need any iterative tuning nor setting parameters such as learning rate, momentum, etc., which are current issues of the traditional gradient-based learning algorithms ( like backpropagation ).

Training of a SLFN with ELM is a three-step learning model:

Given a training set P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, hidden node output function G(a, b, x), and the number of hidden nodes L

1) Assign randomly hidden node parameters (ai , bi ), i = 1,..., L. It means that the arc weights between the input layer and the hidden layer and the hidden layer bias are randomly generated.

2) Calculate the hidden layer output matrix H using one of the available activation functions.

3) Calculate the output weights B: B = ginv(H) %*% T ( matrix multiplication ), where T is the target output of the training set.

ginv(H) is the Moore-Penrose generalized inverse of hidden layer output matrix H. This is calculated by the MASS package function ginv.

Once the SLFN has been trained, the output of a generic test set is simply Y = H %*% B ( matrix multiplication ). Salient features:

- The learning speed of ELM is extremely fast.

- Unlike traditional gradient-based learning algorithms which only work for differentiable activation functions, ELM works for all bounded nonconstant piecewise continuous activation functions.

- Unlike traditional gradient-based learning algorithms facing several issues like local minima, improper learning rate and overfitting, etc, ELM tends to reach the solutions straightforward without such trivial issues.

- The ELM learning algorithm looks much simpler than other popular learning algorithms: neural networks and support vector machines."

Даже с небольшим количеством нейронов получить две одинаковых нейросети невозможно. Вы неверно определяете порог перевода непрерывного выхода в класс. Порог = 0.5  наихудший вариант. Приемлимый = median/ Но есть и более продвинутые. 

Удачи

 
Maxim Dmitrievsky:

О, будет что почитать, а то забыл что это. Вернее, забыл чем отличается GBM ot XGboost.. или не знал

gbm вроде можно бустить любые модели, xgb вроде на деревьях

знаю что бустинг немного лучше бэггинга, через который лес строится. А как там с переобучением не знаю.


Переобученность не имеет НИКАКОГО отношения не имеет к типу модели.

Модель переобучается в двух случаях:

  • наличие шумовых предикторов  - это главная проблема и решается ТОЛЬКО подбором предикторов
  • слишком точной подгонкой модели - "оптимизацией" ее параметров обычно на небольшой выборке. Этот вид переобученности решается опытом разработчика.

 
СанСаныч Фоменко:

СанСаныч, хватит истерить

 
Vladimir Perervenko:

Я не могу понять о какой генетике Вы говорите. В ELM нет никакой генетики. Просто посмотрите теорию по ELM или описание к пакету elmNN:

"ELM algorithm is an alternative training method for SLFN ( Single Hidden Layer Feedforward Networks ) which does not need any iterative tuning nor setting parameters such as learning rate, momentum, etc., which are current issues of the traditional gradient-based learning algorithms ( like backpropagation ).

Training of a SLFN with ELM is a three-step learning model:

Given a training set P = {(xi , ti )|xi E R , ti E R , i = 1,..., N}, hidden node output function G(a, b, x), and the number of hidden nodes L

1) Assign randomly hidden node parameters (ai , bi ), i = 1,..., L. It means that the arc weights between the input layer and the hidden layer and the hidden layer bias are randomly generated.

2) Calculate the hidden layer output matrix H using one of the available activation functions.

3) Calculate the output weights B: B = ginv(H) %*% T ( matrix multiplication ), where T is the target output of the training set.

ginv(H) is the Moore-Penrose generalized inverse of hidden layer output matrix H. This is calculated by the MASS package function ginv.

Once the SLFN has been trained, the output of a generic test set is simply Y = H %*% B ( matrix multiplication ). Salient features:

- The learning speed of ELM is extremely fast.

- Unlike traditional gradient-based learning algorithms which only work for differentiable activation functions, ELM works for all bounded nonconstant piecewise continuous activation functions.

- Unlike traditional gradient-based learning algorithms facing several issues like local minima, improper learning rate and overfitting, etc, ELM tends to reach the solutions straightforward without such trivial issues.

- The ELM learning algorithm looks much simpler than other popular learning algorithms: neural networks and support vector machines."

Даже с небольшим количеством нейронов получить две одинаковых нейросети невозможно. Вы неверно определяете порог перевода непрерывного выхода в класс. Порог = 0.5  наихудший вариант. Приемлимый = median/ Но есть и более продвинутые. 

Удачи

На моём небольшом файле обучения есть 100% совпадения между тренировками..

 

За какой промежуток времени делаете дамп данных?

У меня промежуток в 2 года  и  разница между данными 15 секунд. Предикторов: 30 натуральных и больше 1000 сгенерированных в формате "(double)(val1 < val2)".

Я сначала тоже считал, что количество предикторов нужно сокращать, но практика показала: больше - лучше.

Конечно, 1000 предикторов за 2 года дают объем около 3ГБ. Использовать R при таких объемах - несерьёзно.

Python обошёл R в датамайнинге, потому что существует Cython и Jython, которые подключили к проектам типа TensorFlow, Spark, MXNet...

 
Dr. Trader:

Генетика пытается за ограниченное количество вызовов функции найти правильные параметры. Сузив число вариантов этого параметра (30 вместо 200) генетика может более детально исследовать регион от 1 до 30. И это правильно, если знаешь конкретные пределы для поиска какого-то параметра модели, то лучше генетике сразу дать эту информацию.


Альтернативно:

Добавь в код эту строку (зелёненькая), тогда у генетики будет в популяции 500 особей вместо дефолтных 50. И она сможет проверить в 10 раз больше моделей (но и время выполнения скрипта вырастет в 10 раз), имея возможность перебрать как можно большее число комбинаций параметров модели. Даже при макс. числе нейронов в 200 думаю генетика тоже сможет найти лучший результат с 0.85, или хотябы приблизится к нему.

Спасибо!!!! Действительно результат улучшился. Ладно посмотрим что да как... Главное заработать стабильно...

 
Vladimir Perervenko:

Я не могу понять о какой генетике Вы говорите.

Это в R скрипте, который я где-то сотню страниц назад Михаилу показывал. Генетический алгоритм перебирает параметры для elmnn (активационная функция, зерно гпсч, число скрытых нейронов). В фитнесс функции для генетики обучается комитет elmnn моделей используя эти параметры, оценивается через kfold, итд. 

Сам скрипт написал когда вдохновился вашей статьёй об elmnn и баесовской оптимизации. Но сделал генетику вместо баеса, у меня так гораздо быстрее работает, и оценку комитета сделал на свой вкус.

 
СанСаныч Фоменко:

Модель переобучается в двух случаях:

  • наличие шумовых предикторов  - это главная проблема и решается ТОЛЬКО подбором предикторов

Вопрос не только к вам, - ко всем.

На практике это так и есть, т.е. если есть шумовые предикторы то НС не может вырваться из 50-55%. Если подобрать - то и 70% может выдать.

А вот почему так?
1) Ведь НС, при обучении, сама должна бы подобрать шумовым предикторам веса близкие к 0 (что равносильно их исключению при подборе). Это мы видели в задачке в начале ветки.
2) Если не обучением занизить веса, то хотя бы dropout должен бы их отсеивать...

 
Dr. Trader:

Это в R скрипте, который я где-то сотню страниц назад Михаилу показывал. Генетический алгоритм перебирает параметры для elmnn (активационная функция, зерно гпсч, число скрытых нейронов). В фитнесс функции для генетики обучается комитет elmnn моделей используя эти параметры, оценивается через kfold, итд. 

Скопируйте в свой блог, может еще кому пригодится. Тут что-то искать уже нереально.
 
elibrarius:

Вопрос не только к вам, - ко всем.

На практике это так и есть, т.е. если есть шумовые предикторы то НС не может вырваться из 50-55%. Если подобрать - то и 70% может выдать.

А вот почему так?
1) Ведь НС, при обучении, сама должна бы подобрать шумовым предикторам веса близкие к 0 (что равносильно их исключению при подборе). Это мы видели в задачке в начале ветки.
2) Если не обучением занизить веса, то хотя бы dropout должен бы их отсеивать...

измерение дополнительное то все равно остается и через него надо как-то провести кривую, может и с большой ошибкой

дропаут наоборот увеличивает ошибку, не?

Причина обращения: