[ЗАСТАВКА] В этом видео мы поговорим о признаках машинного обучения. Существует несколько классов, несколько типов признаков, и у всех свои особенности. Все нужно по-разному готовить и по-разному учитывать в алгоритмах машинного обучения. В этом видео мы больше поговорим о терминологии, чтобы закрепить ее, а о самих особенностях работы с этими признаками будем говорить в следующих уроках. Также мы немного затронем вопросы, какие проблемы могут встретиться в тех или иных видах признаков. Итак, как вы уже знаете, признак — это некоторое число или другая понятная компьютеру сущность, которая как-то описывает объект в доступной форме. Множество значений j-го признака будем обозначать буквой Dj. И первый тип признаков, о которых мы поговорим, это бинарные признаки. Это самый простой тип признаков, которые принимают значение 0 или 1. Всего два значения. Например, в задаче кредитного скоринга мы можем смотреть, клиент получает зарплату выше, чем в среднем по городу, или нет? Если ответ на вопрос «да, его зарплата выше, чем средняя», то значение признака равно 1, если ответ «нет», то значение признака равно 0. У него два значения, он является бинарным. Или другой пример: если мы классифицируем изображение фруктов, пытаясь понять, какой именно фрукт там нарисован, то мы можем сделать признак, который отвечает на вопрос: фрукт зеленый или нет? 1 — если зеленый, 0 — если нет. Тоже бинарный признак. Чуть более сложный класс признаков — это вещественные. В этом случае множество значений — это все вещественные числа. Например, в задаче кредитного скоринга это может быть возраст клиента — понятно, что это вещественное число. Или в задаче оценивание стоимости квартиры можно рассматривать признак «площадь квартиры». Или же в задаче предсказания оттока клиентов мобильного оператора можно смотреть на признак «количество звонков в колл-центр за последний месяц». Следующий класс признаков — категориальные. В случае с категориальными признаками множество значений — это некоторое неупорядоченное множество. Это означает, что мы можем сравнивать элементы этого множества лишь на равенство, на совпадение, но при этом нельзя сравнивать их между собой на больше или меньше. Простой пример категориального признака — это цвет глаз человека. Понятно, что есть несколько вариантов цвета глаз, и их нельзя сравнивать. Нельзя сказать, что зеленый цвет больше или меньше, чем голубой. Разумеется, можно вдариться в подробности и, например, сравнивать цвета по длине волны, но не факт, что во всех задачах такое сравнение имеет смысл. Еще один пример категориального признака — это город, где родился клиент банка, который сейчас просит дать ему кредит. Или еще один пример — это образование. Понятно, что образование может пойти по нескольких веткам, например высшее образование и среднее профессиональное, и их тоже нельзя сравнивать между собой. При этом опять же в некоторых задачах можно ввести осмысленный порядок на этих значениях, но об этом чуть позже. Категориальные признаки очень трудны в обращении. До сих пор появляются способы учета этих признаков в тех или иных методах машинного обучения. Частным случаем категориальных признаков являются порядковые признаки. В этом случае множество значений признака — это некоторое множество, которое является упорядоченным. То есть можно сравнивать значения между собой, но нельзя измерять расстояние между ними. Этим порядковые признаки отличаются от вещественных. Пример порядкового признака — это роль в фильме. Актер может иметь роль первого плана, роль второго плана, роль в массовке, и эти виды ролей легко сравниваются между собой. Или, например, тип населенного пункта — это тоже порядковый признак. Есть вполне определенный порядок на всех типах населенных пунктов: деревня, город, областной центр, столица — что-то в этом духе. Как я уже говорил, на образовании можно ввести порядок в некоторых задачах. Например, банк в задаче кредитного скоринга может ввести порядок на типах образования в зависимости от того, клиенты с каким образованием лучше или хуже возвращают кредиты. И, например, может получиться, что два высших образования хуже, чем одно высшее образование. Наконец, последний тип признаков на сегодня — это множествозначные признаки. Множествозначный признак — это такой признак, значение которого на объекте — это подмножество некоторого множества. Например, можно рассматривать множество всех фильмов, которые когда-либо вышли (это, наверное, сотни тысяч фильмов), и значение признака для одного посетителя сайта — это множество фильмов, которые он посмотрел, это подмножество множества всех фильмов. Или, например, в задачах анализа текстов если мы рассматриваем текст, например, сообщения в Twitter, один объект — это некоторое сообщение, некоторый набор слов, который является подмножеством Большого словаря. Давайте теперь поговорим о двух проблемах, с которыми можно столкнуться при работе с признаками. Первая из них — это выброс. Выбросом называется такой объект, значение признака на котором отличается от значений признака на большинстве объектов. Например, на этом графике нарисованы распределения некоторого признака, и видно, что у большинства объектов значение этого признака концентрируется вокруг 5, но при этом на одном или двух объектах оно равно 15. Эти объекты — выбросы. Значения на них не вписываются в общее распределение. При этом если вы будете настраивать алгоритм машинного обучения на такой признак, у него, скорее всего, будут проблемы. Он будет пытаться хорошо работать и с распространенными значениями признака, и с выбросами. Но при этом поскольку выбросы, скорее всего, приходят из другого распределения, они описываются другими закономерностями, у алгоритма могут возникнуть большие проблемы при этом. Иногда выбросы лучше просто выкинуть. Дело может быть даже не в выбросах, а в том, как распределен признак. Например, в задаче кредитного скоринга можно посмотреть на признак «город, где родился клиент». При этом из каких-то городов у банка будет много клиентов, например из Москвы или Питера, а из каких-то небольших городов с населением в несколько десятков тысяч может быть мало клиентов — один или два. В этом случае статистики по этим городам будет слишком мало, чтобы накопить какие-то данные, чтобы делать выводы на основе того, что клиент пришел из этого города. С этим тоже могут быть проблемы, и надо как-то их решать. Мы будем говорить об этом, когда будем обсуждать работу с категориальными признаками. Если же признак вещественный, то проблема может быть в его распределении следующая: представьте, что мы смотрим на распределение стоимости книг в интернет-магазине, который торгует книгами. Оно будет выглядет примерно, как на этой гистограмме. У большинства книг цена будет не очень большая — несколько сотен рублей, и здесь почти все распределение концентрируется. Но при этом есть ряд книг, которые довольно дорогие — стоят тысячу или несколько десятков тысяч рублей. Они составляют «хвост» распределения, и он является довольно тяжелым. При работе с таким распределением, если алгоритм будет настраиваться на него, у него тоже могут возникнуть проблемы. Здесь нужно либо работать по отдельности с большинством книг, у которых цена вписывается в несколько сотен, и с дорогими книгами, или же как-то преобразовывать распределение этого признака, чтобы оно было более нормальным. Итак, мы обсудили основные типы признаков: это бинарные; вещественные; категориальные и порядковые; и множествозначные. Поговорили и о том, какие примеры этих признаков могут быть. А также обсудили две проблемы с признаками: они могут иметь выбросы, значение которых надо лучше выкинуть, а также могут быть проблемы в самом распределении признака, например слишком редкие значения или перекошенное распределение. На этом вводные лекции заканчиваются, и вам предстоит сделать задание по программированию, где вы посмотрите на реальные данные и заметите, какие могут быть проблемы в этих данных. А в следующем уроке мы уже начнем говорить о о реальных алгоритмах машинного обучения, а именно о линейных моделях.