Итак, продолжим нашу лекцию. Рассмотрим примеры алгоритмов классификации. Сделаем это на основе алгоритма классификации Decision Tree. Сначала познакомимся с исходными данными, на которых мы будем рассматривать данный пример. Это стандартный DataSet, поставляемый вместе с R-iris. Он содержит в себе информацию о радужной оболочке глаза. В нём записаны 4 измерительных величины в формате Numeric и одна величина, которая содержит в себе целевой признак - это номинальное значение. Посмотреть имена этих признаков можно с помощью функции names, ак я уже рассказывал ранее для DataFrame'ов, а значения номинального признака с помощью функции «attributes». Видно, что в графе «levels» показаны его значению. Это о том, какие радужные оболочки глаза вообще бывают у человека.
Теперь сделаем то, что мы делали в примере с Weka. Реализуем своими руками «Cross-validation». То есть мы подготовим две выборки: одна тестовая, другая обучающая. Для этого мы используем функцию «sample», которая создаст нам векторы значений единицы и двойки. При этом единицы там будут встречаться с вероятностью 70%, а двойки с вероятностью 30%. И используем то самое логическое индексирование, то есть фильтрацию по этому вектору. Если в векторе содержится на данном индексе единица, мы отправляем этот элемент в trainData, если двойка, отправляем этот элемент в testData. Собственно, для использования Decision Tree необходимо подключить сторонний модуль party. Далее необходимо составить формулу. Формула – это, по сути, та вещь, которая определяет целевой признак и то, от каких признаков он зависит. В данном случае целевым признаком является номинальный признак. Это значение классов, какие радужные оболочки глаза бывают у человека, и он зависит от всех других признаков, приведенных в таблице. Если мы хотим добавить признак, мы используем оператор «плюс», если мы хотим убрать признак из последовательности, то оператор «минус».
Далее мы строим саму модель, которой передаем с помощью функции iris_ctree, которой передаем данную формулу, а также данные. Соответственно, мы передаем trainData. Собственно, теперь о применении модели. Чтобы применить модель, необходимо использовать функцию «predict». В модели уже заложены данные – trainData, на которых она обучилась. И к ним же мы её применяем, и строим матрицу ошибок, то есть смотрим - читать ее следует таким способом, что при предсказанном значение «Versicolor», реальный класс был virginica. То есть у нас три ошибки на этом предсказании. несмотря на то, что мы обучались на этой же самой выборки, особенности алгоритма Decision Tree таковы, что даже на обучающей выборке он может потом сам же ошибаться.
Теперь применим этот алгоритм к тестовым данным. Для того, чтобы применить построенную модель к другим данным, требуется вызвать функцию «predict» с параметром newdata и передать туда testData. Снова построим таблицу ошибок. Вот, она уже содержит другие значения, но смысл остается тот же. Очень полезно бывает визуализировать модель Decision Tree, потому что это, собственно, дерево и оно легко визуализируется, а так лучше можно понять, что же в итоге у нас получилось. В идеальном случае в каждом из прямоугольников должно содержаться по одному классу. Мы видим, что в двух последних содержатся элементы из двух классов. Отсюда и возникают ошибки на распознавании. Если использовать параметр «type» и передать ему значение «simple», то можно получить визуализацию в более компактном виде.
Следующий алгоритм - Random Forest. Тоже очень распространенный алгоритм. Здесь видно новое применение оператора тильда с точкой. Это означает, что теперь целевой признак зависит от всех параметров. На предыдущем примере мы перечисляли все параметры вручную через оператор «плюс». Теперь признаки все перечисляться автоматически. Если мы захотим какой-то один признак или несколько удалить из этой формулы, мы можем использовать оператор «минус». Появляются дополнительные параметры, такие, как ntree. Это количество деревьев в нашем лесу. Также выполняем функцию «predict» и строим нашу таблицу ошибок. Мы можем получить статистическую сводку по построенной модели. Для этого можно просто использовать функцию «print(rf)» или просто написать «rf» в консоли. Нам распечатаются определенные данные, с которыми эта модель была запущена. Также распечатается такая матрица, еще и выведется значение ошибок в процентах. Данный алгоритм имеет альтернативную реализацию в пакете «party», из которого мы использовали Decision Tree. Вообще он реализован двух пакетах: одноименном Random Forest и в пакете «party». Здесь отличительная особенность в том, что теперь используется параметр control, в котором параметр «количество деревьев» передаётся в довольно специфическом виде. В остальном же работа не отличается, если не рассматривать внутренности алгоритма. Здесь приведены наиболее используемые пакеты для классификации. Отдельно стоит выделить последний пункт - это пакет, который отвечает за оценку качества работы алгоритмов. Это пакет ROCR.
Теперь поговорим о другой наиболее часто встречаемой вещи - это регрессия. С точки зрения аналитики больших данных, регрессия - это просто часто встречающаяся вещь, регрессия, регрессионный анализ, корреляция и так далее. Это то, что очень часто встречается в Big Data. Для начала подготовим тестовые данные. Пусть это будет уровень инфляции, который расписан по годам и кварталом года. Собственно, делаем вектор годов и вектор кварталов, а также вектор, в котором содержатся показатели индекса инфляции. Для наглядности визуализируем то, что получилось. Получается такая картинка. Видно даже невооруженным глазом, что индекс инфляции коррелирует с годом.
Давайте проверим это с помощью простых функций, которые встроены в стандартные средства языка R - это корреляции. Для этого используем функцию «cor» и посмотрим корреляцию между годом и уровнем инфляции, и кварталом и уровнем инфляции. Видно, что с годом коррелирует хорошо, а с кварталом, нет, потому что квартала одни и те же повторяются в каждом году.
Теперь регрессионный анализ и линейная модель. Линейная модель строится очень похожим образом. В ней указывается также формула, какой параметр и от каких параметров он зависит. В нашем случае, это уровень инфляции. Зависит от года и от квартала. С помощью функции «print» можно получить некоторые статистические параметры данной модели, например, коэффициенты. Также очень полезной является функция «summary», которая более подробно все это раскрывает. Можно также посмотреть Residuals, коэффициенты более подробные, стандартные отклонения, ошибку и так далее. Это часто бывает важно. Все отдельные отклонения можно посмотреть, с помощью функции «residuals». Далее следует понимать, что так же, как и с алгоритмами классификации к линейной модели, так как это тоже модель, можно применить функцию «predict» и предсказать какие-нибудь значения. Для этого мы подготовим еще четыре квартала и еще один год и используем функцию «predict» с параметром «newdata», а затем просто выведем на одном графике как старые данные, так и новые. Красными треугольниками показаны предсказанные значения уровня индекса инфляции к 2004 кварталу 2011 года.
Теперь продолжим с кластеризацией. Рассмотрим на примере очень известного алгоритмы кластеризации, который используется везде и всюду, это K-Means. Опять будем использовать наш уже знакомый DataSet Iris, у которого мы намеренно занулим целевой признак. Теперь он у нас отсутствует и его необходимо предсказать. Построим модель, передадим ей данные и укажем, что число кластеров три, так как мы заранее знаем, что классов было три у данного DataSet'a и посмотрим на таблицу ошибок. Видно, что первый класс полностью кластеризовался правильно, вторые в себя включили лишние классы. Это автоматическое обучение без учителя, поэтому такие ошибки вполне уместны. Теперь визуализируем. Визуализация производится просто с использованием функции «plot». Мы выбираем из нашего DataSet'a, делаем срез по двум его параметрам, признакам, и также закрашиваем по тому, какие кластера предсказаны. То есть, вот, параметр «col», мы ему присваиваем значение «cluster». То есть цвет будет зависеть от того, к какому кластеру принадлежит данная точка. Далее мы просто распечатываем координаты точек. За это отвечает параметр «centers», которого мы тоже делаем срез по двум координатам. Получается вот такая визуализация. Видно, что один класс отделился очень хорошо и не забрал лишнего, а вторые между собой в этих координатах наложились. Наиболее распространенные пакеты и функции для кластеризации. Пакеты обозначены без скобочек, а функции с круглыми скобочками.
Теперь приведем небольшой пример R и взаимодействие его с Hadoop. Для того, чтобы успешно работать в парадигме MapReduce, нам необходимо будет два пакета. Один Hadoop, который, по сути, состоит из трех пакетов. Первый реализует интерфейс MapReduce, второй - взаимодействие с файловой распределенной системой, а третий - взаимодействие с базой данных Hbase. И Rhive, если мы захотим взаимодействовать с Apache Hive. Небольшой пример, который стал уже классикой в наше время - это подсчет количества слов. Подключаем пакет, который реализует интерфейс MapReduce. Реализуем две функции «map» и «reduce». Думаю, уже излишним будет рассказывать, как работают эти функции, потому что они встречаются на каждом углу, как мы подсчитываем слова. Затем мы формируем функцию, которую после передадим нашей машине, нашему Hadoop, то есть wordcount, в которой будут параметры входного файла, выходного файла. Передадим в качестве параметров map функцию, которую мы реализовали на предыдущем слайде «map», и в качестве параметра reduce - функцию «reduce», которую мы также реализовали на предыдущем слайде. ну и также передадим входные, выходные файлы и входной формат, что это текстовые файлы. Отправим данную работу на выполнение, передав им конкретные имена файлов. Собственно, на этом всё. Спасибо за внимание!
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.