[ЗАСТАВКА] В этом видео мы поговорим о том, как использовать категориальные признаки в линейных или других моделях. Мы уже приводили много примеров категориальных признаков. Это может быть город или цвет или, например, тарифный план у мобильного оператора или марка автомобиля. Особенность категориальных признаков в том, что это элементы некоторого неупорядоченного множества. Мы не можем говорить, что одно значение больше или меньше другого, можем только сравнивать их на равенство. А при этом в линейных моделях нам нужно брать значение признака, умножать его на вес и складывать с какими-то другими числами. Это нельзя делать со значениями категориальных признаков, их нужно как-то преобразовать, чтобы их можно было использовать в линейных моделях. Одним из наиболее популярных подходов к кодированию признаков, категориальных признаков, является бинарное кодирование. Давайте введем несколько обозначений, которые помогут нам понять, в чем оно заключается. Итак, представьте, что j-тый признак задачи категориальный. Значение j-того признака на объекте x будем обозначать, как fj (x). Допустим, он принимает n различных значений. Пронумеруем их. Обозначим эти значения, как c1, c2... cn. Чтобы закодировать данный признак, введем n новых бинарных признаков, которые обозначим, как b1 (x), b2 (x)... до bn (x). Значение i-того бинарного признака равно 1 только в том случае, если на данном объекте категориальный признак принимает значение ci. Если же он принимает какое-то другое значение, то i-тый признак будет равен 0. Таким образом, мы заменяем один категориальный признак на n бинарных, значения которых — это по сути числа, и из этих бинарных признаков единице равен только тот, который соответствует нашему значению категориального признака на этом объекте. Давайте разберем простой пример. Представьте, что j-тый признак — это цвет и он принимает три значения: синий, зеленый и красный. И у нас есть три объекта (x1, x2 и x3), на которых значение категориального признака равно «синий», «красный» и «синий», соответственно. Итак, категориальный признак принимает три значения. Нам понадобится три бинарных признака, чтобы его закодировать. Мы получим вот такую матрицу: первый столбец в ней, первый признак, соответствует значению «синий», второй — значению «зеленый», третий — значению «красный». И у нас есть три объекта, каждый из которых соответствует одной из строк. На первом и третьем объекте категориальный признак принимает значение «синий», значит, единица у них будет стоять в первом столбце. На втором объекте категориальный признак принимает значение «красный». Красный — это третий столбец, значит, единица стоит в третьем столбце. Эта матрица кодирует наш категориальный признак тремя бинарными. При этом вы можете столкнуться с такой проблемой: когда вы будете пытаться построить такое же кодирование для тестовой выборки, там может оказаться объект, на котором категориальный признак принимает новое, (n + 1)-е значение, которое вы не видели раньше на обучающей выборке. В этом случае логичным подходом будет не добавлять новый признак, это очень сложно, просто приравнять 0 все существующие признаки. Поскольку смысл наших бинарных признаков — это принимает ли категориальный признак то или иное значение от c1 до cn, то мы просто выставляем их равными 0, поскольку ни одно из них не получается на данном объекте. Итак, мы обсудили, что категориальные признаки нельзя непосредственно использовать в линейных моделях, и поговорили о том, как использовать бинарное кодирование, то есть кодирование одного категориального признака с помощью n бинарных, чтобы внедрять каким-то образом категориальные признаки в линейные модели. В следующем видео мы поговорим о том, как работать с задачами несбалансированной классификации.