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

 

typedef struct

{

double dist;

double* vector;

} distvect;


int distvectcomp(distvect *v1, distvect *v2)

{

if (v1->dist == v2->dist) return 0;

double sub = v1->dist - v2->dist;

return sub / fabs(sub);

}


double* parsen(dataset inputs, dataset outputs, int k, double kernel(double), double vector[])

{

distvect* dvarr = malloc(inputs.length * sizeof(distvect));


for (int i = 0; i < inputs.length; ++i)

{

double dist = 0;

for (int j = 0; j < inputs.dimentions; ++j) dist += pow(vector[j] - inputs.data[i][j], 2);

distvect dv = { dist, outputs.data[i] };

dvarr[i] = dv;

}

qsort(dvarr, inputs.length, sizeof(distvect), distvectcomp);


double *res = calloc(outputs.dimentions, sizeof(double));

double W = 0;


for (int i = 0; i < k; ++i)

{

if (dvarr[i].dist == 0) continue;

double w = kernel(dvarr[i].dist);

W += w;

for (int d = 0; d < outputs.dimentions; ++d)

res[d] += dvarr[i].vector[d] * w;

}


for (int d = 0; d < outputs.dimentions; ++d) res[d] /= W;


free(dvarr);

return res;


}

Считается что "квазиоптимальный" алгоритм МО
 
В смысле? что это за огрызок SVM
 
Maxim Dmitrievsky:
В смысле? что это за огрызок SVM

да не, какой же это svm это "парзеновское окно", ядерное сглаживание, а "квазиоптимальный" в смысле что почти идеальный(у Митчела где то было), но только очень медленный, каждая иттерация - сортировка всего датасета к новой точке и свёртка с ядром

 

Я вот не пойму, почему нет алгоритмов для построения дерева, которые бы учитывали равномерность распределения сигнала по всей выборки при построении дерева?

Может как то это реализуем, ведь для трейдинга это критически актуально.

Оценку листьев я делаю с учетом этого распределения, но если бы дерево строилось с его учетом, то эффективных листьев/деревьев было бы значительно больше.
 
Aleksey Vyazmikin:
Не буду утверждать, но не исключаю, что зря ты деревца обрезкой мучаешь.
Это так, из общих соображений и личного опыта.
 
Aleksey Vyazmikin:

Я вот не пойму, почему нет алгоритмов для построения дерева, которые бы учитывали равномерность распределения сигнала по всей выборки при построении дерева?

Может как то это реализуем, ведь для трейдинга это критически актуально.

Оценку листьев я делаю с учетом этого распределения, но если бы дерево строилось с его учетом, то эффективных листьев/деревьев было бы значительно больше.
Там перед каждым делением, происходит сортировка данных по фиче (что перемешивает их по времени), делится (по середине или по квартилям), запоминается уменьшение ошибки, повторяется для всех фич. Самое лучшее разделение становится узлом.

Предложите лучший алгоритм.

 
Yuriy Asaulenko:
Не буду утверждать, но не исключаю, что зря ты деревца обрезкой мучаешь.
Это так, из общих соображений и личного опыта.

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

 
elibrarius:
Там перед каждым делением, происходит сортировка данных по фиче (что перемешивает их по времени), делится (по середине или по квартилям), запоминается уменьшение ошибки, повторяется для всех фич. Самое лучшее разделение становится узлом.

Предложите лучший алгоритм.

Вот и нужно давать оценку в момент сортировки предикторов и их значений и не брать те предикторы со значениями (диапазонами), которые скучковались очень сильно, а давать предпочтение тем, что распределены по всей выборке.

Т.е. нужно оценивать частоту повторения сплита по выборке, а не только его абсолютную повторяемость.
 
Aleksey Vyazmikin:

Вот и нужно давать оценку в момент сортировки предикторов и их значений и не брать те предикторы со значениями (диапазонами), которые скучковались очень сильно, а давать предпочтение тем, что распределены по всей выборке.

Ну на бэктесте всегда все очень хорошо выглядит)
Полагаю вам форвард нужен равномерный? Про форвард лес ничего не знает при обучении\
 
elibrarius:
Ну на бэктесте всегда все очень хорошо выглядит)
Полагаю вам форвард нужен равномерный? Про форвард лес ничего не знает при обучении\

Оценка должна быть на двух выборках, участвующих в обучении.

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