Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2023ВКР750301ИСАКОВ

.pdf
Скачиваний:
26
Добавлен:
04.09.2023
Размер:
3.37 Mб
Скачать

Если же объект попадает внутрь разделяющей полосы, величина зазора

принимает значение между 0 и 1, а само наблюдение объявляется выбросом в классическом понимании работы SVM.

Для объяснения работы алгоритма в случае линейной неразделимости вводится поправка на величину ошибки . Задача, стоящая перед SVM,

обновляется и теперь состоит в том, чтобы найти такую гиперплоскость,

которая одновременно обеспечит наибольшую полосу разделения и наименьшую сумму остатков , см. формулу (2.5).

 

1

‖ ‖2 +

 

 

 

 

 

2

=1

 

 

 

{( − ) ≥ 1

− при 1 ≤ ≤ ,

(2.5)

 

 

 

 

 

 

 

≥ 0 при 1 ≤ ≤

где ‖ ‖ – норма вектора, перпендикулярного к разделяющей плоскости;

– регулируемый параметр модели, задается вручную;

– величина отклонения -ого наблюдения от допустимой области вокруг расчетной функции;

– число экстремальных значений.

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

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

Поиск оптимального уравнения гиперплоскости SVR требует ввести новый настраиваемый гиперпараметр модели – . Значение определяет ширину допустимой области вокруг расчетной функции. Наблюдение,

попавшее в область считается правильно объясненным и вносит свой вклад

61

в уравнение гиперплоскости. Значение, выпадающее из допустимой области

(+ , ), требует быть уточненными или, иногда говорят, оштрафованными пропорционально величине своего отклонения (см. рисунок 17) [55].

Рисунок 17 – Адаптированный для решения задач регрессии алгоритм поиска оптимальной гиперплоскости SVR

Таким образом решение задачи регрессии сводится к тому, чтобы найти такие параметры модели, при которых максимально число наблюдений,

попавших в интервал (+ , ), и при этом минимальна суммарная величина отклонений . Все расчетные формулы SVR аналогичны таковым в SVM.

2.3.7 Ансамблевые методы

Деревья решений представляют собой кластер моделей, принципиально отличающихся от рассмотренных ранее. Так, в отличие от метода опорных векторов они абсолютно нетребовательны по отношению к нормализации,

масштабированию или полноте предоставленных для обучения данных, что выгодно отличает их применительно к нашим данным.

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

62

Всего есть несколько ключевых архетипов, реализующих принципы объединения многих моделей для повышения качества регрессии:

Бэггинг;

Бустинг;

Стэкинг.

Бэггинг представляет собой алгоритм усреднения результатов прогнозирования нескольких независимых моделей, обученных параллельно на выборках или, иначе говоря, семплах, взятых случайным образом из исходного пространства признаков. Случайные леса являются частным, но не единственным, случаем реализации принципов бэггинга с деревом регрессии

вкачестве базового ученика. Еще одним популярным решением,

использованным нами ранее, является применение метода k-NN с небольшим числом ближайших «соседей» для импутации пропущенных значений.

Основной задачей, с которой призван справляться бэггинг, является уменьшение дисперсии прогнозов композиции относительного отдельного алгоритма при сохранении постоянного общего смещения. Кроме того, они в меньшей степени страдают от переобучения и могут эффективно работать с большими наборами данных [57].

Бустинг придерживается прямо противоположных принципов.

Алгоритм берет в качестве слабого ученика модель с небольшой дисперсией и высоким смещением относительно истинной функции зависимости.

Подобные характеристики присущи намеренно недоученным моделям, в

частности, деревьям регрессии со строго ограниченной глубиной. Идея алгоритма заключается в том, чтобы последовательно перестраивать базового ученика, на каждом последующем шаге исследуя данные, на которых предыдущая модель допустила ошибку. Таким образом итоговая композиция будет иметь меньшее смещение и, иногда, дисперсию, чем каждая модель по отдельности [58].

Последним рассматриваемым решением является стекинг. В отличие от предыдущих двух, стекинг не предполагает примитивное агрегирование

63

результатов усреднением или суммированием. Идея стекинга заключается в том, чтобы независимо и параллельно обучить несколько принципиально разных архетипов моделей, например, SVR и k-NN, и затем объединить их результаты с помощью обучения метамодели. Алгоритм не ставит перед собой цели уменьшить отдельно дисперсию или смещение, однако, результаты,

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

переобучить алгоритм крайне сложно. В общем случае деление все равно происходит, однако, процедура упрощена вплоть до деления всего на две части: ту, на которой обучаются базовые модели, и ту, на которой обучается метамодель [59].

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

Существует множество Python библиотек, по-разному решающих поставленные перед ними задачи: XGBoost, LightGBM, CatBoost и т.д. Кроме того, они уже неоднократно и успешно использовались для решения задач регрессии в смежных областях исследования диабета.

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

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

чтобы по обучающему набору данных построить неглубокие деревья,

уточняющие полученный на «нулевом» шаге результат. Таким образом в самом примитивном случае совершив всего два действия мы можем получить первый настоящий прогноз, состоящий из суммы среднего и прогнозируемого отклонения целевой переменной от среднего (см. рисунок 18) [60].

64

Рисунок 18 – Алгоритм бустинга деревьев решении XGBoost

В приведенном выше рисунке нотации X1, X2 и X3 обозначают прогнозируемую ошибку регрессии на промежуточных шагах вычисления.

Получившаяся модель будет сильно переобученной, поэтому необходимо ввести величину, называющуюся шагом обучения – , см.

формулу (2.6).

= ̅ + ∑

,

(2.6)

=1

 

 

где – прогнозируемое значение целевой переменной;

̅ – выборочное среднее целевой переменной в обучающем наборе;

– шаг обучения;

– величина остатков регрессии на -ом шаге работы алгоритма.

Заметим, что в приведенном выше примере, каждое дерево имеет по четыре листа, в то время как фактическое число остатков регрессии, в

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

Второе важное замечание касается непосредственно способа построения деревьев решений. В общем случае каждое новое дерево уточняет ошибку предыдущего, поэтому не обязано в ходе разделения использовать те же признаки и критические значения.

65

2.4Методологическое обеспечение системы

2.4.1Паттерны программирования

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

Рисунок 19 – Структура компонентов MVVM

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

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

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

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

которые впоследствии передаются представлением на уровень View-Model. View-Model содержит в себе весь программный код, необходимый для

удовлетворения ограниченного числа пользовательских запросов. View-Model

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

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

66

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

Последним компонентом MVVM является модель данных. В отличие от двух предыдущих компонентов, модель не осуществляет ярко выраженных операций. Задача модели состоит в том, чтобы описать абстрактную структуру данных и механизмы валидации ее полей. Посредством модели слой

View-Model осуществляет CRUD операции по отношению к базе данных.

Помимо базовой функциональности компонентов, важно понимать особенности их взаимодействия с друг другом. Так представление имеет доступ к связующему звену View-Model, однако не может напрямую влиять на модель данных. Аналогично, модель данных, изолированная от представления, не может знать об изменениях, произошедших на пользовательском уровне.

В SwiftUI паттерн MVVM может быть уточнен и расширен до более нового и современного Viper. В общем случае, Viper не предлагает ничего принципиально нового, он лишь требует, чтобы любые операции в классе

View-Model, непосредственно влияющие на изменения в пользовательском интерфейсе, были выделены на отдельный связующий слой – презентатор.

Важно понимать, что ни один паттерн программирования не влияет не скорость выполнения программного кода. Паттерны применяют с целью:

Повысить читаемость программного кода;

Облегчить долгосрочную поддержку программных модулей проекта;

Отделить написание unit-тестов программной логики от представления;

Распараллелить задачи между программистами, не нарушив целостности проекта.

67

2.4.2 Создание безопасных приложений

Создание безопасных приложений подразумевает следование

следующим принципам:

Использование узкопрофильных библиотек. Так, наиболее

распространенным уязвимым местом проектирования мобильного приложения является обмен чувствительными данными с удаленным сервером посредством протокола передачи гипертекста HTTP. В Swift

нетворкинг осуществляется библиотекой Alamofire [61]. Она предоставляет необходимые средства для того, чтобы установить защищенное методами криптографии TSL соединение с серверным API для обмена данными в текстовом формате JSON.

Использование

утилит автоматического

анализа программного

кода [62]. Этот класс

программ используется

для поиска скрытых

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

Тестирование кода посредством unit-тестов является важной частью повышения производительности и безопасности программного комплекса.

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

Следование принципам построения безопасной архитектуры и дизайна приложения, сформированных профессором Массачусетского Университета Д. Зальцером в 1975 году [63]. Среди них наиболее важных является принцип разделения блоков кода на изолированные самодостаточные единицы.

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

68

2.4.3Постановка эксперимента

Вработе используются сигналы и данные прототипирования пациенток

сГСД, давших свое согласие на участие в нескольких продолжающих друг друга исследованиях ФГБУ НМИЦ им. В. А. Алмазова начиная с 2015 года по настоящее время [64–67]. Для включения пациенток в основную исследовательскую группу, они должны были соответствовать нескольким критериям: естественный путь оплодотворения, одноплодная беременность,

срок беременности с 24 по 32 неделю и установленный гестационный диабет в соответствии с рекомендациями Российской ассоциации эндокринологов и акушеров-гинекологов. Контрольная группа оригинального исследования также включала данные здоровых беременных женщин, соответствующих аналогичным критерия отбора. Уточним, что пациентки с сахарным диабетом первого или второго типа, а также лица, использовавшие лекарственные препараты, прямо и косвенно, влияющие на метаболизм углеводов не включались в исследование. Кроме того, внимание уделялось наличию других хронических заболеваний роженицы или выявленных патологий развития плода по результатам УЗИ (ультразвуковое исследование), а также фактам употребления алкоголя и наркотическим препаратам. Перед непосредственным влечением в исследование пациенток просили сдать клинические и расширенные узкопрофильные анализы крови, мочи, кала, а

также пройти характеризующее образ жизни анкетирование.

В качестве эксперимента пациенток просили вести раннюю бета-версию электронного дневника самонаблюдения, а также принципиально отличающееся приложение, разработанное в процессе выполнения текущей работы. На текущий момент все версии программного обеспечения зарегистрированы нами в государственном реестре программного обеспечения [68–70].

Женщин просили регистрировать результаты измерения УСК и кетонов в мочевине, вести учет приемов пищи и эпизодов физической активности. В

случае, если пациентке становилось хуже в процессе исследования, ей

69

назначали инсулинотерапию и просили дополнительно указывать в дневнике размер дозы, тип и время введения инсулина. Раз в месяц пациентку приглашали на очное консультирование по вопросам, связанным с беременностью и протеканием ГСД. Если пациентка демонстрировала ответственное поведение, ей назначали недельное мониторирование уровня глюкозы, посредством которого исследовались характеристики гликемии,

такие как УСК и величину площади под кривой гликемии через 60 и 120 минут после приема пищи, а также максимальный УСК. Сигналы снимались аппаратами Medtronic и загружались на сервер CareLink.

База данных продуктов питания с гликемическими индексами собиралась на основе данных Института Питания Российской Академии Медицинский Наук, Министерства Сельского Хозяйства США и результатов исследования, проведенного Университетом Сиднея [71].

2.5 Метрологическое обеспечение системы

Исходя из того, что целью работы является разработка программного комплекса, использующего методы машинного обучения для прогнозирования реакции ППГО, сосредоточим свое внимание в этом разделе на метриках оценки качества регрессии.

Одной из первых интуитивно понятных метрик является средняя абсолютная ошибка – MAE (Mean Absolute Error), см. формулу (2.7).

=

1

|( ) − | ,

(2.7)

 

 

 

=1

 

 

 

 

 

 

 

 

где ( ) – прогнозируемое моделью значение;

– фактически наблюдаемое значение;

– число наблюдений в выборке.

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

70