В настоящее время я подхожу к проблеме классификации в следующей ситуации:
Метки всегда имеют длину 5 цифр, например:
99923 this is sample document one
56743 this is sample document two
...
, где первая единичная цифра обозначает определеннуюкатегория, каждая следующая цифра для подкатегории и так далее.
В настоящее время я использую Keras со следующими настройками:
model = Sequential()
model.add(Dense(512, input_shape=(vocab_size,)))
model.add(Activation('relu'))
model.add(Dropout(0.3))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.3))
model.add(Dense(num_labels))
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
Поскольку мои тренировочные данные ограничены (всего около 80 тыс. Выборок), я решил использовать только первую цифру для оценкиОсновная категория и я получили довольно хорошие результаты с точностью ~ 90% без какой-либо предварительной обработки, которую еще предстоит сделать.
5 - this is sample of maincategory 5
9 - this is sample of maincategory 9
...
Теперь я хотел подойти к уровню дальше и использовать две цифры, чтобы предсказать основнуюкатегория и первая подкатегория.Это привело меня к проблеме, заключающейся в том, что зачастую нет ни одного образца, например, для комбинации «12».
51 - this is sample of maincategory 51
95 - this is sample of maincategory 95
...
Я сказал Keras использовать этикетки только по крайней мере с одним образцом (зная, что это дерьмо) и набрал около 40 этикеток с общей точностью 85%, что кажется довольно хорошим, учитывая тот факт, что я потерял много образцов.
У меня вопрос :
Можно ли сделать такой прогноз более простым / эффективным?Если бы я позволил моей "двузначной" модели предсказать невидимую выборку из категории, которая не была обучена, я столкнулся бы с проблемой подбора выборки в неправильную категорию ...
Могу ли ярешить эту проблему прогнозирования с помощью Keras?