Фактические символы, используемые (0) при использовании rpart () в R - PullRequest
1 голос
/ 07 апреля 2019

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

> str(reviewtokensdf)
'data.frame':   500 obs. of  270 variables:
 $ recommend       : Factor w/ 2 levels "0","1": 1 2 2 1 2 2 1 2 2 2 ...
 $ made            : num  3 0 0 0 0 0 1 0 0 0 ...
 $ site            : num  1 1 0 0 0 0 0 0 0 0 ...
 $ use             : num  1 0 0 0 1 0 0 0 0 0 ...
 $ one             : num  2 1 0 0 0 0 0 0 0 0 ...
 $ will            : num  1 1 1 0 0 0 0 0 0 0 ...
 $ make            : num  2 1 0 0 1 0 0 0 0 1 ...
 $ book            : num  6 0 0 0 3 0 0 0 0 0 ...
 $ place           : num  3 0 0 0 0 1 0 0 0 0 ...
 $ stay            : num  1 0 0 0 0 0 0 0 0 0 ...
 $ night           : num  1 0 0 2 0 0 0 0 0 1 ...
 $ arriv           : num  1 0 0 0 1 0 0 0 0 0 ...
 $ small           : num  1 0 0 0 0 0 0 0 0 0 ...
 $ floor           : num  1 0 0 3 0 0 1 0 0 0 ...

Теперь я использую меньшее подмножество (n = 500) только для целей тестирования, но это не должно быть проблемой. Я широко использовал это ( https://medium.com/analytics-vidhya/customer-review-analytics-using-text-mining-cd1e17d6ee4e) учебник для руководства, но я продолжаю сталкиваться с этой проблемой:

Когда я использую этот код:

tree = rpart(formula = recommend ~ ., data = reviewtokensdf,  method="class",control = rpart.control(minsplit = 200,  minbucket = 30, cp = 0.0001))
printcp(tree)

Я ожидаю увидеть хотя бы несколько слов в «переменных, фактически используемых в построении дерева: раздел, но он остается на 0, и я понятия не имею, почему.

    Classification tree:
    rpart(formula = recommend ~ ., data = reviewtokensdf, method = "class", 
        control = rpart.control(minsplit = 200, minbucket = 30, cp = 1e-04))

    Variables actually used in tree construction:
    character(0)

    Root node error: 40/500 = 0.08

    n= 500 

      CP nsplit rel error xerror xstd
    1  0      0         1      0    0

Я попытался разбить аргументы rpart только на основы (так что снимая rpart.control и т. Д.) Без всяких кубиков. Я пробовал что-то вроде reviewtokensdf $, рекомендуемое в поле формулы, тот же результат.

Когда я запускаю пример данных из упомянутого мною руководства, все нормально и круто. И все же я не вижу разницы.

1 Ответ

1 голос
/ 07 апреля 2019

Проблема с вашим rpart.control. Это могло быть хорошо отрегулировано когда у вас есть полный набор данных с тысячами документов, но только с 500, это плохой выбор. Попробуйте

rpart.control(minsplit = 20, minbucket = 5, cp = 0.01)

и вы, вероятно, разделите некоторые узлы. Я НЕ говорю, что это хороший выбор, но они были бы лучшей отправной точкой. Посмотри что получится и настроить.

...