Я пытаюсь применить ансамблевый подход к моей модели двоичной классификации спама. Спам-изображения - это любое изображение в мире, которое не является изображением вопроса, написанного от руки или учебника . У меня есть не-спам изображения:
So these images follow some interesting patterns
- Most of the images have
width>height
so I extracted a feature of the ratio
- Most of the images are having light background with dark foreground so I calculated
grayscale_image.std()
- I used the method to вычислить красочность изображения с помощью OpenCv на основе статьи Хаслера и Зюстранка 2003 года и обнаружил, что большая часть моих
Non-spam Image
(почти 97,5%) попадает в диапазон <= 20,0, а 99,1% - в диапазон <= 30. Но для изображений спама оно увеличивается до 150. </li>
Итак, я пытаюсь использовать эти 3 функции в своей модели. Я использую этот первый раз, поэтому понятия не имею, как мне использовать Ensemble. Давайте предположим, что у меня есть обученная модель CNN с 1 плотным слоем из 256 нейронов и последним слоем Sigmoid
с 1 нейроном. (или Softmax with 2
)
in_ = Input(shape)
...
....
second_last = Dense(256,activation='relu')(prev_out)
out_ = Dense(1,activation='sigmoid')(second_last)
model = Model(in_,out_)
Таким образом, мои 2 вывода кандидатов после обучения будут:
- probs = model.predict (X_train)
- model2 = Model (in_, second_last) -> feat_254 = model2.predict (X_train)
- Должен ли я использовать Вероятности последнего слоя или Второй последний слой 256 особенности ? Таким образом, это будет метод последовательного повышения, в котором SVM использует выходные данные CNN.
- Или мне следует использовать только эти 3 функции с
Average Voting
или Weighted Voting
(с весами, присвоенными каждой модели на основе какова оценка% f-1 для каждой модели) для окончательных вероятностей?
Какой вариант должен давать лучшие результаты? Может ли кто-нибудь предоставить фиктивный код и для этого?