Я пытаюсь построить классификационную модель, которая классифицирует пользователя как «удовлетворенного» или «неудовлетворенного» на основе его прошлых сообщений о взаимодействии с компанией.
Класс «1» означает «не удовлетворен», а класс «0» - «удовлетворен»
Я предварительно обработал все документы / сообщения и создал Count Vectorizer. Без установки каких-либо гиперпараметров, я получил около 300000 дополнительных функций / слов.
payment failed worst solved . . . . . . Class
doc1 0 0 1 0 1
doc2 1 1 0 1 0
doc3 1 1 1 0 1
doc4 0 0 0 0 0
doc5 1 0 0 0 0
doc6 0 0 1 0 1
.
.
.
.
.
Теперь я думаю о том, как рассчитать вероятность неудовлетворенности пользователя данным Словом для всех слов в матрице, отсортировать значения вероятности и, наконец, выбрать 1000 лучших слов для предсказания.
#Prob of word being present given the user is not satisfied
P(Word | Not Satisfied) = len(data[(data.class==1) & (data.Word==1)])/len(data[data.class==1])
#Prob of word being present given the user is satisfied
P(Word | Satisfied) = len(data[(data.class==0) & (data.Word==1)])/len(data[data.class==0])
P(Not Satisfied) = len(data[data.class==1])/len(data)
P(Satisfied) = 1 - P(Not Satisfied)
#Final Formula
P(Not Satisfied | Word) = P(Word | Not Satisfied)*P(Not Satisfied)/((P(Word | Not Satisfied)*P(Not Satisfied) + P(Word | Satisfied)*P(Satisfied))
Но я подумал спросить другие предложения у этого сообщества ..
Какой, по вашему мнению, лучший подход для выбора лучших функций .. ??