Machine learning
NewTechAudit
76

Алгоритм балансировки классов Smote

Во время обучения модели столкнулись с несбалансированными данными? Расскажем вам об инструменте, который поможет решить данную задачу.

В закладки

При создании модели, с применением методов ML и использования модели с учителем, можно столкнуться с проблемой несбалансированности классов в обучающей выборке.

В Dataset количество записей одного класса может быть очень мало, а другого класса, наоборот, велико. В результате, при использовании алгоритмов ML, чувствительные к балансу классы алгоритма переобучаются.

Для решения таких задач, как правило, применяется Oversampling или задаются веса определенному классу.

При решении нашей задачи, классы в которой были крайне несбалансированны, удалось достичь улучшения метрик модели путем применения алгоритма.

Представленный алгоритм генерирует определенное количество похожих примеров класса с меньшим количеством данных, но при этом не дублирует данные в этом классе.

Такой алгоритм балансировки классов называется SMOTE (Synthetic Minority Oversampling Technique).

Ниже приведен пример применения балансировки классов:

os.environ ['PATH'] += os.pathsep + 'C:\\Users\\Kate\\Anaconda3\\pkgs' from imblearn.over_sampling import SMOTE sm = SMOTE (#sampling_strategy = 0.9, random_state=0, k_neighbors=4) X_train_res, y_train_res = sm.fit_sample (X_train, y_train) print ("Before OverSampling, counts of label '1': { }".format (sum (y_train==1))) print ("Before OverSampling, counts of label '0': { } \n".format (sum (y_train==0))) print ('After OverSampling, the shape of train_X: { }'.format (X_train_res.shape)) print ('After OverSampling, the shape of train_y: { } \n'.format (y_train_res.shape)) print ("After OverSampling, counts of label '1': { }".format (sum (y_train_res==1))) print ("After OverSampling, counts of label '0': { }".format (sum (y_train_res==0))) Before OverSampling, counts of label '1': 4058 Before OverSampling, counts of label '0': 296 After OverSampling, the shape of train_X: (8116, 49) After OverSampling, the shape of train_y: (8116, ) After OverSampling, counts of label '1': 4058 After OverSampling, counts of label '0': 4058
Лайфхаки IT, проверенные AI-решения для стандартных задач
{ "author_name": "NewTechAudit", "author_type": "editor", "tags": ["sampling_strategy"], "comments": 0, "likes": 0, "favorites": 0, "is_advertisement": false, "subsite_label": "ml", "id": 129738, "is_wide": true, "is_ugc": false, "date": "Tue, 26 May 2020 11:13:14 +0300", "is_special": false }
Сбербанк
Что такое Sbergile и чем он отличается от Agile
Сбербанк работает по Agile. Точнее по Sbergile. Но даже опытные специалисты не всегда улавливают разницу, а новички…
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Комментарии