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