Магистр.диссертация (1194675), страница 8
Текст из файла (страница 8)
return 0;
}
В программе реализован таймер, чтобы знать, в какие моменты времени совершались те или иные действия пользователя. За это отвечают следующие строки кода:
DWORD WINAPI CursorPos(CONST LPVOID lpParam) {
// setlocale(LC_ALL, "Russian_Russia.1251");
POINT c;
//time_t t;
struct tm * ptm;
int i = 1, j;
int tacts;
// float sec, min, hour;
int sec, min, hour;
ofstream f("1.txt",ios_base::ate);
В результате работы программы получаем следующий текстовый файл (рисунок 3.1). Первый столбец – номер шага. Во втором столбце отображаются координаты курсора x и y. Также выводится информация о часах, минутах, секундах. Последние три столбца содержат данные о нажатии левой кнопки мыши, правой кнопки мыши, кнопок клавиатуры, соответственно. Данные представлены именно таким образом для дальнейшей загрузки и работы с ними в системе машинного обучения Microsoft Azure.
Рисунок 3.1 – Текстовый файл, полученный
в результате работы программы
Рисунок 3.2 – Данные, загруженные в Microsoft Azure Machine Learning Studio
3.3 Обработка данных, полученных в результате использования программы для отслеживания и регистрации действий пользователя
3.3.1 Выбор алгоритмов машинного обучения Microsoft Azure
Чтобы при разработке решения прогнозной аналитики и обучении работе с таким решением использовать в студии машинного обучения собственные данные, можно выполнить следующие действия:
– заранее отправить данные из локального файла на жестком диске, чтобы создать модуль набора данных в рабочей области;
– получить доступ к данным из одного из нескольких источников данных в Интернете во время запуска эксперимента с помощью модуля Импорт данных;
– использовать данные из другого эксперимента машинного обучения Azure, сохраненные в виде набора данных;
– использовать данные из локальной базы данных SQL Server.
Подготовка данных для использования в студии машинного обучения Azure.
Студия машинного обучения Microsoft Azure предназначена для работы с прямоугольными массивами или таблицами данных, такими как текстовые данные с разделителями или структурированные данные из базы данных, хотя в некоторых случаях могут быть использованы данные из непрямоугольных массивов.
Лучше, если данные относительно очищены. То есть, перед передачей данных в эксперимент необходимо позаботиться о трудностях, например, строках без кавычек.
Тем не менее в студии машинного обучения Microsoft Azure доступны модули, позволяющие выполнить некоторую обработку данных в рамках вашего эксперимента. В зависимости от алгоритмов машинного обучения, которые вы будете использовать, необходимо решить, как будут обрабатываться структурные трудности в данных, например, отсутствующие значения и разреженные данные, и существуют ли модули, которые могут здесь помочь. В разделе «Преобразование данных» палитры модулей найдите модули, которые выполняют такие функции.
В любой точке вашего эксперимента можно просмотреть или скачать данные, созданные модулем, щелкнув правой кнопкой мыши порт вывода. В зависимости от модуля могут быть доступны разные варианты скачивания или вы сможете просмотреть данные в веб-браузере в Студии машинного обучения.
Поддерживаемые форматы и типы данных
В свой эксперимент можно импортировать значительное количество типов данных, в зависимости от того, какая система используется для импорта данных и каков источник этих данных:
– обычный текст (TXT);
– текст с разделителями-запятыми с заголовком (CSV) или без заголовка (NH.CSV);
– текст с разделителями-табуляциями с заголовком (TSV) или без заголовка (NH.TSV);
– файл Excel;
– таблица Azure;
– таблица Hive;
– таблицы базы данных SQL;
– значения OData;
– данные SVMLight (SVMLIGHT);
– данные в формате ARFF (подробнее о формате см. в определении ARFF);
– ZIP-файл (ZIP);
– файл объекта или рабочей области R (RData).
При импорте данных в содержащем метаданные формате (например, ARFF) Студия машинного обучения Microsoft Azure использует эти метаданные для определения заголовка и типа данных каждого столбца.
Разновидности машинного обучения
Контролируемые алгоритмы обучения выполняют прогнозирование на основе набора примеров. Например, стоимость акций в прошлом позволяет предположить стоимость акций в будущем. Каждый пример, используемый для обучения, помечается интересующим нас значением – в данном случае это стоимость акций. Контролируемый алгоритм обучения выполняет поиск шаблонов в этих значениях. Он может использовать любые соответствующие сведения – день недели, время года, финансовые данные компании, тип отрасли, наличие важных геополитических событий – и каждый алгоритм ищет шаблоны различных типов. После того как алгоритм обнаружил наилучший шаблон, он может на основе этого шаблона предсказать неразмеченные проверочные данные – завтрашние цены.
Контролируемое обучение – это популярный и полезный тип машинного обучения. За одним исключением все модули машинного обучения Azure являются контролируемыми алгоритмами обучения. В машинном обучении Azure существует несколько типов контролируемых алгоритмов обучения: классификация, регрессия и обнаружение аномалий.
Классификация
Если данные используются для прогнозирования категории, контролируемое обучение также называется классификацией. Это происходит, когда рисунок определяется как изображение «кошки» или «собаки». При наличии только двух вариантов такая классификация называется двухклассной или биномиальной. При наличии нескольких категорий, как при прогнозировании победителя турнира NCAA March Madness, классификация называется многоклассовой.
Регрессия. При прогнозировании значения, например, стоимости акций, контролируемое обучение называется регрессией.
Обнаружение аномалий. Иногда задача состоит в идентификации точек данных, которые просто являются необычными. Например, при выявлении мошенничества с кредитной картой подозрительными являются любые необычные операции оплаты. Количество возможных вариантов так велико, а количество известных примеров так мало, что научиться определять мошеннические действия очень трудно. Подход, который используется при обнаружении аномалий, состоит в том, чтобы просто изучить, как выглядят нормальные действия (с помощью журнала нормальных транзакций), и определять все действия, которые существенно отличаются от нормальных.
Неконтролируемое
При неконтролируемом обучении точкам данных не присваиваются метки. Вместо этого цель алгоритма неконтролируемого обучения – определенное упорядочивание данных или описание их структуры. Это может означать группировку данных в кластеры или поиск различных способов анализа сложных данных для их упрощения или улучшения их организации.
Обучение с подкреплением
В обучении с подкреплением алгоритм выбирает действие в ответ на каждую точку данных. Алгоритм обучения также вскоре получает сигнал, оповещающий об успехе, который дает понять, насколько удачно было принято решение. На основе этого алгоритм изменяет свою стратегию для достижения лучшего результата. На данный момент в машинном обучении Azure модули алгоритмов обучения с подкреплением отсутствуют. Обучение с подкреплением широко распространено в робототехнике, где набор показаний датчиков в один момент времени представляет собой точку данных и алгоритму необходимо выбрать следующее действие робота. Кроме того, оно естественным образом подходит для приложений из Интернета вещей.
Рекомендации по выбору алгоритма
Точность. Получение наиболее точного ответа необходимо не всегда. Иногда достаточно приближенного ответа в зависимости от того, для чего он используется. В этом случае можно значительно сократить время обработки, придерживаясь более приближенных методов. Еще одним преимуществом более приближенных методов является то, что они естественным образом стремятся избежать чрезмерно высокой точности.
Время обучения. Количество минут или часов, необходимых для обучения модели, сильно отличается для различных алгоритмов. Время обучения часто тесно связано с точностью – одно обычно сопутствует другому. Кроме того, некоторые алгоритмы более чувствительны к количеству точек данных, чем другие. Когда время ограничено, это может повлиять на выбор алгоритма, особенно с большим набором данных.
Линейность. Линейность используется во многих алгоритмах машинного обучения. Алгоритмы линейной классификации предполагают, что классы могут быть разделены прямой линией (или ее аналогом для большего числа измерений). К ним относятся логистическая регрессия и метод опорных векторов (в том виде, в котором это реализовано в машинном обучении Azure). Алгоритмы линейной регрессии предполагают, что тренды данных следуют прямой линии. Эти предположения допустимы для ряда задач, но для других задач они приводят к снижению точности.
Деревья, леса и джунгли
Леса решений (регрессионные, двухклассовые и многоклассовые), джунгли решений (двухклассовые и многоклассовые) и увеличивающиеся деревья решений (регрессионные и двухклассовые) основаны на деревьях решений, базовой концепции машинного обучения. Существует множество вариантов деревьев решений, но все они делают одно и то же: подразделяют пространство функций на области с преимущественно одинаковыми метками. Это могут быть области с одинаковой категорией или одинаковым значением в зависимости от того, проводится ли классификация или регрессия.
Дерево решений подразделяет пространство функций на области примерно c одинаковыми значениями.
Так как пространство функций можно подразделить на регионы произвольного размера, легко представить такое разделение, при котором в одном регионе будет только одна точка данных. Это крайний пример чрезмерно высокой точности. Чтобы этого избежать, большие наборы деревьев создаются с особой математической осторожностью, чтобы деревья не коррелировали друг с другом. Средним для этого «леса решений» является дерево, что позволяет избежать чрезмерно высокой точности. Леса решений могут использовать большой объем памяти. Джунгли решений – это вариант, который используют меньший объем памяти за счет небольшого увеличения времени обучения.
В увеличивающихся деревьях решений во избежание чрезмерно высокой точности ограничиваются количество повторных делений и минимальное количество точек данных в каждом регионе. Алгоритм создает последовательность деревьев, каждое из которых учится компенсировать ошибки, оставленные предыдущим деревом. В результате мы получаем очень точный механизм обучения, который, как правило, использует большой объем памяти.
3.3.2 Предварительная обработка данных
В полученном наборе данных содержится целевая информация о времени, которое пользователь затрачивает на обдумывание и разрешение затруднений, возникающих в процессе работы в изучаемом программном продукте по причине наличия несоответствий программного продукта принципам проектирования диалога пользовательского интерфейса.
Также набор данных содержит «шумовую» информацию о времени, в течение которого пользователь не выполнял никаких действий, так как возникали задержки непосредственно в работе исследуемого программного продукта (так называемое «зависание»), причинами которых могли являться:
– недостаточность ресурсов аппаратных компонентов компьютера, на котором выполняется приложение;
– соединение с сервером для обмена информацией при авторизации, извлечения данных по запросу из базы данных и т.д.;
– обработка данных в приложении, требующая значительных вычислительных мощностей компьютера и др.
Для очистки данных от подобного рода «шумовой» информации было сделано предположение следующего характера: в случае, если возникло т.н. «зависание» приложения, то пользователь не перемещает курсор, что позволяет нам исключить из расчетов данные, не несущие полезной информации.
Таким образом, на этапе предварительной обработки данных из набора были удалены данные с одинаковыми координатами, повторяющимися на протяжении определенного, достаточно длительного временного промежутка, в течение которого отсутствуют действия пользователя (не нажата правая или левая кнопка мыши, не производится ввод текста, отсутствует перемещение курсора).
3.3.3 Определение рабочих областей окна приложения
Основным приемом работы пользователя в среде программных продуктов для информационного обеспечения учебно-методического процесса является щелчок левой кнопкой мыши, который используется практически на всех этапах работы с исследуемой программой при выполнении следующих действий:
– раскрытие меню и выбор в нем необходимой команды;
– нажатие на экранную кнопку для выполнения действия;
– установка курсора в поле для ввода текста;
– выбор элемента из раскрывающегося поля со списком и т.д.
Поэтому информация об областях экрана, в которых пользователь выполняет щелчок левой кнопкой мыши, играет важную роль для анализа соответствия программного продукта принципам организации диалога пользовательского интерфейса.
















