Aliaksandr Hryshyn: Мера похожести есть?
Дальше выбираем алгоритм кластеризации...
Мера похожести - процент совпадения правильной классификации с сопоставляемым листом.
С кластеризацией у меня плохо, в плане, разве можно менять пространство кластеризации при самой кластеризации? Я про то, что нужен такой
метод, которому не важна очередность столбцов. Какой это метод?
Меня отец по математике и физике контролировал не по правильности результата, а по выбору мною способа решения задачи.
Теперь я занимаюсь с внучкой, интересуясь исключительно тем, как она будет решать задачу; результат не контролирую - на то есть
учитель.
Ребенку это нравится, результат меня вполне удовлетворяет. От 5 вниз только из-за невнимательности, или неаккуратности.
Правильный подход для действий, которые можно рационализировать и систематизировать.
Алексей Тарабанов:
В Вашей логике вижу серьезный изъян: сначала Вы строите дерево принятия решений и оцениваете соответствие его исходов желаемому
результату, а после - напрочь забываете о существовании дерева и сводите задачу к кластерному анализу этих исходов. Тем самым, Вы
уходите от обучения системы методам решения задачи в сторону обучения ее угадыванию конечного результата. В случае с ребенком это
равноценно простому контролю правильности ответов (значений), т.е. уходу от обучения мышлению, понимания сути задачи и способа ее
решения. Просто угадайка.
Во-первых Вы явно переоцениваете достижения, доступные широкому кругу лиц, в ИИ. ИИ - это просто систематизированные псевдослучайно знания об
объекте или явлении.
Во-вторых, Вы не поняли, и возможно я недостаточно четко на это указал, что работа ведется не со всеми листьями дерева, а с предварительно
отобранными по определенной методике. Рынок слишком сложен, что бы его полностью описать одним деревом, во всяком случае у меня нет таких
предикторов (признаков), которые бы это сделали с высокой точностью и полнотой даже на истории.
В-третьих, я создаю коллегиальный принцип принятия независимых решений, основываясь на исторических закономерностях, т.е. по Вашей аналогии,
формирую разновозрастные и различно развитые группы детей, которые как раз и будут свои умения и знания применять при попытке описать
разные явления или сегменты этих явлений за счет разных умений.
Алексей Тарабанов:
К чему клоню: в первом посте Вы привели таблицу, в которой уже все есть: исходы и их соответствие желаемому результату; нет только
дерева. Просто приподнимитесь на один уровень вверх после полной
декомпозиции,-
оцените, какие именно ветви дерева приводят к желаемому исходу. Далее попробуйте выявить их "скрытые" родительские ветви, которые
Вы не могли обнаружить при декомпозиции, поскольку не знали конечного результата. Ну и так далее, вверх по дереву.
Как раз ветви и уже отобраны, а вот анализ самих ветвей в ручную - очень трудоемкое занятие, которое приведет к выдвижению необоснованных
гипотез, в то время, как один лист может описывать только часть явления, а группа из листьев сможет более полно охарактеризовать явление,
но интерпретировать её ещё сложней. Если бы были точные методы по отбраковки ненужных предикторов, то это было бы значительно проще, а пока
велик риск сконцентрировать внимание на мусоре, который есть внутри, почти, каждого листа.
Алексей Тарабанов:
Тем самым, Вы сможете обучить систему находить способы решения определенного класса задач, а не угадыванию решений на основании
анализа статистики.
На правах имхенько...
Увы, так оно не работает, обучить искать способы - это равносильно многопризнаковой классификации, результаты которой тем скудней, чем
больше признаков (методов решения задачи). Идея хорошая, но реализация неопределенная.
Получился такой код по решению задачи группировки листьев.
//+------------------------------------------------------------------+//| Tree_Analiz_List_Test_P.mq5 |//| -Aleks- |//| https://www.mql5.com/ru/users/-aleks- |//+------------------------------------------------------------------+#property copyright"-Aleks-"#property link"https://www.mql5.com/ru/users/-aleks-"#property version"1.00"#property script_show_inputsinputdouble Proc_Group=50.0;//Процент для объединения в группы//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
int arr_Index_GroupA_Max[]={1,0,8,2,0,2,8,8,0,9};
double arr_Sovpalo_Max[]={66.67,100.00,100.00,100.00,100.00,100.00,100.00,66.67,50.00,33.33};
int Total_List=9;
double arr_Group_L[];//Условная группа по похожести на листArrayResize(arr_Group_L,Total_List+1);
ArrayInitialize(arr_Group_L,-1);
int Index_arr_GroupA_Max=0;//Индекс максимального совпаденияdouble arr_GroupA_Max=0;//Максимальное совпадение со всеми группами в процентахfor(int L=0; L<Total_List+1; L++)//Отсеиваем по порогу похожесть листьев
{
Index_arr_GroupA_Max=arr_Index_GroupA_Max[L];
arr_GroupA_Max=arr_Sovpalo_Max[L];
if(arr_GroupA_Max>=Proc_Group)
{
arr_Group_L[L]=Index_arr_GroupA_Max;
}
else
{
arr_Group_L[L]=L;
}
}
int arr_Index_List[];//Архив с индексацией листьев похожести с учетом порогаArrayCopy(arr_Index_List,arr_Group_L,0,0,WHOLE_ARRAY);
int arr_N[];//Массив привязывающий лист к группеArrayResize(arr_N,Total_List+1+0);
ArrayInitialize(arr_N,-1);
int N_Index=0;//Порядковый номер заполненного индекса массива arr_Index_Nfor(int N=0; N<Total_List+1; N++)//Номер группы
{
int arr_Index_N[];//Массив, в котором хранятся листья входящие в группуArrayResize(arr_Index_N,(Total_List+1+0)*2);
ArrayInitialize(arr_Index_N,-1);
int Calc_List=Total_List+1;
for(int i=0; i<Calc_List; i++)//Номер первого листа в группе
{
if(arr_N[i]==-1)//Обнаружен первый лист новой группы
{
N_Index=0;//Обнулили информацию о записи в регистр массива, содержащий информацию об индексах, попадающих в группу
arr_Index_N[0]=i;//Индекс текущего листа
arr_Index_N[1]=arr_Index_List[i];//Индекс корреспондирующего листа
arr_N[i]=N;//Отнесли к группе первый лист в группе
arr_N[arr_Index_List[i]]=N;//Отнесли к группе корреспондирующий лист в группе
N_Index=0+1;//Учли запись в регистр массива, содержащий информацию об индексах, попадающих в группу
Calc_List=0;//Остановили цикл, так как найден первый лист группыfor(int X=0; X<N_Index+1; X++)//Перебор делаем для каждого нового индекса
{
for(int L=0; L<Total_List+1; L++)//Ищем связи корреспондирующих индексов листьев
{
if(arr_Index_List[L]==arr_Index_N[X] && arr_N[L]==-1)//Выявили лист относящийся к группе,
{
arr_N[L]=N;//Отнесли к текущей группе лист
arr_N[arr_Index_List[L]]=N;//Отнесли к текущей группе корреспондирующий лист
N_Index++;//Учли запись в регистр массива, содержащий информацию об индексах, попадающих в группу
arr_Index_N[N_Index]=arr_Index_List[L];//Индекс корреспондирующего листа - сохранили во временный массив группы
N_Index++;//Учли запись в регистр массива, содержащий информацию об индексах, попадающих в группу
arr_Index_N[N_Index]=L;//Индекс текущего листа - сохранили во временный массив группы//Print("N=",N," N_Index=",N_Index);
}
}
}
}
}
}
ArrayPrint(arr_N,0,NULL,0,WHOLE_ARRAY);
}
//+------------------------------------------------------------------+
Осмысливаю результаты группировки своих листьев деревьев.
Ниже привожу группировку с порогом 60% в виде графика для листьев на покупку, а потом для листьев на продажу - x - номер группы, а y - номер
листа.
Смущает меня распределение листьев - получается, что большие группы в 1/3 левый части графика, то есть "первые" группы более насыщены похожими
друг на друга листьями, а более поздние группы боле разряжены. Случайность это или ошибка алгоритма - вот в чем вопрос.
Для наглядности давайте посмотрим, что реально дает группировка.
Напомню, цели:
"
Почему необходимо группировать - с целью распределения рисков экспертных мнений листьев, т. е.
если 10 листьев научились похожему, а один другому, то их участие в принятии решения должно быть сбалансировано - 50% на 50%, а на 10 против
одного. Каждая группа в моей торговой системе имеет право на риск одной единицей торгуемого лота.
"
Соответственно отсюда вытекает прозаичная цель - снижение максимального
объема торгуемого лота, то есть уменьшение ГО, необходимого для торговли.
Ниже представлена таблица, с первоначальным результатом, применением группировки с порогом 60% и 0% (т.е. группировка без ограничения), а
так же использован дополнительный метод по активации листов - коэффициент среднего значения группы при успешной классификации. ТС
предусматривает открытие по рынку, поэтому взял ГО по Si 5500*2=11000.
График "Исходный вариант"
График "Группировка с порогом 0% и Коэффициент активации"
Группировка с порогом 60%, без применения коэффициента, позволила снизить объем лота на 35%, что с одной стороны мало, а с другой стороны это
существенная разница, хотя и некоторые относительные показатели ухудшились. Мои мысли - нужно подумать о повторной свертки уже этих
групп - возможно их можно будет лучшим образом объединить.
Группировка с порогом 0%, с применением коэффициента, показала значительно лучший результат, уменьшив объем на 90% и улучшив относительные
показатели.
И хотя тестирование проводилось на истории частично участвующей в обучении (дообучении) модели и не участвующей в обучении модели,
можно говорить о том, что для условно стационарных данных этот метод может быть полезен, а в трейдинге - поживем и увидим.
А так выглядят группы с порогом 0% - на покупку и продажу
Появились умные люди и правильная тема, я без сарказма. Идете правльно, но длинным путем. Путь нужно пройти, тогда возможно увидите короткий путь.
Советник готовый дадите потестировать?
Vasily Belozerov: Появились умные люди и
правильная тема, я без сарказма. Идете правльно, но длинным путем. Путь нужно пройти, тогда возможно увидите короткий путь. Советник
готовый дадите потестировать?
Правильно шли или нет можно понять по окончанию дороги, при этом параллельно не пройти, да и приключения,как и их исход, зависят от путника...
Окончательный вариант в деле развития идеи не бывает, бывает последний вариант, который привел к разочарованию в идеи...
Объективно, если даже дать советник для тестирования, то он лишь часть инфроструктуры, который только создает предикторы и реагирует на их
показатели, а для обучения и настройки результатов обучения требуются отдельные скрипты, в том числе на языке R, т.е. проку от такой
передачи не будет для получателя, но если интересно, то дам.
Правильно шли или нет можно понять по окончанию дороги, при этом параллельно не пройти, да и приключения,как и их исход, зависят от путника...
Окончательный вариант в деле развития идеи не бывает, бывает последний вариант, который привел к разочарованию в идеи...
Объективно, если даже дать советник для тестирования, то он лишь часть инфроструктуры, который только создает предикторы и реагирует на их
показатели, а для обучения и настройки результатов обучения требуются отдельные скрипты, в том числе на языке R, т.е. проку от такой
передачи не будет для получателя, но если интересно, то дам.
Интересно. И на R можете дать, или если коммерческий продукт, то просто дать ссылку на его описание. Мне надо сравнить с тем что я делаю, вы ничего не
потеряете от этого)
Мера похожести есть? Дальше выбираем алгоритм кластеризации...
Мера похожести - процент совпадения правильной классификации с сопоставляемым листом.
С кластеризацией у меня плохо, в плане, разве можно менять пространство кластеризации при самой кластеризации? Я про то, что нужен такой метод, которому не важна очередность столбцов. Какой это метод?
Меня отец по математике и физике контролировал не по правильности результата, а по выбору мною способа решения задачи.
Теперь я занимаюсь с внучкой, интересуясь исключительно тем, как она будет решать задачу; результат не контролирую - на то есть учитель.
Ребенку это нравится, результат меня вполне удовлетворяет. От 5 вниз только из-за невнимательности, или неаккуратности.
Правильный подход для действий, которые можно рационализировать и систематизировать.
В Вашей логике вижу серьезный изъян: сначала Вы строите дерево принятия решений и оцениваете соответствие его исходов желаемому результату, а после - напрочь забываете о существовании дерева и сводите задачу к кластерному анализу этих исходов. Тем самым, Вы уходите от обучения системы методам решения задачи в сторону обучения ее угадыванию конечного результата. В случае с ребенком это равноценно простому контролю правильности ответов (значений), т.е. уходу от обучения мышлению, понимания сути задачи и способа ее решения. Просто угадайка.
Во-первых Вы явно переоцениваете достижения, доступные широкому кругу лиц, в ИИ. ИИ - это просто систематизированные псевдослучайно знания об объекте или явлении.
Во-вторых, Вы не поняли, и возможно я недостаточно четко на это указал, что работа ведется не со всеми листьями дерева, а с предварительно отобранными по определенной методике. Рынок слишком сложен, что бы его полностью описать одним деревом, во всяком случае у меня нет таких предикторов (признаков), которые бы это сделали с высокой точностью и полнотой даже на истории.
В-третьих, я создаю коллегиальный принцип принятия независимых решений, основываясь на исторических закономерностях, т.е. по Вашей аналогии, формирую разновозрастные и различно развитые группы детей, которые как раз и будут свои умения и знания применять при попытке описать разные явления или сегменты этих явлений за счет разных умений.
К чему клоню: в первом посте Вы привели таблицу, в которой уже все есть: исходы и их соответствие желаемому результату; нет только дерева. Просто приподнимитесь на один уровень вверх после полной декомпозиции,- оцените, какие именно ветви дерева приводят к желаемому исходу. Далее попробуйте выявить их "скрытые" родительские ветви, которые Вы не могли обнаружить при декомпозиции, поскольку не знали конечного результата. Ну и так далее, вверх по дереву.
Как раз ветви и уже отобраны, а вот анализ самих ветвей в ручную - очень трудоемкое занятие, которое приведет к выдвижению необоснованных гипотез, в то время, как один лист может описывать только часть явления, а группа из листьев сможет более полно охарактеризовать явление, но интерпретировать её ещё сложней. Если бы были точные методы по отбраковки ненужных предикторов, то это было бы значительно проще, а пока велик риск сконцентрировать внимание на мусоре, который есть внутри, почти, каждого листа.
Тем самым, Вы сможете обучить систему находить способы решения определенного класса задач, а не угадыванию решений на основании анализа статистики.
На правах имхенько...
Увы, так оно не работает, обучить искать способы - это равносильно многопризнаковой классификации, результаты которой тем скудней, чем больше признаков (методов решения задачи). Идея хорошая, но реализация неопределенная.
Спасибо за ответ. Здоровья.
Спасибо, его как раз и не хватает.
Получился такой код по решению задачи группировки листьев.
При пороге 50%
2020.01.04 11:18:50.896 Tree_Analiz_List_Test_P (Si-3.20,M1) 0 0 0 0 0 0 0 0 0 1
При пороге 90%
2020.01.04 11:19:04.244 Tree_Analiz_List_Test_P (Si-3.20,M1) 0 0 1 1 0 1 1 2 1 3
Осмысливаю результаты группировки своих листьев деревьев.
Ниже привожу группировку с порогом 60% в виде графика для листьев на покупку, а потом для листьев на продажу - x - номер группы, а y - номер листа.
Смущает меня распределение листьев - получается, что большие группы в 1/3 левый части графика, то есть "первые" группы более насыщены похожими друг на друга листьями, а более поздние группы боле разряжены. Случайность это или ошибка алгоритма - вот в чем вопрос.
Для наглядности давайте посмотрим, что реально дает группировка.
Напомню, цели:
"
Почему необходимо группировать - с целью распределения рисков экспертных мнений листьев, т. е. если 10 листьев научились похожему, а один другому, то их участие в принятии решения должно быть сбалансировано - 50% на 50%, а на 10 против одного. Каждая группа в моей торговой системе имеет право на риск одной единицей торгуемого лота.
"
Соответственно отсюда вытекает прозаичная цель - снижение максимального объема торгуемого лота, то есть уменьшение ГО, необходимого для торговли.
Ниже представлена таблица, с первоначальным результатом, применением группировки с порогом 60% и 0% (т.е. группировка без ограничения), а так же использован дополнительный метод по активации листов - коэффициент среднего значения группы при успешной классификации. ТС предусматривает открытие по рынку, поэтому взял ГО по Si 5500*2=11000.
График "Исходный вариант"
График "Группировка с порогом 0% и Коэффициент активации"
Группировка с порогом 60%, без применения коэффициента, позволила снизить объем лота на 35%, что с одной стороны мало, а с другой стороны это существенная разница, хотя и некоторые относительные показатели ухудшились. Мои мысли - нужно подумать о повторной свертки уже этих групп - возможно их можно будет лучшим образом объединить.
Группировка с порогом 0%, с применением коэффициента, показала значительно лучший результат, уменьшив объем на 90% и улучшив относительные показатели.
И хотя тестирование проводилось на истории частично участвующей в обучении (дообучении) модели и не участвующей в обучении модели, можно говорить о том, что для условно стационарных данных этот метод может быть полезен, а в трейдинге - поживем и увидим.
А так выглядят группы с порогом 0% - на покупку и продажу
Появились умные люди и правильная тема, я без сарказма. Идете правльно, но длинным путем. Путь нужно пройти, тогда возможно увидите короткий путь. Советник готовый дадите потестировать?
Правильно шли или нет можно понять по окончанию дороги, при этом параллельно не пройти, да и приключения,как и их исход, зависят от путника...
Окончательный вариант в деле развития идеи не бывает, бывает последний вариант, который привел к разочарованию в идеи...
Объективно, если даже дать советник для тестирования, то он лишь часть инфроструктуры, который только создает предикторы и реагирует на их показатели, а для обучения и настройки результатов обучения требуются отдельные скрипты, в том числе на языке R, т.е. проку от такой передачи не будет для получателя, но если интересно, то дам.
Правильно шли или нет можно понять по окончанию дороги, при этом параллельно не пройти, да и приключения,как и их исход, зависят от путника...
Окончательный вариант в деле развития идеи не бывает, бывает последний вариант, который привел к разочарованию в идеи...
Объективно, если даже дать советник для тестирования, то он лишь часть инфроструктуры, который только создает предикторы и реагирует на их показатели, а для обучения и настройки результатов обучения требуются отдельные скрипты, в том числе на языке R, т.е. проку от такой передачи не будет для получателя, но если интересно, то дам.
Интересно. И на R можете дать, или если коммерческий продукт, то просто дать ссылку на его описание. Мне надо сравнить с тем что я делаю, вы ничего не потеряете от этого)