ски, но, возможно, лучше просто удалить эту выборку целиком. Это
субъективный выбор, который должен делаться в каждом конкретном случае.
Мы также хотим идентифицировать любую группу данных, которые выглядят
сильно отличающимися от других. Точки данных, которые сильно отличаются от
других, называются выпадающими точками (outliers). Некоторые из них могут
быть просто ошибками набора, как упомянутая выше децимальная точка.
Другие могут быть результатом человеческих ошибок, подобно случайному
частичному копированию одного множества данных в другое или неудаление
какоголибо вхо- да из электронной таблицы. Когда мы не знаем, является ли
выпадающая точка действительной величиной данных или какогото рода
ошибкой, то нам придется принять самостоятельное решение оставить ее или
вручную удалить. Это субъек- тивное решение, которое полностью зависит от
того, что представляют собой наши данные, как хорошо мы осведомлены о них и
что мы собираемся делать с ними.
12.5.1. Нормализация
Обычно первым шагом при преобразовании наших данных является нормали-
зация каждой характеристики. Слово «нормальный» используется в повседнев-
ной жизни в смысле «типичный», но оно также имеет специальный технический
смысл в различных областях.
Мы будем использовать это слово в статистическом смысле, в котором оно
имеет значение масштабирования данных так, что они лежат в некотором кон-
кретном диапазоне. Мы обычно выбираем диапазон или [–1,1], или [0,1], в зави-
симости от данных и того, что они означают (не имеет смысла, например, гово-
рить об отрицательных яблоках или возрасте).
Каждая библиотека машинного обучения предлагает рутинную программу
для этого процесса, но мы не должны забывать вызывать ее. Мы увидим
примеры в главах 15 и 23. Рисунок 12.6 показывает множество данных
размерностью 2D, которые мы используем для демонстрации. Мы выбрали
гитару, потому что ее форма поможет нам видеть, что происходит с точками,
когда мы их двигаем. Мы добавили цвет только как помощь в визуализации,
также помогающий нам ви- деть, как двигаются точки. Цвет не имеет другого
предназначения.
Входные точки
Рис. 12.6 Форма гитары содержит 232 точки. Каждая точка – это выборка,
опи- сываемая двумя ее характеристиками, названными X и Y. Цвета здесь
только для того, чтобы помочь отслеживать точки при переходе от одного
рисунка к другому, и больше ничего не означают
Обычно эти точки являются результатом измерений, скажем, возраста или
веса некоторых людей или темпа и громкости песен. Чтобы сохранить общность
рас- суждений, мы обозначили их как X и Y.
На рис. 12.7 показаны результаты нормализации каждой характеристики на-
ших данных в форме гитары в интервале [–1,1] по каждой оси. То есть если Х
величина в диапазоне от –1 до 1, то и величина Y независимо масштабируется
в пределах от –1 до 1. Форма гитары при этом немного искажена, она растянута
вертикально больше, чем горизонтально.
Нормализованные
Рис. 12.7 Данные на рис. 12.6 после нормализации в диапазоне [–1,1] по каж-
дой оси. Искажение формы вызвано большим растяжением по оси Y, чем по оси Х
12.5.2. Стандартизация
Другой рутинной операцией является стандартизация каждой характеристики.
Это двухступенчатый процесс.
Вопервых, мы добавляем (или вычитаем) фиксированные величины во всех
характеристиках, так чтобы средние значения этих характеристик были рав-
ны нулю (этот шаг также называется нормировкой среднего, или вычитани-
ем среднего). В наших 2Dданных это сдвиг всего набора данных слева направо и
сверху вниз, так что средние значения попадают точно в интервал (0,0).
Затем после нормализации или масштабирования каждой характеристики,
чтобы они располагались между –1 и 1, мы масштабируем ее так, чтобы она име-
ла стандартное отклонение, равное 1 (этот шаг также называется нормировкой
дисперсии). Вспомним, что в главе 2 было сказано, что это означает, что при-
мерно 68 % величины этой характеристики будут лежать в интервале от –1 до 1.
В нашем примере с размерностью 2D величины Х растягиваются или сжимаются
горизонтально, пока примерно 68 % данных не будут в интервале от –1 до 1 по
оси Х и затем величины по оси Y не растянутся или сожмутся вертикально, пока
не примут такие же значения по оси Y. Это неизбежно означает, что некоторые
точки
будут за пределами диапазона [–1,1], так что результат будет отличным от того,
который мы получили при нормализации.
Как и при нормализации, большинство библиотек будет по вызову предлагать
рутинные программы для стандартизации любой или всех характеристик. Рису-
нок 12.12 показывает применение стандартизации к нашим начальным данным
на рис. 12.11.
Среднее и дисперсия скорректированы
0 1 0 1
(a) (b)
Спроектированные точки показаны на рис. 12.17. Заметим, что все они лежат на
линии максимальной дисперсии, которую мы нашли на рис. 12.15.
Спроектированные точки
Эти точки лежат на линии, но они все еще имеют размерность 2D. Чтобы
полно- стью уменьшить их размерность до 1D, мы можем повернуть их до тех
пор, пока они не будут лежать на оси Х, как показано на рис. 12.18. Теперь
координата Y
снова не релевантная, и мы имеем данные размерностью 1D, которые включают
информацию о каждой точке из обеих их начальных величин Х иY.
Повернутые перемещенные точки
Хотя прямая линия точек на рис. 12.18 выглядит как линия точек на рис. 12.14,
они различны, потому что точки распределены вдоль оси Х иначе. Другими сло-
вами, они имеют отличные значения, потому что они были вычислены проекти-
рованием на наклонную линию, а не на горизонтальную.
Все эти шаги выполняются автоматически в библиотеках машинного
обучения стандартными программами РСА при их вызове.
Достоинство этих новых данных заключается в том, что величина каждой од-
ной точки (ее положение по Х) является комбинацией начальных 2Dданных. Мы
уменьшили размерность нашего набора данных на единицу, но сделали это,
сумев оставить столько информации, сколько возможно. Наши обучающие
алгоритмы должны обрабатывать теперь только данные размерностью 1D,
поэтому они будут обучать быстрее.
Конечно, мы потеряли часть информации, поэтому можем пострадать от
умень- шенной скорости обучения или точности. Прием использования РСА
может быть эффективен при выборе размерностей, которые могут быть
объединены, остава- ясь в пределах выполнения поставленных в проекте задач.
Если мы имеем данные размерности 3D, то можем поместить поверхность
в среднее окружающих выборок и проецировать наши данные на плоскость.
Биб лиотечная программа найдет ориентацию этой плоскости. Это переведет
наши данные из 3D в 2D. При желании мы можем использовать эту описанную
выше технику и представить линию для величин точек, которая переведет их из
3D в 1D.
На практике мы можем использовать эту технику для любого числа размерно-
стей, уменьшив размерность данных в десять и более раз.
Решающими вопросами для такого рода алгоритмов являются вопросы о том,
как много размерностей мы пытаемся сжать, какие следует объединить и как их
объединять. Обычно число размерностей после применения РСА обозначается
буквой k. В нашем примере с гитарой k = 1.
В этом смысле мы можем назвать k параметром алгоритма, хотя мы обычно
называем его гиперпараметром всей системы обучения. Как мы видели, буква k
используется в машинном обучении в большом количестве алгоритмов, что
пред- ставляет неудобство, поэтому важно внимательно отнестись к контексту,
когда мы видим ссылку на k для того и другого случая.
Небольшая компрессия означает, что наше обучение или оценки будут недо-
статочно эффективны, слишком большое сжатие во многих случаях означает
риск удаления важной информации, которую нам следовало бы сохранить.
Выбирая наилучшую величину гиперпараметра k, мы обычно проверяем это на
небольшом количестве различных параметров, чтобы посмотреть, что работает
лучше всего. Мы можем автоматизировать поиск, используя
гиперпараметрический поиск, который мы покажем в главе 15.
Как всегда, где бы ни использовалось РСАпреобразование для сжатия обуча-
ющих данных, оно должно также быть применено тем же порядком для всех по-
следующих данных.
Рис. 12.19 Превращение изображения в список. Вверху: наш вход. Внизу: спи-
сок, сформированный расположением одного ряда после другого, сверху вниз
Стандартизированные
Хаски 0 Хаски 1 Хаски 2 Хаски 3 Хаски 4 Хаски 5
6 7 8 9 10 11
12.8. преобразования
Давайте посмотрим более подробно на действия при вычислениях и
применении преобразований. Мы также посмотрим, как иногда мы
отказываемся от этих дей- ствий, чтобы было проще сравнить результаты с
первоначальными данными.
Давайте предположим, что мы работаем в дорожном департаменте города,
че- рез который проходит одна дорожная магистраль. Город находится в
северном районе, поэтому температура здесь часто опускается ниже
температуры замер- зания. Дорожные служащие заметили, что плотность
трафика меняется с изме- нениями температуры, поскольку в холодные дни
больше людей остается дома.
Для того чтобы составить план дорожных работ и строительства других соору-
жений, менеджеры хотели бы знать, можно ли предсказать на основании изме-
рения температуры количество автомобилей, которое пройдет по этой
магистра- ли в утренние часы пик. Поскольку измерения и обработка занимают
некоторое время, мы решаем проводить измерения температуры каждый день в
полночь и затем предсказать, сколько автомобилей будет на дороге с 7 до 8 утра
следую- щим утром.
Мы собираемся начать использовать нашу систему в середине зимы, поскольку
ожидаем, что в этот период температура будет как выше, так и ниже
температуры замерзания, то есть нуля градусов по Цельсию.
Преобразования 325
Нормализованная температура
Анализ Анализ
Преобразование Преобразование
Преобразованные
температуры Преобразованное
число автомобилей
Преобразование Преобразование
Обучение
Преобразование
Предсказание
Инверсное преобразование
Предсказание
числа автомобилей
Снова мы видим, что всегда должны преобразовывать наши входные данные, при-
меняя оригинальное преобразование, которое мы использовали для обучающих данных.
Если неожиданно мы получим выборку, которая будет находиться за предела-
ми оригинального входного диапазона величин, то это приведет к искажению
ре- зультата. Предположим, что ночная температура опустилась до –50 градусов,
что значительно ниже минимальной величины в наших оригинальных данных. В
ре- зультате преобразованная величина окажется вне пределов диапазона [0,1].
То же произойдет и при очень большой положительной ночной температуре,
которая
будет преобразована в величину, большую 1, снова вне пределов [0,1].
Обе ситуации наказуемы. Мы устанавливаем диапазон [0,1], чтобы сделать
обучение как можно эффективнее. Но при этом необходимо держать под
контро- лем числовые величины. Когда система обучена, мы можем подавать на
нее лю- бые величины в качестве входа, и она сделает все возможное, чтобы
вычислить соответствующий выход.
Преобразование
3 июня
6 июня
9 июня
Рис. 12.37 Каждый вечер мы измеряем четыре различных аспекта погоды. Ког-
да мы обрабатываем данные по характеристикам, мы анализируем каждую колон-
ку независимо. Здесь мы находим минимум и максимум в каждой колонке (показа-
ны в квадратных скобках) и используем эти значения для преобразования входов
в новое множество величин между 0 и 1
Обработка
Накопление
преобразованных
данных
Оценка
Обучение
и оценка
Samples
Анализ
Оценка
Обучение
и оценка
Оценка
Обучение
и оценка
Масштабирование
Анализ
Мин Макс
Масштабирование
Анализ
Мин Макс
Обучение
Выборки и оценка
Анализ
Оценка
Обучение
и оценка
Анализ
Оценка
Обучение
и оценка
справоЧные материалы
[CDC17] Centers for Disease Control and Prevention. Body MassIndex (BMI). 2017.
https://www.cdc.gov/healthyweight/assessing/bmi/.
[Crayola16] What were the original eight (8) colors in the 1903 box of Crayola
Crayons?. 2016. http://www.crayola.com/faq/your-history/what-were-the-original-eight-8-
colors-in- the-1903-box-of-crayola-crayons/.
[Dulchi16] Dulchi Paul. Principal Component Analysis. CS229 Machine Learning
Course Notes #10. http://ufldl.stanford.edu/wiki/index.php/PCA.
[Krizhevsky09] Krizhevsky Alex. Learning Multiple Layers of Features from Tiny Images.
University of Toronto, 2009. http://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf.
[McCormick14] McCormick Chris. Deep Learning Tutorial – PCA and Whitening.
Blog post, 2014. http://mccormickml.com/2014/06/03/deep-learning-tutorial-pca-and-
white- ning/.
Заимствованные изображения 337
[Turk91] Turk Matthew, Pentland Alex. Eigenfaces for Recognition // Journal of Cognitive
Neuroscience. Vol. 3. № 1. 1991. http://www.face-rec.org/algorithms/pca/jcn.pdf.
заимствованные изображения
Корова (рис. 12.3)
https://pixabay.com/en/cow-field-normande-800306
Зебра (рис. 12.3)
https://pixabay.com/en/zebra-chapman-steppe-zebra-1975794
Хаски (рис. 12.21, 12.23)
https://pixabay.com/en/husky-sled-dogs-adamczak-1105338
https://pixabay.com/en/husky-dog-outdoor-siberian-breed-1328899
https://pixabay.com/en/dog-husky-sled-dog-animal-2016708
https://pixabay.com/en/dog-husky-friend-2332240
https://pixabay.com/en/green-grass-playground-nature-2562252
https://pixabay.com/en/husky-dog-siberian-husky-sled-dog-2671006
Глава 13
Классификаторы
Рис. 13.1 Чтобы найти класс новой выборки, мы находим его наиболее попу-
лярных соседей: (а) новая выборка (звездочка), окружена выборками 3 классов;
(b) когда k = 1, первым ближайшим соседом является кружочек, поэтому катего-
рией для выборки звездочка является этот кружочек; (с) когда k = 9, мы находим
три выборки в виде кружочка, 4 в виде квадратика и 2 в виде треугольника, так
что звездочке присваивается категория квадратиков; (d) когда k = 25, мы находим
6 выборок в виде кружочков, 13 квадратиков и 6 треугольников, поэтому звездочке
опять присваивается категория квадратиков
На рис. 13.1 (а) мы имеем точку выборки (звездочка) посреди группы других
выборок, которые представляют три категории выборок (кружочки, квадратики
и треугольники). Чтобы определить категорию для нашей новой выборки, мы
смотрим на ближайшие выборки (соседей) и разрешаем им голосовать. Та
катего- рия, которая находится ближе всего, наиболее популярная, становится
новой вы- борочной категорией. Мы показываем, какие выборки
рассматриваются для раз- личных значений k, обводя их кружком. На рис.13.1 (b)
мы устанавливаем k = 1, что означает, что мы хотим использовать класс
ближайшей выборки. В этом случае это кружочек, следовательно, эта выборка
будет классифицирована как кружочек. На рис. 13.1 (с) мы устанавливаем k = 9.
Здесь мы находим 3 кружочка, 4 квадрати- ка и 2 треугольника. Поскольку
квадратиков больше, чем других классов, черная звездочка классифицируется
как квадратик. На рис. 13.1 (d) мы установили k = 25. Теперь мы имеем 6
кружочков, 13 квадратиков и 6 треугольников, и снова звез- дочка
классифицируется как квадратик.
Суммируя сказанное, kNN принимает для оценки новую выборку и величину
k. Она затем находит более близкие k выборок к этой новой выборке и разрешает
им
«голосовать» относительно приемлемой категории. Та категория, которая име-
ет большинство голосов, становится категорией для новой выборки. Существуют
различные способы прерывания связей и управления исключениями, но это ба-
зовая идея. Заметим, что kближайший сосед не создает очевидных границ между
группами точек. Здесь отсутствуют области или регионы, которым принадлежат
выборки.
Можно сказать, что kNNалгоритм по требованию, или ленивый алгоритм,
потому что он не обрабатывает выборки во время обучающей стадии. Обучаясь,
kNN прячет выборки в своей памяти, и это все, что он делает.
kближайший сосед привлекателен тем, что он прост и обычно обучается очень
быстро.
С другой стороны, kNN требует много памяти, потому что (в своей базовой
фор- ме) он сохраняет все входные выборки. Использование большого объема
памяти
может в некотором смысле само по себе замедлить работу алгоритма. Классифи-
кация новых точек часто медленная (по сравнению с другими алгоритмами,
кото- рые мы будем рассматривать) за счет поиска соседей. Каждый раз, когда
мы хотим осуществить классификацию новой порции данных, мы должны
найти k ближай- ших соседей, а это требует работы. Конечно, существуют
способы ускорить работу, и все же этот метод остается медленным методом. Для
приложений, в которых важна скорость, таких как системы реального времени
или вебстраницы, время, необходимое kNN для ответа, становится
неприемлемым.
Другая проблема этого метода состоит в том, что он зависит от большого
числа соседей в ближайшем окружении (в конце концов, если соседи на
большом уда- лении, то они не предлагают хорошего заместителя для другого
экземпляра, по- хожего на того, которого мы хотим классифицировать). Это
означает, что нам не- обходим большой объем данных. Если у нас много
характеристик (то есть наши данные имеют большую размерность), то мы
сталкиваемся с проклятием большой размерности, которую мы рассматривали в
главе 7. Если размерность простран- ства возрастает и если мы при этом
одновременно и значительно не увеличиваем число обучающих выборок, то
число выборок в любом ближайшем окружении па- дает, создавая трудности
для kNN в получении хороших ближайших точек.
Давайте запустим kNN для тестирования. На рис. 13.2 показана «улыбка» мно-
жества данных 2D, которые поделены на две категории.
k = 10 k = 20 k = 50
k = 10 k = 20 k = 50
k = 10 k = 20 k = 50
Рис. 13.7 kNN не создает границ между кластерами выборок, потому что он
работает, даже когда класс разбит на части. Как ожидалось, алгоритм менее чув-
ствителен при маленьких значениях k. Но заметим, что когда k = 50, глаза исчезают.
Это происходит потому, что вблизи глаз, когда мы тестируем большое количество
соседей, синие точки доминируют над оранжевыми. Если мы дальше увеличиваем
k, глаза могут исчезнуть совсем
В этом примере значение k примерно 20 выглядит наилучшим. Когда k воз-
растает до 50, маленькое число выборок, представляющих глаза, начинает терять
голоса с каждым голосованием, и глаза разрушаются.
Таким образом, маленькое значение k дает нам нечеткие края и маленькую
чувствительность, но большие значения k могут начать разрушать маленькие ха-
рактеристики. Как это часто бывает, нахождение наилучших параметров для
это- го алгоритма при любом имеющемся множестве данных требует
повторяющихся экспериментов. Мы можем использовать кроссвалидацию,
чтобы автоматически определять качество каждого результата, что особенно
полезно, когда присут- ствует большая размерность.
Линия в середине рис. 13.10 лучшая из трех. Она определенно лучше, чем та,
ко- торая находится справа, потому что точка, которая немного выше и левее
красно- го кластера внизу справа и выше этой линии, будет классифицирована
как синяя, даже хотя она ближе к красной группе, чем к синей.
Алгоритм, названный методом (алгоритмом) опорных векторов (Support
Vector Machine, SVM), использует эту идею [Steinwart08]. SVM находит линию,
которая наиболее удалена от точек обоих кластеров (слово machine, машина, яв-
ляется здесь удобным синонимом слова алгоритм (algorithm)). Наилучшая линия
показана на рис. 13.11.
На рис. 13.11 отмечены выборки, названные опорными векторами (под словом
«вектор» здесь подразумевается «выборка»).
Первой задачей алгоритма является нахождение положения выборок, заклю-
ченных в кружочек.
После их нахождения алгоритм затем находит сплошную линию ближе к
сере- дине рисунка. Эта линия наиболее удалена от всех выборок в каждом
множестве.
C=1e+10
Алгоритм SVM дает нам контроль над параметром, который условились обо-
значать просто буквой С. Он контролирует то, как строго алгоритм ведет себя по
отношению попадания точек внутрь области между границами. Величину С
мож- но представить как «уровень очистки». Чем больше эта величина, тем
больше тре- бования алгоритма по чистоте зоны вокруг линии. Чем меньше
уровень очистки, тем больше точек может оказаться в зоне вокруг линии.
Алгоритм чувствителен к величине С и данным, которые мы используем. По-
этому нам часто необходимо искать лучшее значение с помощью метода проб
и ошибок и проводить их оценку с помощью кроссвалидации.
Рисунок 13.13 показывает наши перекрывающиеся данные с величиной С, рав-
ной 100,000 (или 1е+05 в научной нотации).
C = 1e+05
Давайте уменьшим величину С до 0.01. На рис. 13.14 показано, что это позволя-
ет намного большему количеству точек попасть в зону вокруг линии.
C = 0.01
Здесь на выручку приходит неплохая идея. Что, если добавить третье измере-
ние каждой точке, подняв ее на величину, равную расстоянию от центра колец?
Рисунок 13.6 демонстрирует эту идею.
Рис. 13.16 Если мы поднимем каждую точку на рис. 13.15 вверх на величи-
ну, равную расстоянию ее от центра розового пятна, мы получим два отдельных
облака точек. Теперь легко проложить плоскость между ними. Так же, как
линия, плоскость – линейный элемент в пространстве, поэтому она может быть
найдена SVM. Эти два изображения – два вида одних и тех же данных –
показывают точки и плоскость между ними
Как видно на рис. 13.16, чтобы найти эту плоскость, мы можем использовать
та- кую же идею опорных векторов и границ, которую мы это использовали
раньше. На рис. 13.17 показаны опорные векторы для плоскости между двумя
кластерами точек.
Рис. 13.17 Опорные векторы для плоскости
Теперь все точки над плоскостью могут быть помещены в один класс и все
ниж- ние точки – в другой.
Если мы пометим опорные векторы, которые мы нашли из рис. 13.17 в нашей
оригинальной картинке размерностью 2D, то получим рис. 13.18.
Это человек?
Да
Нет
Это человек мужчина? Это человек ваш предок? Это на земле? Это сделано из дерева?
Корень
Узел
Ребро
Глубина дерева
Лист
Рис. 13.21 Некоторая терминология для дерева. Каждый кружок – это узел.
Узел на вершине имеет специальное название – корень. Линии, соединяющие
узлы, на- зываются ребрами, глубина дерева есть число узлов от его корня к
самому удален- ному узлу-потомку. Здесь глубина равна 4
Родитель
Дети
Поддерево
Интересным качеством дерева игры 20 вопросов является то, что ответы двоич-
ные: каждый родительский узел имеет только двух детей. Это особенно простой
род дерева для компьютерного построения и использования. Если некоторые
узлы имеют более двух дочерних узлов, мы говорим, что дерево кустовидное.
Мы всегда можем при желании конвертировать густое дерево в бинарное дерево.
Пример кустовидного дерева, которое пытается догадаться о месяце дня рожде-
ния, приведен на рис. 13.23 (а), и соответствующее бинарное дерево показано на
рис.13.23 (b). Поскольку легко менять одно на другое, мы обычно рисуем дерево
в том виде, в каком оно является наиболее кратким и ясным для конкретного об-
суждения.
Конечно, мы представили все эти возможные деревья и термины, для того
чтобы использовать их. Техника деревьев решений применяет общую идею для
классификации данных. Полное название метода – деревья решений катего-
риальных переменных. Это позволит нам отделить их от тех случаев, когда мы
используем деревья решений для работы с непрерывными переменными, как
в регрессионных проблемах. В этом случае они называются деревья решений
непрерывных переменных.
Здесь мы будем иметь дело с категориальными переменными. В качестве при-
мера такое дерево показано на рис. 13.24.
в январе?
да нет
в в в в
январе? феврале? марте? другом? в
феврале
да да да да ?
да нет
в марте?
да нет
(а) (b)
Рис. 13.23 Можно представить себе дерево, у которого после узла имеется мно-
го дочерних узлов, каждый из которых проводит свой тест. Мы всегда можем пре-
образовать такого рода кустовидное дерево в бинарное дерево, имеющее только
вопросы «да-нет» в каждом узле
Да Нет
Рис. 13.26 Наши 600 начальных точек данных для построения дерева решений.
Эти 2D-точки представляют 2 класса: синий и оранжевый
Каждый шаг при построении дерева вовлекает разделение листа и, таким об-
разом, перемещение его с узла на два листа, что ведет к увеличению дерева на
один внутренний узел и один лист. Поэтому нам часто приходится задумываться
об увеличении размера дерева по количеству числа листьев. Процесс построения
дерева показан на рис. 13.27 для растущего числа листьев.
В этом случае наши ячейки являются прямоугольными (как обычно), и наши
разбиения представляют собой вертикальные или горизонтальные линии, кото-
рые делят прямоугольник на две части. Заметьте, как области постепенно
уточня- ются, все более соответствуя данным. Дереву требуется только 10 листьев.
Конеч- ное дерево и оригинальные данные показаны вместе на рис. 13.28. Дерево
очень хорошо соответствует данным.
Поскольку решающие деревья очень чувствительны к каждой входной
выборке, они имеют сильную тенденцию к избыточному обучению. Фактически
решающие деревья почти всегда переобучаются, поскольку обучающие выборки
влияют на форму дерева. Чтобы посмотреть на это, на рис. 13.29 мы применили
тот же алго- ритм, что и на рис. 13.28, дважды, используя в каждом случае
разные, случайным образом выбранные 70 % входных данных.
2 листа
3 листа 5 листьев
Рис. 13.27 Построение дерева решений для наших данных на рис. 13.26. За-
метьте, как дерево, начинаясь с большой порции данных, движется все к
меньшей и меньшей и более точной области
12 листьев
Хотя это выглядит довольно плохо для метода деревьев решения, мы увидим
в главе 14, что, объединяя много очень простых деревьев решений в группу или
ансамбль, мы можем создать классификаторы, работающие очень хорошо и эф-
фективно.
13.7. обсужДение
Мы посмотрели на четыре популярных алгоритма классификации. Большинство
библиотек по машинному обучению предлагает всех их, наряду и со многими
дру- гими.
Если мы хотим только исследовать наши данные, то имеет смысл попробовать
каждый алгоритм, который кажется подходящим для того, чтобы заглянуть по-
глубже в структуру данных. Давайте коротко посмотрим на «за» и «против» этих
четырех классификаторов.
Метод kNN гибок. Он не предоставляет зазоры в явном виде, поэтому он
может справляться с любыми сложными структурами, сформированными
выборками в обучающих данных. Он быстро обучает, поскольку обычно
сохраняет каждую обучающую выборку. С другой стороны, предсказания
медленны, потому что ал- горитм должен искать ближайшего соседа для каждой
выборки, которую мы хо- тим классифицировать (существует много более
эффективных методов, которые ускоряют этот процесс). Кроме того, алгоритм
поглощает большое количество
Обсуждение 369
справоЧные материалы
[Bishop06] Bishop Christopher M. Pattern Recognition and Machine Learning. Springer,
2006.
[Raschka15] Raschka Sebastian. Python Machine Learning. Packt Publishing, 2015.
[Steinwart08] Steinwart Ingo, Christmann Andreas. Support Vector Machines. Springer,
2008.
[VanderPlas16] VanderPlas Jake. Python Data Science Handbook. O’Reilly, 2016.
Глава 14
Ансамбли
14.2. ансамбли
Принятие решений – трудная работа как для человека, так и для машины. В ряде
человеческих сообществ с несовершенством индивидуального принятия реше-
ний справляются с помощью обобщения мнений многих людей.
Законы принимаются сенатами, политические решения создаются советами,
и даже отдельные лидеры могут избираться путем голосования. Подход во всех
372 Ансамбли
14.3. голосование
Когда мы имеем много результатов от многих обучаемых, нам необходимо каким
то образом прийти к единственному конечному результату. Обычным способом
это сделать можно при использовании голосования большинством
[VotingTerms16]. Пусть каждый обучаемый просто даст голос за свое
предсказание, и чье пред- сказание получит наибольшее число голосов, тот станет
победителем (связи меж- ду голосующими часто разрываются либо случайным
выбором одного из связан-
ных входов, либо проведением повторного голосования).
Бутстрап-агрегация 373
14.4. бутстрап-агрегация
Популярным типом ансамбля является ансамбль, который полностью строится
из деревьев решений. Эти деревья обеспечивают хорошую скорость как при
обуче- нии, так и при предсказании, и потому использование значительного
количества деревьев решений не является слишком большой нагрузкой. Деревья
решений популярны и для классификации, и для регрессии. Чтобы сделать
дальнейшее об- суждение более конкретным, мы сфокусируемся на
классификации.
Существует две популярные техники для объединения деревьев решений
в большие группы. Каждая из них создает ансамбль, который может
значительно превзойти качество отдельного дерева решений в его составе.
Основная идея объединения деревьев решений состоит в том, что они обуча-
ются несколько разными обучающими наборами. Это означает, что они будут
по- хожими друг на друга, но не будут являться точными копиями. Когда
поступает новая выборка для предсказания, мы даем эту выборку каждому из
деревьев в ан- самбле. Предсказания всех деревьев собираются, и наиболее
популярное предска- зание является выходом ансамбля.
Первая техника построения ансамбля, которую мы рассмотрим, называет-
ся баггинг (bagging). Это слово является контаминацией двух английских слов
bootstrap (бутстрап) и aggregating (агрегация). (Эта техника имеет также назва-
ние обобщенная кросс-валидация. – Прим. перев.) Как можно догадаться, это
та идея, которую мы рассматривали в главе 2. Там мы видели, как использовать
бутстраппинг для оценки качества статистической величины, вычисленной при
использовании многих подмножеств интересующей нас популяции. Мы создаем
много маленьких наборов, составленных из обучающих наборов, и используем
их для обучения группы деревьев решения.
Начиная с оригинального набора выборок, мы строим много новых наборов,
или бутстрапов, беря только несколько элементов из начального набора и
исполь- зуя выбор с замещением. Это означает, что есть возможность выбрать
одну и ту же выборку более одного раза. На рис. 14.1 показана идея. Вспомним,
что каждая вы- борка приходит с маркировкой категории, и поэтому ею можно
обучать.
374 Ансамбли
Количество
голосов
Категория
Рис. 14.2 Новая часть данных (вверху) поступает на наш ансамбль. Поскольку
он обучен с применением баггинга, каждое решающее дерево слегка отличается
от другого. Данные поступают на каждое из решающих деревьев (показаны как
треугольники), которые выдают предсказанную категорию (A, B, C или D). Мы за-
пускаем выбор путем голосования большинством с этими категориями (четвертый
ряд), которое показывает, что наиболее популярной категорией является В, поэтому
эта категория побеждает и является выходом ансамбля
Случайные леса 375
Поиск Поиск
14.7. бустинг
Посмотрим теперь на технику, называемую бустинг (boosting), которая приме-
нима не только к деревьям решений, но к любой такого рода обучающей системе
[Schapire12]. Мы будем обсуждать бустинг в терминах бинарного классификато-
ра, то есть системы, определяющей на выходе принадлежность к одному из двух
классов. Бустинг позволяет нам объединить большое число маленьких, быстрых
и неточных обучающихся в одного большого и точного обучаемого.
Давайте предположим, что наши данные содержат выборки только двух
катего- рий. Полностью случайный бинарный классификатор будет произвольно
присва- ивать одну из этих двух категорий, поэтому если выборки разделены в
обучающем наборе поровну, то мы будем иметь 50:50 шансов, что выборки будут
корректно маркированы. Мы называем это случайной маркировкой, или
говорим, что раз- ница в получении правильного ответа является просто
шансом.
Что, если бинарный классификатор дает только немного лучший ответ, чем
шанс? Возможно, это связано с плохой граничной линией. На рис. 14.4 показаны
наборы данных из двух категорий, бинарный классификатор, который не лучше,
чем шанс, и бинарный классификатор, который совсем немного лучше, чем шанс.
Рис. 14.4 Плохой бинарный классификатор: (а) наши обучающие данные. Луч-
шим разделением была бы горизонтальная линия, пересекающая середину бокса;
(b) плохой бинарный классификатор. Здесь имеем не более, чем шанс; (с) бинарный
классификатор, который только немного лучше, чем шанс. Это плохой классифика-
тор, но благодаря небольшому наклону граничной линии он немного менее плох,
чем классификатор по пункту «b»
Что может быть хорошим классификатором для такого набора данных? Быст
рым и легко воспринимаемым классификатором был бы одиночный
персептрон, который мы обсуждали в главе 10. Это означает проведение прямой
линии через это 2Dнабор данных.
Набор 2Dвыборок называется линейно разделимым, если мы можем провести
прямую линию между ними. Мы можем видеть, что нет прямой линии, которая
разделила бы эти данные, потому что в середине область с кружками по обе сто-
роны окружает область с квадратиками.
Хотя нет одиночной прямой линии, которая хорошо разделила бы эти
данные, это может сделать много прямых линий, поэтому давайте используем
прямые ли- нии, как мы это делали для слабого классификатора. Вспомним, что
эти класси- фикаторы не должны выполнять хорошую работу над всем набором
данных. Они
только выполняют некоторую работу, чтобы повысить шанс. На рис. 14.6
показана такая линия, которую мы назвали А. Все со стороны линии А,
указанной стрелкой, будет классифицировано как квадратики, а все, что с другой
стороны, будет клас- сифицировано как кружочки. Эта линия делает хорошую
работу по разделению группы кружочков вверху слева от остальных данных, но
ошибочно классифици- рует небольшой кластер квадратиков внизу слева.
Чтобы использовать бустинг, мы хотим добавить больше линий (то есть доба-
вить слабых обучаемых), так чтобы области, формируемые линиями, содержали
выборки одного цвета. После добавления в этот классификатор еще двух прямых
линий мы получим рис. 14.7.
На рис. 14.15 показаны суммы вложений для каждой области. Мы нашли путь
объединения четырех обучаемых, чтобы создать область, корректно классифици-
рующую точки на рис. 14.13.
справоЧные материалы
[Bonab16] R. Bonab, Hamed; Can, Fazli (2016). A Theoretical Framework on the Ideal
Number of Classifiers for Online Ensembles in Data Streams. Conference on
Information and Knowledge Management (CIKM), 2016.
[Ceruzzi15] Ceruzzi Paul. Apollo Guidance Computer and the First Silicon Chips //
Smithsonian National Air and Space Museum, Space History Department, 2015.
https:// airandspace.si.edu/stories/editorial/apollo-guidance-computer-and-first-silicon-
chips.
[Freund97] Freund Y., Schapire R. E. A Decisiontheoretic Generalization of Online
Learning and an Application to Boosting // Journal of Computer and System
Sciences, 55 (1). Р. 119–139. 1997.
[Fumera08] Fumera Giorgio, Fabio Roli, Alessandra Serrau. A Theoretical Analysis of
Bagging as a Linear Combination of Classifiers // IEEE Transactions on Pattern
Analysis and Machine Intelligence. Vol. 30. Number 7. Р. 1293–1299. 2008.
[Kak16] Kak Avinash. Decision Trees: How to Construct Them and How to Use Them
for Classifying New Data. Purdue University, 2016. https://engineering.purdue.edu/kak/
Tutorials/DecisionTreeClassifiers.pdf.
[Met17] United Kingdom Met Office. What is an ensemble forecast? Met Office
Research, Weather science blog, 2017.
https://www.metoffice.gov.uk/research/weather/ensemble- forecasting/what-is-an-
ensemble-forecast.
[NRC98] National Research Council. The Atmospheric Sciences: Entering the Twenty
First Century // The National Academies Press, 1998. https://www.nap.edu/read/6021/
chapter/9 (p. 178).
Глава 15
Библиотека Scikit-learn
15.2. ввеДение
Библиотека Python scikitlearn – свободно распространяемая библиотека общих
алгоритмов машинного обучения.
Чтобы с пользой использовать ее, необходимо знакомство с языком програм-
мирования Python и библиотекой NumPy. NumPy (произносится «нампай») –
библиотека Python, сфокусированная на манипуляциях и вычислениях числовых
данных. Вложенные зависимости показаны на рис. 15.1.
15.4. оценщики
Все коды в этом разделе находятся в ноутбуке
Юпитера Scikit-Learn-Notebook-1-Estimators.ipynb
Мы используем оценщика scikitlearn для выполнения обучения с учителем. Мы
создаем объект и затем даем ему наши маркированные обучающие данные для
Оценщики 391
Теперь, когда мы имеем конечные точки для этой линии, мы можем оценить
величины Y для любого Х, просто вставляя значения Х в линейное уравнение.
15.5. кластеризация
Все коды в этом разделе находятся в ноутбуке
Юпитера Scikit-Learn-Notebook-2-Clusters.ipynb
Кластеризация является техникой обучения без учителя, в которой даем
алгорит- му пакет выборок и он делает все возможное для создания групп из
одинаковых выборок этого пакета.
Нашими входными данными будет пакет 2Dточек без какойлибо другой ин-
формации.
В библиотеке scikitlearn большой выбор алгоритмов кластеризации. Давайте
используем алгоритм k-means, который очень похож на тот, который
упоминался в обзоре главы 7. Величина k говорит алгоритму, как много
кластеров построить (хотя в программе он назван как аргумент n_clusters для
числа кластеров, а не короче и более эффектно одной буквой k).
Мы начнем с создания объекта KMeans. Чтобы получить к нему доступ, нам
необходимо импортировать его из его модуля sklearn.cluster. Когда мы создаем
объект, то можем сообщить ему, как много кластеров мы хотели бы, чтобы он по-
строил, когда мы представим ему данные. Этот аргумент называется n_clusters,
по умолчанию равен 8, если мы не задаем собственную величину. Листинг 15.10
показывает этот шаг, включая указание для числа кластеров.
Листинг 15.10 Импорт KMeans и создание образца
from sklearn.cluster import KMeans
num_clusters = 5
kMeans = KMeans(n_clusters=num_clusters)
Алгоритмы кластеризации часто используются с данными, которые имеют
много размерностей (или характеристик), возможно, дюжины или сотни. Но мы
при создании нашего объекта кластеризации не должны сообщать, сколько ха-
рактеристик будем использовать, потому что эта информация будет поступать
из самих данных, когда потом мы представим их через вызов fit().
Как обычно, давайте использовать 2 измерения (то есть 2 характеристики на
выборку), что позволит нам изображать наши данные и показывать результаты.
В качестве нашего набора данных мы создадим семь гауссовых распределений
и выберем точки случайным образом из каждого из них. Рисунок 15.4 показывает
результат.
Оригинальные данные Оригинальные данные,
показывающие 7 кластеров
15.6. преобразователи
Все коды в этом разделе находятся в ноутбуке
Юпитера Scikit-Learn-Notebook-3-Transformation.ipynb
Как мы обсуждали в главе 12, большую часть времени мы тратим на то, чтобы
преобразовать или изменить наши данные, прежде чем мы начнем использовать
их. Мы должны убедиться, что данные, которые мы введем в алгоритмы, соот-
ветствуют их ожиданиям. Например, многие методы работают лучше, если они
получают данные, в которых все характеристики центрированы на 0 и приведены
к масштабу в пределах [–1, 1].
Преобразователи 399
Обучающие
данные fit()
transform() Обучаемый
Новые
данные
Преобразователь
масштаба