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

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] )     // Корреляция между образом объекта и классом

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 1:44 pm
Eugene Lutsenko
Во втором фрагменте весь собственно расчет. Одновременно в одном цикле считается и сумма информации по имеющимся признакам распознаваемого объекта, и ведется подготовка для расчета ковариации между образом объекта (массивом-локатором) и обобщенным образом класса. А потом после выхода проводится дорасчет ковариации до корреляции путем деления полученной суммы на ср.кв.отклонения массива локатора и образа класса.

В статье: http://ej.kubagro.ru/2018/01/pdf/01.pdf формулы расчета интегральных критериев сходства на страницах 13 (сумма знаний) и 14 (резонанс знаний).

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 2:04 pm
Eugene Lutsenko
Это суммарное количество градаций всех описательных шкал вместе взятых, т.е. по сути число строк в файле Attributes.dbf и в матрицах моделей, не считая итоговые строки

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 3:14 pm
Eugene Lutsenko
Каждый распознаваемый объект сравнивается по очереди со всеми классами (это можно распараллелить). Сравнивается он с помощью двух интегральных критериев в каждой из 10 моделей (тоже можно распараллелить). Распознаваемый объект описывается массивом-локатором, в котором 1 на позиции признака (если признак встречается у объекта n раз, то вместо 1 ставится n), который есть у объекта и 0 на позиции, если признака нет. Класс описан коэффициентами, которые я называю "частные критерии". В статье: http://ej.kubagro.ru/2018/01/pdf/01.pdf на странице 10 приведена таблица с формулами для вычисления этих частных критериев на основе матрицы абсолютных частот. Само сравнение объекта с классом осуществляется двумя способами, т.е. с помощью двух инт.критериев:
- путем вычисления суммы частных критериев по тем признакам, которые есть у объекта;
- путем вычисления корреляции между массивом-локатором, описывающим объект, и профилем класса (соответствующая классу колонка в матрице модели).
Поэтому внешний цикл по объектам распознаваемой выборки, а внутренний по классам.

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

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 4:18 pm
Eugene Lutsenko
Матрица информативностей - это лишь одна из моделей. Есть 3 статистических модели: Abs, Prc1, Prc2 и 7 системно-когнитивных моделей: Inf1,..., Inf7. Inf1 - это и есть матрица информативностей. Модели содержат частные критерии, которые все рассчитываются на основе матрицы абсолютных частот по формулам, приведенным в таблице 10 той статьи. Принцип работы со всеми моделями при распознавании одинаковый. Просто инт.критерии рассчитываются с разными частными критериями в разных моделях. Ты, как я правильно понял, использовал только один интегральный критерий, и возможно, только одну модель - матрицу информативностей. Но надо все.

PS
Auge_Ohr ответил тебе на форуме Роджера: http://bb.donnay-software.com/donnay/vi ... f=2&t=2436

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 4:26 pm
Eugene Lutsenko
Дмитрий Бандык писал(а):Это мне уже лет 15 как понятно. По этой части вопросов нет.

Поэтому и надо заняться режимом 2.3.2.2, а потом и всеми остальными...) Их много...

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 5:14 pm
Eugene Lutsenko
Эти инт.критерии описаны в статье: http://ej.kubagro.ru/2018/01/pdf/01.pdf на страницах 13 и 14

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 7:01 pm
Eugene Lutsenko
Дмитрий Бандык писал(а):
Поэтому и надо заняться режимом 2.3.2.2, а потом и всеми остальными...)

Насчет режима 2.3.2.2 у меня есть свое мнение. Вы попытались сделать универсальный способ перевода исходных данных во внутреннюю систему шкал и градаций. Но я этот перевод вижу несколько иначе - мне кажется целесообразней сделать этот перевод более свободным - то есть вообще особо не формализовать его а просто делать специализированную функцию перевода для каждой конкретной задачи. Хотя конечно для некоторых классов задач можно сделать и некоторые довольно универсальные функции - вот ваш режим 2.3.2.2 одна из таких возможных. Только мне видится более целесообразным делать более короткие и более конкретные функции под разные конкретные случаи - это проще чем пытаться сделать некую сложную универсальную функцию. Например это может быть функция напрямую преобразующая данные с датчика в поток обучающей выборки неограниченного размера. И вообще специализированные функции могут не иметь очень многих ограничений из тех которые накладывает некий выбранный раз и навсегда универсальный подход.

Это касается только конкретно режима 2.3.2.2. В одних случаях универсальность целесообразна а в других нет. Я думаю это связано с существованием или несуществованием в реальности неких реальных объектов высокого уровня которым соответствуют наши универсальные решения. Если такой объект существует в реальности то и для описания его оправдано использование универсальной формулы высокого уровня абстракции. Если же в реальности такого объекта не существует то попытка придумать его искусственно будет непродуктивной.

Но ваш режим 2.3.2.2 повторим. Как частный случай. А потом скорей всего будем расширять многообразием других частных функций.

Режим 2.3.2.2 это лишь один из программных интерфейсов с внешними данными (API) входящих в подсистему 2.3.2, включающую еще программные интерфейсы с текстами, транспонированными таблицами, графическими файлами (один из которых разработал ты (2.3.2.4), а другие я) и т.д.
Изображение
'2.3.2. Программные интерфейсы с внешними базами данных' 'Автоматизированная формализация предметной области'

'2.3.2.1. Импорт данных из текстовых файлов ' F2_3_2_1() 'Универсальный программный интерфейс ввода данных из TXT, DOC и Internet (HTML) файлов неограниченного объема. Атрибуция текстов, АСК-анализ мемов'

'2.3.2.2. Универсальный программный интерфейс импорта данных в систему' F2_3_2_2("") 'Режим представляет собой УНИВЕРСАЛЬНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС ФОРМАЛИЗАЦИИ ПРЕДМЕТНОЙ ОБЛАСТИ И ИМПОРТА ДАННЫХ В СИСТЕМУ "ЭЙДОС-Х". Данный программный интерфейс обеспечивает автоматическое формирование классификационных и описательных шкал и градаций и обучающей выборки на основе XLS, XLSX или DBF-файла с исходными данными стандарта, описанного в Help режима. Кроме того он обеспечивает автоматический ввод распознаваемой выборки из внешней базы данных. В этом режиме может быть до 1000000 объектов обучающей выборки до 1500 шкал.'

'2.3.2.3. Импорт данных из транспонированных внешних баз данных ' F2_3_2_3() 'Режим представляет собой ПРОГРАММНЫЙ ИНТЕРФЕЙС ФОРМАЛИЗАЦИИ ПРЕДМЕТНОЙ ОБЛАСТИ И ИМПОРТА ДАННЫХ В СИСТЕМУ "ЭЙДОС-Х". Данный программный интерфейс обеспечивает автоматическое формирование классификационных и описательных шкал и градаций и обучающей выборки на основе XLS, XLSX или DBF-файла с исходными данными стандарта, описанного в Help режима стандарта, представляющего собой ТРАНСПОНИРОВАННЫЙ файл стандарта режима 2.3.2.2. Кроме того он обеспечивает автоматический ввод распознаваемой выборки из внешней базы данных. В этом режиме может быть до 1000000 шкал и до 1500 объектов обучающей выборки.'

'2.3.2.4. Оцифровка изображений по внешним контурам ' F2324ok() 'Данный режим обеспечивает оцифровку изображений по внешним контурам, т.е. кодирование и ввод в систему "Эйдос" изображений и формирование файла исходных данных "Inp_data" в стандарте режима 2.3.2.2 в котором каждое изображение представлено строкой'

'2.3.2.5. Оцифровка изображений по всем пикселям и спектру' F2_3_2_5() 'Данный режим обеспечивает оцифровку изображений по всем пикселям и спектру, т.е. кодирование и ввод в систему "Эйдос" изображений и формирование файла исходных данных "Inp_data" в стандарте режима 2.3.2.3 в котором каждое изображение представлено столбцом'

'2.3.2.6. Импорт данных из DOS-TXT-рядов чисел (цифр) и слов (букв) ' F2_3_2_6() 'Данный режим обеспечивает импорт данных из DOS-TXT-рядов чисел (цифр) и слов (букв), а также генерацию рядов для расчета асимптотического информационного критерия качества шума - критерия степени выраженности закономерностей в модели'

'2.3.2.7. Транспонирование файлов исходных данных ' F2_3_2_7() 'Данный режим обеспечивает транспонирование базы данных Inp_data.xls и ее запись в виде файла Out_transp.xls'

'2.3.2.8. Объединение нескольких файлов исходных данных в один ' F2_3_2_8() 'Данный режим обеспечивает объединение нескольких одинаковых по структуре баз данных с именами вида: "Input####.xls", где: "####" - номер файла вида: 0001,0002,...,9999, в один файл с именем: "Add_data.xls"'

'2.3.2.9. Разбиение TXT-файла на файлы-абзацы"' F5_11() 'Данный режим обеспечивает: обнаружение в папке: ../AID_DATA/INP_DATA/ TXT-файлов, загрузку этих файлов, нахождение в них абзацев, запись этих абзацев в виде TXT-файлов с именами вида: "######, <ИМЯ TXT-ФАЙЛА>" из сквозного номера абзаца ###### и имени исходного TXT-файла'

'5.3.2.10.Чемпионат RAIF-Challenge 2017-API-bank' F2_3_2_10() 'Создание БД Inp_data.dbf из файлов: t1.xlsx, t2.xlsx, t3.xlsx, t4.xlsx'

'2.3.2.11.Чемпионат RAIF-Challenge 2017-API-retail' F2_3_2_11() 'Создание БД Inp_data.dbf и файла: Inp_name.txt соответственно из файлов:jet_raif_challenge.csv и description.csv'

Вот, например, статья, про API спектров графических объектов:

Луценко Е.В. Автоматизированный системно-когнитивный спектральный анализ конкретных и обобщенных изображений в системе "Эйдос" (применение теории информации и когнитивных технологий в спектральном анализе) / Е.В. Луценко // Политематический сетевой электронный научный журнал Кубанского государственного аграрного университета (Научный журнал КубГАУ) [Электронный ресурс]. – Краснодар: КубГАУ, 2017. – №04(128). С. 1 – 64. – IDA [article ID]: 1281704001. – Режим доступа: http://ej.kubagro.ru/2017/04/pdf/01.pdf, 4 у.п.л.

Так что API 2.3.2.2 один из многих, наиболее удобный в тех случаях, когда объекты описываются строками таблицы, а классификационные и описательные шкалы колонками. При этом в ячейках таблицы могут быть числа и тексты. Тексты могут рассматриваться целиком, по словам и по символам. Думал еще сделать по предложениям. Но для этого удобнее интерфейс 2.3.2.1.

Re: Santander Value Prediction Challenge

СообщениеДобавлено: Чт авг 02, 2018 9:23 pm
Eugene Lutsenko
Александр Петрович!

Верно ли, что модели различных предметных областей, формируемые в системе Эйдос, можно считать тензорами 2-го ранга. Эти модели формируются путем обобщения (новая операция тензорного анализа) на основе тензоров 1-го ранга, которые являются описаниями объектов. Операция распознавания является операцией перемножения тензора 2-го ранга модели с тензором 1-го ранга, описывающим распознаваемый объект. Можно все это описать на языке тензорного анализа? Можно ввести понятие информационного тензора (и других: prc#, inf#) у которого координаты рассчитываются как частные критерии на основе тензора абсолютных частот. Можно ли развить эти мысли сблизив математику системы Эйдос и ОТО? И т.д....