[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
Страница 21 из 35

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 9:04 am
Eugene Lutsenko
Молодец. Когда сделают видеокарты на миллиард мегапикселей этот вопрос снимется сам собой

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 9:33 am
Eugene Lutsenko
Можно поставить птичку: показывать-не показывать, а по умолчанию показывать. нечто подобное было в DOS-версии системы Эйдос. Там в виде 2d картинки отображался процесс расчета моделей и распознавания, см. рисунок 4 здесь http://lc.kubagro.ru/aidos/aidos14_L3/1.htm

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 10:50 am
Eugene Lutsenko
Просто файлы результатов для Каггла вида results_inf5i.csv, results_inf5k.csv получаешь из соответствующих файлов результатов распознавания Rsp_inf5i.dbf, Rsp_inf5k.dbf и все

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 11:01 am
Eugene Lutsenko
Новая программа синтеза вроде на вид работает и завершается нормально, но дает во всех матрицах все нули. В конце в сообщении про OK можно убрать. И так ясно, что OK.

Модуль распознавания на вид работает нормально, но в конце выдает ошибку:
Изображение

В тех статьях приведены формулы для обоих инт.критериев.
Могу сказать где это в исходном тексте.

На каком примере ты проверяешь?
Может быть дать ссылку на еще один?

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 11:09 am
Eugene Lutsenko
Может быть это из-за того, что разные видеокарты?
Вот еще один: https://yadi.sk/d/HMm_RrPt3Zpxd6
Чтобы работало надо разместить так: c:\1\Aidos-X

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 11:22 am
Eugene Lutsenko
После синтеза моделей во всех матрицах все нули. Это заняло около 3 минут.

Модуль распознавания в конце дал ту же ошибку. Процесс шел минут 5.

Мне больше понравился дизайн в модуле распознавания, где видно как и в какой модели идет распознавание и общая стадия процесса.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 11:48 am
Eugene Lutsenko
Теперь все числа в матрицах моделей на месте. Процесс создания всех моделей занял 27 секунд.

Нечаянно запустил распознавание до окончания записи матриц. Получился конфликт обращения к GPU.

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

Лучше чтобы цвет прогресс-бар модели, который ползет вверху, совпадал с цветом ее фрагмента в нижнем-прогресс-бар. Так будет понятнее.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 12:06 pm
Eugene Lutsenko
у меня тоже появилась эта мысль (на счет синтеза модели на ЦПУ), тем более, что на GPU у меня вообще не работает и тоже дольше.

Но результаты надо получать из соответствующих файлов.

Если теперь ты сделаешь форму по достоверности моделей (с метрикой Каггла), то можно будет получить средневзвешенный прогноз путем голосования прогнозов в разных моделях с разными инт.критериями с весами, равными достоверности моделей. И это уже посылать на Каггл.

Мы так делали с Александром Петровичем когда-то давно:
http://lc.kubagro.ru/aidos/aidos12_TL2/index.htm
http://lc.kubagro.ru/aidos/aidos12_TL2/2.htm
2.6. АЛГОРИТМ ГОЛОСОВАНИЯ МОДЕЛЕЙ (С ВЫБОРОМ ОДНОГО ИЗ 5-И АЛГОРИТМОВ)

Распознавание прошло правильно и в конце дало ту же ошибку:
Изображение

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 12:34 pm
Eugene Lutsenko
Может быть с выводом сообщения.

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

И потом нужно будет определить достоверность моделей (при распознавании обучающей выборки) и вывести в dbf-файле. А остальное я посчитаю в Excel (собственно уже сделал) или сделаю небольшую программку. Да и достоверность моделей по метрике Каггла тоже сам определю.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 1:36 pm
Eugene Lutsenko
В исходном тексте: http://lc.kubagro.ru/__AIDOS-X.txt
ищем: N F4_1_2. Находим функцию, которая осуществляет распознавание: FUNCTION F4_1_2(mNumModel, Dialog, Regim)
Там основной фрагмент, который считает сходство:
Код: Выделить всё
      // Сброс массива-локатора кодов признаков распознаваемого объекта
      AFILL(Ar_Lok,0)

      M_SumLok = 0                 // Сумма 1 и 0 массива-локатора

      SELECT Rso_Kpr;SET ORDER TO 1;T=DBSEEK(STR(M_KodObj,19))
      IF T
         ******** Цикл по признакам одного объекта
         DO WHILE M_KodObj = Kod_obj .AND. .NOT. EOF()
            FOR j=2 TO 8
                M_Kpr = FIELDGET(j)
                IF 0 < M_Kpr .AND. M_Kpr <= N_Gos   // Проверка на корректность кода признака
                   // Если признак указан у объкта несколько раз, значит он у него и встречается несколько раз,
                   // например буква "о" в слове "молоко" встречатся 3 раза
*                  DC_DebugQout( M_Kpr )
                   Ar_Lok[M_Kpr] = Ar_Lok[M_Kpr] + 1
                   ++M_SumLok           // Сумма 1 и 0 массива-локатора
                ENDIF
            NEXT
            DBSKIP(1)
         ENDDO
      ENDIF

      ******* Массив кодов классов, к которым ФАКТИЧЕСКИ относится данный объект
      PRIVATE Ar_Kcl := {}
      SELECT Rso_Kcl;SET ORDER TO 1;T=DBSEEK(STR(M_KodObj,19))
      IF T
         ******** Цикл по классам одного объекта
         DO WHILE M_KodObj = Kod_obj .AND. .NOT. EOF()
            FOR j=2 TO 5
                M_Kcl = FIELDGET(j)
                IF 0 < M_Kcl .AND. M_Kcl <= N_Cls   // Проверка на корректность кода класса
                   AADD(Ar_Kcl, M_Kcl)
                ENDIF
            NEXT
            DBSKIP(1)
         ENDDO
      ENDIF

*     // Проверка правильности выборки кодов классов и признаков
*     Mess = L("Код распознаваемого объекта: "+ALLTRIM(STR(M_KodObj,19))+". Коды классов: "
*     FOR j=1 TO LEN(Ar_Kcl)
*          Mess = Mess+ALLTRIM(STR(Ar_Kcl[j],19))+" "
*     NEXT
*     Mess = Mess + ". Коды признаков: "
*     FOR j=1 TO LEN(Ar_Lok)
*         IF Ar_Lok[j] > 0
*            Mess = Mess+ALLTRIM(STR(j,19))+" "
*         ENDIF
*     NEXT
*     LB_Warning(Mess)

      // Использование полученных массивов собственно для распознавания

      ***** Расчет среднего и дисперсии массива-локатора
      M_SrObj = M_SumLok/N_Gos                // Среднее   1 и 0 массива-локатора
      M_DiObj = 0                             // Дисперсия 1 и 0 массива-локатора
      FOR i=1 TO N_Gos
          M_DiObj = M_DiObj + ( M_SrObj - Ar_Lok[i]) ^ 2
      NEXT
      M_DiObj = SQRT( M_DiObj / (N_Gos - 1))  // Дорасчет дисперсии 1 и 0 массива-локатора

*     DC_DebugQout( { Alias(), IndexOrd() } )

      IF M_DiObj > 0                          // Объект описан

         aKod_obj := {}
         aKod_cls := {}
         aKorr    := {}
         aSum_inf := {}
         aDate    := {}
         aTime    := {}
         aFakt    := {}

         FOR j = 1 TO N_Cls                   // Цикл по классам распознавания в Inf

             IF aDiCls[j] > 0                 // Сформирован ли класс распознавания ?

                ****** Расчет нормированной к 100% корреляции массивов
                ****** локатора источника и информативностей признаков класса
                ****** (ИНТЕГРАЛЬНЫЙ КРИТЕРИЙ СХОДСТВА) *********************
                ****** и суммы информативностей имеющихся у объекта признаков

                M_SumInf = 0                  // Сумма информативностей признаков, имеющихся в описании объекта
                M_Kov    = 0                  // Ковариация между образом объекта и классом
                FOR i=1 TO N_Gos

                    Iij = VAL(LC_FieldGet(mModelName, nHandle[M_CurrInf], i, 2+j))        // Iij из БД текущей модели
                    M_Kov    = M_Kov    + (Ar_Lok[i] - M_SrObj) * (Iij - aSrCls[j])
                    M_SumInf = M_SumInf + Ar_Lok[i] * Iij

                NEXT
                M_Kov  = 100 * M_Kov / N_Gos
                M_Korr = M_Kov / (M_DiObj * aDiCls[j] )     // Корреляция между образом объекта и классом
                AADD(aKod_obj, M_KodObj)
                AADD(aKod_cls, j       )
                AADD(aKorr   , M_Korr  )
                AADD(aSum_inf, M_SumInf)
                AADD(aDate   , DTOC(DATE()))
                AADD(aTime   , TIME())

                *** Если распознаваемый объект ФАКТИЧЕСКИ относится к классу
                *** с кодом j, то поставить символ "√" в поле БД Rasp
                *** иначе поставить там пробел
                IF ASCAN(Ar_Kcl, j) > 0
                   AADD(aFakt, "√")
                ELSE
                   AADD(aFakt, " ")
                ENDIF
             ENDIF
         NEXT

         ****** Записать результаты распознавания в БД Rasp
         SELECT Rasp                        // Если сделать массивы для полей БД Rasp
         FOR j=1 TO LEN(aKod_obj)
             APPEND BLANK                   // и записывать результаты распознавания вне цикла по Inf, то все очень ускорится ###################
             REPLACE Kod_obj  WITH aKod_obj[j]
             REPLACE Kod_cls  WITH aKod_cls[j]
*            REPLACE Kod_ClSc WITH aKodClSc[aKod_cls[j]]
             REPLACE Korr     WITH aKorr[j]
             REPLACE Sum_inf  WITH aSum_inf[j]
             REPLACE Date     WITH aDate[j]
             REPLACE Time     WITH aTime[j]
             REPLACE fakt     WITH aFakt[j]
         NEXT

      ENDIF

      IF Regim<>"3_5";lOk = Time_Progress (++Time_Progress, Wsego, oProgress, lOk );ENDIF

      SELECT Rso_zag
      DBSKIP(1)

   ENDDO
   aSay[ 8]:SetCaption(aSay[ 8]:caption+L(" - Готово "))
   // Конец цикла по объектам распознаваемой выборки и их распознавание =================================


А в нем есть несколько строк, в которых используются два интегральных критерия:
Код: Выделить всё
                ****** Расчет нормированной к 100% корреляции массивов
                ****** локатора источника и информативностей признаков класса
                ****** (ИНТЕГРАЛЬНЫЙ КРИТЕРИЙ СХОДСТВА) *********************
                ****** и суммы информативностей имеющихся у объекта признаков

                M_SumInf = 0                  // Сумма информативностей признаков, имеющихся в описании объекта
                M_Kov    = 0                  // Ковариация между образом объекта и классом
                FOR i=1 TO N_Gos

                    Iij = VAL(LC_FieldGet(mModelName, nHandle[M_CurrInf], i, 2+j))        // Iij из БД текущей модели
                    M_Kov    = M_Kov    + (Ar_Lok[i] - M_SrObj) * (Iij - aSrCls[j])
                    M_SumInf = M_SumInf + Ar_Lok[i] * Iij

                NEXT
                M_Kov  = 100 * M_Kov / N_Gos
                M_Korr = M_Kov / (M_DiObj * aDiCls[j] )     // Корреляция между образом объекта и классом