Как кодировать факторные предикторы в моделях прогнозирования - PullRequest
0 голосов
/ 20 октября 2019

Переменная ответа, а также все переменные предиктора в моем наборе данных являются факторами. Я хочу построить модель для прогнозирования переменной ответа. Как я понимаю, я должен сначала закодировать мои переменные предиктора. Мне нужно посоветовать, как сделать то же самое в R.

Я пытался построить модели knn & Random Forest, но это не работает, так как выполнение никогда не завершалось.

"rs" - этопеременная ответа и все остальные являются переменными предикторами. «bt» зависит от «td», но другие полностью независимы.

Ниже приведена структура моего фрейма данных.

    > str(df)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   17520 obs. of  10 variables:
 $ rs  : Factor w/ 8 levels "0","1","2","3",..: 1 5 1 3 3 3 2 1 5 8 ...
 $ bno : Factor w/ 135 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ bttm: Factor w/ 13 levels "tm 1","tm 10",..: 5 12 10 7 10 12 1 13 7 6 ...
 $ bwtm: Factor w/ 13 levels "tm 1","tm 10",..: 11 11 7 9 9 8 12 11 4 9 ...
 $ bts : Factor w/ 348 levels "pl 100","pl 101",..: 207 295 114 246 328 318 312 14 147 118 ...
 $ tw  : Factor w/ 13 levels "tm 1","tm 10",..: 7 9 5 12 5 1 11 8 9 7 ...
 $ td  : Factor w/ 2 levels "b","f": 1 2 2 1 1 2 1 2 1 2 ...
 $ bwl : Factor w/ 282 levels "pl 10","pl 106",..: 60 160 123 71 139 9 109 229 6 148 ...
 $ bt  : Factor w/ 2 levels "1","2": 1 2 1 2 1 2 1 2 1 2 ...
 $ ven : Factor w/ 41 levels "v 1","v 10","v 11",..: 6 21 35 26 34 13 23 10 17 25 ...
> 

Я хотел бы знать подход, который я выберу, и код длякодировать переменные предиктора.

1 Ответ

0 голосов
/ 20 октября 2019

Если вы используете древовидные методы, вам не нужно кодировать свои переменные.

Использование knn для таких данных не очень хорошая идея, потому что у вас есть только категориальные переменные. Если мы закодируем их, ваша матрица будет чрезвычайно разреженной, а использование алгоритма, который вычисляет расстояния между вашими точками по их координатам, будет чрезвычайно трудоемким и вводящим в заблуждение.

Вы можете попытаться уменьшить количество своих категорий, обновив своиуровни факторов. Например, ваш bts вектор имеет 348 различных категорий. Есть ли какие-либо категории, у которых наблюдения меньше, например, 10? Среди 348 может быть много групп с ограниченным числом наблюдений. Вы можете сгруппировать эти категории в одну . Если вы примените его к другим векторам, таким как bwl и bno, размер вашего фрейма данных значительно уменьшится в случае выполнения кодирования. Даже если вы не выполняете кодирование, это поможет алгоритму на основе дерева занять меньше времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...