В цифровых схемах и машинном обучении one -hot — это группа битов , среди которых допустимыми комбинациями значений являются только те, у которых есть один старший (1) бит и все остальные младшие (0). [1] Аналогичная реализация, в которой все биты равны «1», кроме одного «0», иногда называется one-cold . [2] В статистике фиктивные переменные представляют собой аналогичный метод представления категориальных данных .
Горячее кодирование часто используется для указания состояния конечного автомата . При использовании двоичного кода для определения состояния необходим декодер . Однако автомату с одним горячим состоянием не нужен декодер, поскольку автомат находится в n -м состоянии тогда и только тогда, когда n- й бит имеет высокий уровень.
Кольцевой счетчик с 15 последовательно упорядоченными состояниями является примером конечного автомата. В «горячей» реализации будет 15 триггеров , соединенных последовательно, причем выход Q каждого триггера подключен к входу D следующего, а вход D первого триггера подключен к выходу Q 15-го триггера. . Первый триггер в цепочке представляет первое состояние, второй — второе состояние и так далее до 15-го триггера, который представляет последнее состояние. После сброса конечного автомата все триггеры сбрасываются в «0», кроме первого в цепочке, который установлен в «1». Следующий фронт тактовой частоты, достигающий триггеров, перемещает один «горячий» бит на второй триггер. Таким образом, «горячий» бит перемещается до 15-го состояния, после чего конечный автомат возвращается в первое состояние.
Декодер адреса преобразует двоичное представление в горячее. Приоритетный кодер преобразует горячее представление в двоичное.
В обработке естественного языка горячий вектор — это матрица (вектор) размером 1 × N , используемая для различения каждого слова в словаре от любого другого слова в словаре. [5] Вектор состоит из 0 во всех ячейках, за исключением одной 1 в ячейке, которая используется уникально для идентификации слова. Горячее кодирование гарантирует, что машинное обучение не предполагает, что более высокие числа являются более важными. Например, значение «8» больше, чем значение «1», но это не делает «8» более важным, чем «1». То же самое справедливо и для слов: значение «смех» не более важно, чем «смех».
В машинном обучении горячее кодирование — это часто используемый метод работы с категориальными данными. Поскольку во многих моделях машинного обучения входные переменные должны быть числовыми, категориальные переменные необходимо преобразовать на этапе предварительной обработки. [6]
Категориальные данные могут быть как номинальными, так и порядковыми. [7] Порядковые данные имеют ранжированный порядок значений и поэтому могут быть преобразованы в числовые данные посредством порядкового кодирования. [8] Примером порядковых данных могут быть рейтинги теста в диапазоне от A до F, которые можно ранжировать с помощью чисел от 6 до 1. Поскольку между отдельными значениями номинальных переменных нет количественной связи, использование порядкового кодирования потенциально может создать в данных вымышленную порядковую связь. [9] Поэтому к номинальным переменным часто применяется горячее кодирование, чтобы улучшить производительность алгоритма.
Для каждого уникального значения в исходном категориальном столбце в этом методе создается новый столбец. Эти фиктивные переменные затем заполняются нулями и единицами (1 означает ИСТИНА, 0 означает ЛОЖЬ). [10]
Поскольку этот процесс создает множество новых переменных, он склонен к созданию проблемы «большого p» (слишком много предикторов), если в исходном столбце много уникальных значений. Еще одним недостатком горячего кодирования является то, что оно вызывает мультиколлинеарность между отдельными переменными, что потенциально снижает точность модели. [11]
Кроме того, если категориальная переменная является выходной переменной, вам может потребоваться преобразовать значения обратно в категориальную форму, чтобы представить их в вашем приложении. [12]
На практике это преобразование часто выполняется непосредственно функцией, которая принимает категориальные данные в качестве входных данных и выводит соответствующие фиктивные переменные. Примером может служить функция dummyVars библиотеки Caret в R. [13]
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )