У меня довольно неинтуитивная проблема.Я делаю анализ настроений в обзорах Amazon Book, и набор данных сильно несбалансирован.Положительные отзывы почти в 10 раз превышают отрицательные, точность как для обучения, так и для тестирования составляет около 90% (с несбалансированным набором данных).Однако когда я пытаюсь сбалансировать набор данных с помощью class_weight = {0:10 , 1:1}
, точность обучения и тестирования падает примерно до 65%.Опять же, если я снова сделаю class_weight = {0:1 , 1:10}
точность, то, очевидно, я устанавливаю class_weight
неправильно, но, как я понял, количество положительных отзывов (1) в 10 раз превышает количество отрицательных отзывов (0), неclass_weight
быть установленным как {0:10, 1: 1}?
Вот как я классифицирую данные обучения и тестирования:
x_train, x_test, y_train, y_test = train_test_split(sequences,labels, test_size = 0.33, random_state = 42)
Это моя модель:
model = Sequential()
model.add(Embedding(max_words, embedding_dim))
model.add(Dropout(0.5))
model.add(LSTM(32, dropout=0.5, recurrent_dropout=0.5))
model.add(Dense(2, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy',metrics=['acc'])
model.fit(x_train, y_train, epochs=10, batch_size=320, class_weight = {0:1 , 1:10})