Как оптимизировать нейронную сеть для двоичной классификации?Python

Программы на Python
Ответить
Anonymous
 Как оптимизировать нейронную сеть для двоичной классификации?

Сообщение Anonymous »

Я пытаюсь решить задачу двоичной классификации. Исходный набор данных был сильно несбалансирован, например 90% 10%, потому что это обнаружение мошенничества, поэтому я использовал Smote, чтобы сделать его 70% 30%, а затем использовал class_weights. Размер набора данных составляет около 50000x16.
Я использовал мелкую нейронную сеть, как показано ниже.
# Define model
model = Sequential([
tf.keras.layers.Input(shape=(16,)),
Dense(128, activation='relu'),
Dense(64, activation='relu'),
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])

model.compile(optimizer=Adam(learning_rate=0.001),
loss='binary_crossentropy',
metrics=['F1Score'])

early_stop = EarlyStopping(monitor='val_loss', patience=20, restore_best_weights=True)

history = model.fit(
x_resampled, y_resampled,
validation_data=(x_valid_norm, y_valid),
epochs=200,
batch_size=256,
class_weight=class_weights,
callbacks=[early_stop]
)


Это продолжается около 30-50 эпох, а затем рано прекращается. Я получаю ужасные результаты, значительно хуже, чем Random Forest или XGBoost
Я пробовал разные функции активации, разные скорости обучения, добавляю еще 1 слой, удаляю один, добавляю/удаляю нейроны, ничего не кажется для улучшения результатов.
F1 score in train set: 0.9068713401925431
F1 score in validation set: 0.3754874651810585


Подробнее здесь: https://stackoverflow.com/questions/793 ... sification
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»