[phpBB Debug] PHP Notice: in file /viewtopic.php on line 981: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[phpBB Debug] PHP Notice: in file /viewtopic.php on line 981: getdate(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4183: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4185: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4186: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4187: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3493)
Chaos and Correlation • Просмотр темы - Santander Value Prediction Challenge
Страница 25 из 35

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 9:51 am
Eugene Lutsenko
да. Это перевод на основание 2 (делится на log(2)), чтобы было в битах, если взять натуральный - то получится в нитах, если десятичный - то в дитах. т.е. сам log можно брать по любому основанию (у меня - это натуральный log, ln).

В матр.abs.txt ЕСТЬ ЕЩЕ 4-я строка, - это число объектов по классам

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 11:24 am
Eugene Lutsenko
Число столбцов у матриц одинаковое, а у abs только на 1 строку больше. Первые три итоговые строки: сумма числа признаков, среднее и ср.кв.отклонение, а 4-я строка - число объектов по классам и всего.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 11:28 am
Eugene Lutsenko
еще в https://elibrary.ru/item.asp?id=18632909 посмотри стр.240 и рядом

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 2:22 pm
Eugene Lutsenko
На счет коэффициента "пси":

Луценко Е.В. Моделирование сложных многофакторных нелинейных объектов управления на основе фрагментированных зашумленных эмпирических данных большой размерности в системно-когнитивном анализе и интеллектуальной системе «Эйдос-Х++» / Е.В. Луценко, В.Е. Коржаков // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета (Научный журнал КубГАУ) [Электронный ресурс]. – Краснодар: КубГАУ, 2013. – №07(091). С. 164 – 188. – IDA [article ID]: 0911307012. – Режим доступа: http://ej.kubagro.ru/2013/07/pdf/12.pdf, 1,562 у.п.л.

Луценко Е.В. Математическая сущность системной теории информации (СТИ) (Системное обобщение формулы Больцмана-Найквиста-Хартли, синтез семантической теории информации Харкевича и теории информации Шеннона) / Е.В. Луценко // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета (Научный журнал КубГАУ) [Электронный ресурс]. – Краснодар: КубГАУ, 2008. – №08(042). С. 76 – 103. – Шифр Информрегистра: 0420800012\0114, IDA [article ID]: 0420808004. – Режим доступа: http://ej.kubagro.ru/2008/08/pdf/04.pdf, 1,75 у.п.л.

В статье http://ej.kubagro.ru/2008/08/pdf/04.pdf на стр. 10 есть формула (25) для расчета "пси". Проверка простая: если взять диагональную матрицу абсолютных частот, то должно получится ко-во информации равное логарифму по осн.2 от числа классов.
Дима! Я посла тебе расчет моделей в Excel на почту

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 2:58 pm
Petrovich
Eugene Lutsenko писал(а):Получилось: https://www.kaggle.com/c/santander-valu ... lenge/team

Да, теперь мы команда. Жаль, что Димы с нами нет.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 4:45 pm
Eugene Lutsenko
Petrovich писал(а):
Eugene Lutsenko писал(а):Получилось: https://www.kaggle.com/c/santander-valu ... lenge/team

Да, теперь мы команда. Жаль, что Димы с нами нет.

Он есть своими разработками

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 5:02 pm
Eugene Lutsenko
Дмитрий Бандык писал(а):Исправил формирование scv-файлов. Других ошибок пока не смог найти:
https://yadi.sk/d/eE0uTWaO3ZugGa

Идет распознавание. Прошло уже 4 часа. Пишет, что еще полчаса осталось.
Изображение
Что получится - напишу.

Оказалось это было распознавание обучающей выборки. Тестовая выборка примерно в 10 раз больше... Запустил

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 8:03 pm
Eugene Lutsenko
При переходе на 2-ю модель сломался прогноз времени исполнения:
Изображение

На сайте Каггл написано, что еще 8 дней:
https://www.kaggle.com/c/santander-valu ... evaluation

Я сейчас проверил в системе Эйдос вариант обучающей выборки, когда между классами и признаками взаимно-однозначное соответствие. В модели Inf1 при этом получается количество информации в признаке как у Хартли равное i=LogN, где N - число классов. Все работает правильно. Коэффициент "пси" правильный.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 05, 2018 8:13 pm
Eugene Lutsenko
Я не обманывал. Это в Excel-таблице так, а в системе Эйдос натуральные (других в языке нет) и переводятся в двоичные. Но переводятся правильно, я сейчас проверил в самой системе Эйдос на простом численном примере.

Да, я согласен с тем, что на результат распознавания он не влияет. Но все же лучше когда количество информации представлено в привычных единицах. Хотя, конечно, можно умножить результаты на любую константу и получатся результаты в соответствующих единицах.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Вс авг 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