Диссертация (1137055), страница 15
Текст из файла (страница 15)
По нашему мнению, представляет интерес возможностьиспользования и дальнейшего развития подобной методики для оценки научноговкладавреальнойдействительности.Конечно,приэтомнеобходимызначительные усилия для разработки и поддержания таксономии предметнойобласти, а также по созданию структуры в сообществе научных работников ипредставителей контролирующих организаций для объективизации отображениянаучных результатов на таксономию.96Глава 4. Комплекс программ, реализующий методы формированиястратификации, и полигон для их экспериментального сравненияВ этой главе описывается библиотека прикладных программ, реализующая:- Алгоритмы стратификации.- Схему генерации синтетических данных.- Скрипты для проведения вычислительных экспериментов по верификацииалгоритма ЛинСтрат и сравнению его с другими алгоритмами.Программы написаны в среде Matlab и организованы в виде набораинструментов (toolbox), по аналогии со встроенными пакетами для научных иматематических вычислений, такими как, например, Optimization Toolbox [92],Statistic Toolbox [93] и другие.
Программный код и используемые данныедоступнывоткрытомдоступенаgithubпоссылкеhttps://github.com/morlov/stratification. Далее в главе приводится структурабиблиотеки, описание и особенности реализации отдельных ее компонент.4.1. Программная реализация алгоритмов решения задачи линейнойстратификацииДляэкспериментальногосравненияметодовстратификациибылиреализованы известные алгоритмы описанные в главе 1 и разрабатываемые вдиссертации алгоритмы для линейной стратификации. В таблице 4.1 приведенперечень функций библиотеки и соответствующих алгоритмов.Таблица 4.1. Список методов стратификации и функций библиотеки ихимплементирующихМетод стратификацииРазделАббревиатураФункцияЛинСтрат с использованием2.1.2LSQlinStratQPквадратичного программированияЛинСтрат на основе эволюционной2.1.1LSlinStratEvolминимизацииСтратификация с помощью1.1.3BCbordaStratправила Борда (Borda count)97Метод стратификацииМетод ABC- классификации наоснове линейной оптимизациивесов (Linear weights optimization)Ранжирование на основесобственного вектора (Authorityranking)Стратификация объединениемграниц Парето (Paretostrat)РазделАббревиатураФункция1.1.6LWOlinprogStrat1.1.1ARauthorityStrat1.1.2PSparetoStratФункция linStartQP реализует алгоритм линейной стратификации на основерешениязадачиквадратичногопрограммирования.
Длярешениязадачиквадратичного программирования используется функция quadprog библиотекиOptimizationToolbox[94].ФункцияlinStartEvolреализуеталгоритмстратификации на основе эволюции популяции решений оптимизационнойзадачи. Непосредственно алгоритм эволюционной минимизации реализован ввспомогательной функции evolmin. Стратификация на основе правила Бордареализована в функции bordaStrat, который использует вспомогательнуюфункциюbordrankдлявычислениярангаБорда.ФункцияlinprogStratимплементирует подход на основе линейной оптимизации весов, для решениялинейной программы использует функция linprog из библиотеки OptimizationToolbox [60].
Для стратификации на основе собственного вектора реализованафункцияauthorityStrat.используютФункциивспомогательнуюbordaStrat,функциюlinprogStratbest_stratifyидляauthorityStratполучениястратификации после вычисления рангов объектов и, реализующую по сутиодномерный к-средних на полученных значениях рангов. И последняя функцияparetoStrat реализует стратификацию объединением границ Парето.На входе библиотечных функций, реализующих алгоритмы стратификацииподаются следующие параметры: data – многомерный массив размером NxM, гдеN - число объектов, M – число признаков, nstrat – желаемое число страт, nrep число репликаций алгоритма для linsStratQP и linStratEvol, а функций bordaStrat,linprogStrat, authorityStrat – число репликаций одномерного к-средних наагрегированном критерии.
На выходе библиотечных функций параметры: w – веса98критериев, index - индексы страты для каждого объекта, c – центры страт. Гдетипы: w – многомерный массив 1xM, index – многомерный массив размером Nx1,заметим, что для удобства вычислений номера страты в индексе идут поубыванию, таким образом, что в тексте диссертации называемая 1-й стратой будетиметь значение K в массиве index, и наоборот страта с номером K – будет иметьзначение 1 в этом массиве, где K – число страт, c – многомерный массив 1xK.
Втаблице 4.2 приведены алгоритмы и комбинации входных и выходныхпараметров.Таблица 4.2. Список библиотечных функция их входных и выходных аргументовБиблиотечная функцияВходныеВыходные парметрыпарметры- data-wlinStratQP- nstrat- index- nrep-c- data-wlinStratEvol- nstrat- index- nrep-c- data-cbordaStrat- nstrat- index- nrep- data-wlinprogStrat- nstrat- index- nrep-c- data-wauthorityStrat- nstrat- index- nrep-c- dataparetoStrat- index- nstratВ качестве примера использования библиотечных функций рассмотримстратификацию данных по городам из таблицы 1.1 главы 1.>> students_cities = load('./datasets/students_cities.mat');>> data = students_cities.data99>> nstrat = 3;>> nrep = 30;>> [w, index, c] = linStratQP(data, nstrat, nrep);Получим на выходе:w = 0.2726 0.7274c = 64.4130 79.0031 87.2791index = 22113222134.2.
Программы для генерирования синтетических стратифицированныхданныхДля проведения вычислительных экспериментов на синтетических данныхиспользуется генератор, схема которого описана в 2.2.1. Генератор реализован вфункции stratgen. Схема генерации данных показана на рисунке 4.1. Для записивыражений в блоках вызова внешней процедуры используется синтаксис Matlab.Функция multinom реализует генератор номера страты, и осуществляет выбор измультиномиального распределения. Вероятность выбрать страту определяетсяпараметром интенсивности страты.100Рисунок 4.1.
Блок-схема генератора синтетических данных.Рассмотрим пример кода, выполняющего запуск функции генерацииданных. В этом примере из консоли Matlab задаются параметры генерации,запускается генератор и, результат визуализируется с помощью вспомогательнойфункции disp_strata, выполняющей визуализацию двумерных страт:>> w = [0.5 0.5];101>> c = [1 2 3];>> theta = [0.2 0.3 0.5];>> sigma = 0.01;>> phi = 0.1;>> nsample = 6;>> [data index] = stratgen(w, c, theta, sigma, phi, nsample);>> disp_strata(data, index, 'Пример')Результат выполнения представлен на рисунке 4.2.6543210-1-0.500.511.522.533.5Рисунок 4.2. Визуализация функцией disp_strata данных сгенерированныхstratgen.4.3. Комплекс программ для проведения вычислительных экспериментов посравнению методов стратификации и ранжированияСкрипт test_synth.m выполняет эксперименты на синтетических данныхописанных в главе 2.
Скрипт состоит из следующих шагов:1021.Установка параметров работы алгоритмов и генерации данных. Наэтом шаге задаются параметры описанные таблицах 2.3-2.6 главы 2. Для удобствав таблице 4.3 приведены соответствия обозначений параметров алгоритмов,генерации данных из главы 2 и переменных в скрипте. Помимо обозначенныхпеременных устанавливается число повторений эксперимента ntrial.2.Установка расписания эксперимента т.
е. какие из экспериментоввыполнять.3.Тест 1. Валидация алгоритма на синтетических данных со случайносгенерированными весами (раздел 2.2.2).4.Тест 2. Варьирование толщины страт и весов (раздел 2.2.7).5.Тест 3. Варьирование интенсивности страт и весов (раздел 2.2.5).6.Тест 4. Варьирование размаха страт и весов (раздел 2.2.6).7.Тест 5. Варьирование размерности данных (раздел 2.2.3).8.Тест 6. Варьирование размера выборки (2.
2. 4).На шагах 4 – 6 используется вспомогательная функция run_test, которая позаданным входным параметрам генерации проводит серию вычислений и выводитрезультат на консоль. Блок схема этой функции приведена на рисунке 4.3.Таблица 4.3. Соответствие обозначений параметров алгоритмов и генерацииданных из главы 2 и переменных в скриптеОбозначения в главе 2Переменная в скрипте test_synth.mЧисло объектов, NnsampleЧисло критериев, MDimЧисло страт, KnstratЦентры страт, cCИнтенсивности страт, θThetaВеса критериев, wWТолщина страт, σsigmaРазмах страт, φPhi103Рисунок 4.3.