Страница 9 из 35
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Вс авг 05, 2018 8:13 pm
Eugene Lutsenko
Я не обманывал. Это в Excel-таблице так, а в системе Эйдос натуральные (других в языке нет) и переводятся в двоичные. Но переводятся правильно, я сейчас проверил в самой системе Эйдос на простом численном примере.
Да, я согласен с тем, что на результат распознавания он не влияет. Но все же лучше когда количество информации представлено в привычных единицах. Хотя, конечно, можно умножить результаты на любую константу и получатся результаты в соответствующих единицах.
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Вс авг 05, 2018 8:26 pm
Eugene Lutsenko
Это деление на Log(2) сделано в коэффициенте, т.к. потом при вычислении частных критериев также используется логарифм и он тоже переводится к основанию 2:
- Код: Выделить всё
DBGOTO(N_Atr+1);N = SUMMA // SUMM угловой элемент
DBGOTO(N_Atr+4);Nobj = SUMMA // Всего логических объектов обучающей выборки
K = LOG(N_Cls)/LOG(N)/LOG(2) // Нормировочный коэффицент для перевода в биты
*** Начало цикла по классам *******************
FOR j = 1 TO N_Cls
SELECT ABS_CLUST2
DBGOTO(N_Atr+1);Nj = FIELDGET(2+j) // Суммарное число признаков по j-му классу
DBGOTO(N_Atr+4);Njo = FIELDGET(2+j) // Суммарное число объектов по j-му классу
FOR i = 1 TO N_Atr
****** Выбор способа расчета для разных моеделей
PUBLIC Ar_Model := {"Abs", "Prc1", "Prc2", "Inf1", "Inf2", "Inf3", "Inf4", "Inf5", "Inf6", "Inf7" }
SELECT ABS_CLUST2
DBGOTO(i)
Nij = FIELDGET(2+j)
Ni = SUMMA
Iij = 0 // На случай, если вообще не посчитается, чтобы не возникала ошибка при присвоении значения полю базы
DO CASE
CASE mNumMod = 1 // ABS (модель ABS есть сама матрица ABS, т.е. ее рассчиывать не нужно)
Iij = Nij
CASE mNumMod = 2 // PRC1
IF Nj <> 0
Iij = Nij/Nj
ENDIF
CASE mNumMod = 3 // PRC2
IF Njo <> 0
Iij = Nij/Njo
ENDIF
CASE mNumMod = 4 // INF1
IF Nij*Ni*Nj*N <> 0
Iij = K*LOG((Nij*N)/(Ni*Nj))
ENDIF
CASE mNumMod = 5 // INF2
IF Nij*Ni*Njo*Nobj <> 0
Iij = LOG((Nij*Nobj)/(Ni*Njo))/LOG(2)
ENDIF
CASE mNumMod = 6 // INF3
IF N <> 0
Iij = Nij-Ni*Nj/N
ENDIF
CASE mNumMod = 7 // INF4
IF Ni*N <> 0
Iij = (Nij*N)/(Ni*Nj) - 1
ENDIF
CASE mNumMod = 8 // INF5
IF Ni*Njo*Nobj <> 0
Iij = (Nij*Nobj)/(Ni*Njo) - 1
ENDIF
CASE mNumMod = 9 // INF6
IF Nj*Nobj <> 0
Iij = (Nij/Nj) - (Ni/N)
ENDIF
CASE mNumMod = 10 // INF7
IF Njo*Nobj <> 0
Iij = (Nij/Njo) - (Ni/Nobj)
ENDIF
ENDCASE
SELECT INF_CLUST
DBGOTO(i)
FIELDPUT(2+j,Iij) // сам элемент Iij
REPLACE SUMMA WITH SUMMA + Iij // столбец SUMMA
DBGOTO(N_Atr+1)
FIELDPUT(2+j,FIELDGET(2+j)+Iij) // строка SUMMA
REPLACE SUMMA WITH SUMMA + Iij // Угл.эл. SUMMA
NEXT
NEXT
****** Расчет средних по строкам
SELECT INF_CLUST
FOR i = 1 TO N_Atr
DBGOTO(i)
REPLACE SREDN WITH SUMMA/N_Cls
NEXT
** Расчет средних по столбцам
GO N_Atr+2 // SREDN строка
FOR j = 1 TO N_Cls
DBGOTO(N_Atr+1);mSumma = FIELDGET(2+j) // SUMMA строка
DBGOTO(N_Atr+2);FIELDPUT(2+j,mSumma/N_Atr) // SREDN строка
NEXT
DBGOTO(N_Atr+1);mSredn = SUMMA/(N_Cls*N_Atr)
DBGOTO(N_Atr+2);REPLACE SREDN WITH mSredn // SREDN угловой элемент
****** Расчет столбца интегральной информативности факторов
Ds = 0 // угловой элемент DISP
FOR i = 1 TO N_Atr
DBGOTO(i);mSredn = SREDN
FOR j = 1 TO N_Cls
Iij = FIELDGET(2+j) // Информативность-элемент (i,j)
REPLACE DISP WITH DISP+(mSredn-Iij)^2
Ds = Ds + (mSredn-Iij)^2
NEXT
NEXT
**** Дорасчет интегральной информативности факторов
FOR i = 1 TO N_Atr
DBGOTO(i);mDisp = DISP // DISP столбец
REPLACE DISP WITH SQRT(DISP/(N_Cls-1))
NEXT
*** Расчет степени редукции классов
FOR j = 1 TO N_Cls
DBGOTO(N_Atr+2);mSredn=FIELDGET(2+j)
FOR i = 1 TO N_Atr
DBGOTO(i);Iij=FIELDGET(2+j) // Информативность-элемент (i,j)
DBGOTO(N_Atr+3);FIELDPUT(2+j,FIELDGET(2+j)+(mSredn-Iij)^2)
NEXT
NEXT
**** Дорасчет среднеквадратичного оклонения по классам и угл.элемент
DBGOTO(N_Atr+3)
FOR j = 1 TO N_Cls
FIELDPUT(2+j,SQRT(FIELDGET(2+j)/(N_Atr-1)))
NEXT
REPLACE DISP WITH SQRT(Ds/(N_Cls*N_Atr-1)) // DISP - угловой элемент
См. строки:
CASE mNumMod = 4 // INF1
IF Nij*Ni*Nj*N <> 0
Iij = K*LOG((Nij*N)/(Ni*Nj))
ENDIF
А для модели Inf2 этот коэффициент не используется, поэтому там кол-во информации просто делится на Log(2)
CASE mNumMod = 5 // INF2
IF Nij*Ni*Njo*Nobj <> 0
Iij = LOG((Nij*Nobj)/(Ni*Njo))/LOG(2)
ENDIF
Но эта модель хуже обоснована теоретически, хотя и более понятна, чем Inf1
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Вс авг 05, 2018 8:50 pm
Eugene Lutsenko
Надо все же видимо довести до ума распознавание с GPU.
Там еще почему-то в результате получалось другое количество объектов, чем было в тестовой выборке. Я об этом писал.
И сейчас при распознавании обуч.выборки различие осталось: в результате на 1 больше.
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Вс авг 05, 2018 8:56 pm
Eugene Lutsenko
В результате эти объекты лишние (их 38):
fd3af939c
fd46bc316
fd69c65d3
fd801ee9d
fd992de8a
fdac3144d
fdc71f3af
fdec1a81a
fdf7658f0
fe02247d5
fe0c5726a
fe22d064a
fe243db29
fe497b462
fe5414c97
fe596c7c2
fe7595983
fe800ed37
fe808da78
feb1ad7a8
febbda7c9
fed131a60
fef33cb02
fef8c8005
ff0dccf66
ff2320d84
ff2558703
ff34496ea
ff3d0e888
ff3e1f24c
ff7b7c367
ff7be29d2
ff7cdeb16
ff85154c8
ffb6b3f4f
ffcf61eb6
ffea67e98
ffeb15d25
Начиная со 117 объекта в результатах появляются новые объекты, которых не было в расп.выборке.
115 06cd03d09 06cd03d09 129925.000000000 0
116 06e503809 06e503809 19915076.0000000 0
117 06f5eb3b9 06e503809 129925.000000000 1
118 06f84353d 06f5eb3b9 129925.000000000 1
Объект 06e503809 лишний. И дальше еще появилось неизвестно откуда 37 объектов
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 6:00 am
Eugene Lutsenko
Дмитрий Бандык писал(а):Буду разбиратьтся. Имена как вижу пошли с начала списка. Где-то при разбиении выборки на части последняя часть пошла как равная по размеру с предыдущими. А должна быть короче. Исправлю.
После этого наверное модуль распознавания будет практически готов. Надо будет еще конечно проверить правильность результатов на малой выборке. Проверю. При завершении не выдал ошибку, написал нормальное сообщение о завершении работы. Я просто взял и сравнил в Excel колонку наименований объектов из файла результата (вида results_inf7k.csv) и из файла заголовков распознаваемой выборки (Rso_Zag.dbf). Там в результатах не только в конце объекты из начала списка. Еще и по всему списку вставлено по 1 объекту в разных местах с определенным шагом. Послал тебе на почту Excel-файл со сравнением. Может тебе поможет. Там появляется смещение в результате из-за дублирования объекта, и оно нарастает.
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 6:49 am
Eugene Lutsenko
Спасибо. Буду смотреть. Еще пожелание. Не мог бы не использовать серый цвет в прогресс-бар. Мне он не нравится.
После окончания работы модуля распознавания можно написать:
Распознавание завершено успешно! (полужирным)
Объектов распознаваемой выборки: #########
Классов: #########. Признаков: #########
Моделей: ##. Интегральных критериев: ##
Время исполнения: ## час. ## мин. ## сек.
А после модуля синтеза моделей:
Синтез моделей успешно завершен! (полужирным)
Объектов обучающей выборки: ########
Классов: #########. Признаков: #########
Моделей: ##. Время исполнения: ## час. ## мин. ## сек.
Как-то посимпатичнее выровнять на окошке
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 7:16 am
Eugene Lutsenko
OK. Тогда посмотрю я.
начал поиск самой достоверной модели по метрике Каггла (Среднеквадратическое отклонение логарифмов факта и прогноза (RMSLE) )
https://habr.com/post/176267/
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 10:13 am
Eugene Lutsenko
Дима!
Попробуй, плз, сделать формат матриц моделей таким, чтобы они считывались в системе Эйдос, например в режиме 5.5. Их структуры я привел выше. Конец строки CrLf
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 10:59 am
Eugene Lutsenko
Данные по достоверности моделей с различными инт.критериями:
- Код: Выделить всё
Наим. Модели Достоверность модели
Prc2i 36,28616
Prc1i 15,04822
Inf7i 10,65261
Absk 9,75555
Inf4i 8,18569
Inf2i 4,64230
Inf1i 4,14891
Inf6i 3,22942
Inf5i 2,71361
Absi 1,61471
Inf1k 1,07647
Inf4k 0,94192
Inf2k 0,58309
Inf6k 0,49338
Inf7k 0,33640
Inf3i 0,13456
Inf3k 0,08971
Среднее прогноз 0,06728
Prc1k 0,00000
Prc2k 0,00000
Inf5k 0,00000
Это доля случае в %, когда прогноз в данной модели с данным инт.критерием был наиболее точным (модуль абс.погрешности был минимальным)
Re: Santander Value Prediction Challenge
![Сообщение Сообщение](./styles/prosilver/imageset/icon_post_target.gif)
Добавлено:
Пн авг 06, 2018 12:11 pm
Eugene Lutsenko
Пытался найти наиболее достоверную модель по результатам распознавания обучающей выборки, чтобы потом использовать это при подготовке данных для Каггла после распознавания тестовой выборки. Откровенно говоря пока достоверность получилась так себе, не очень. Причем по разным критериям разные модели оказываются наиболее достоверными. Я сделал средневзвешенный прогноз из небольшого числа наиболее достоверных моделей, который тоже так себе.
Проверил все на моделях небольших размерностей. Все работает правильно, и система Эйдос, и Димины модули, и дают хорошие результаты, но не на этих данных.
Послал на почту