УДК 004.021

Повышения эффективности прогнозирования данных, применяя комбинирование алгоритмов

Чумаков Владислав Евгеньевич – магистрант по направлению "Интеллектуальные системы и технологии" Института сферы обслуживания и предпринимательства (филиал) Донского государственного технического университета в г. Шахты.

Аннотация: В данной статье рассматриваются алгоритмы использования машинного обучения. Анализ и преобразование больших данных, посредством машинного обучения для нахождения наиболее важных и полносвязнных атрибутов. Иллюстрируется практическая работа с существующим датасетом. Описываются преимущества использования комбинаторной логики по сравнению с отдельно взятыми алгоритмами.

Ключевые слова: Логистическая регрессия, машинное обучение, ансамбль методов, дерево принятия решение, метод опорных векторов.

Введение

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

Logistic Regression

Данный алгоритм использует логистическую функцию для моделирования бинарной зависимой переменной [1]. Применив такую регрессию с определенными параметрами получим точность, равную 78 процентов:

logis = LogisticRegression(penalty='l2', C=0.3, class_weight = "balanced")
Logistic_regression_cv=classification_cv(logis)
Logistic_regression_cv

Accuracy: 0.785 (0.047)

Decision Tree Model

Рассматриваемый алгоритм применяется, как последовательность ветвящихся операций, которые основаны на сравнениях некоторых величин [2]. Применив данный алгоритм, с входными параметрами, получим точность, равную 71 процент:

dtree = tree.DecisionTreeClassifier(max_depth=4, criterion='gini', class_weight="balanced", min_weight_fraction_leaf=0.01)
dtree.fit(X_train_transformed, y_train)

Decision Tree accuracy is 0.71

Random Forest Classifier

Такой алгоритм соответствует ряду классификаторов для различных подвыборок данных и использует усреднение для повышения точности и переопределения контроля [3]. Точность такого алгоритма равна 77 процентов:

rf = RandomForestClassifier(
 n_estimators=100, 
 max_depth=6, 
 min_samples_split=10, 
 class_weight="balanced",
 random_state=100
 )

Accuracy: 0.773 (0.063)

Support Vector Machines (SVM)

Выбранный алгоритм, учитывая помеченные обучающие данные выводит оптимальную гиперплоскость, которая должна классифицировать новые примеры [4]. Применив данный алгоритм получим точность в 79 процентов:

clf = SVC(kernel="linear", C=0.35, probability=True, random_state=100)

Accuracy: 0.796 (0.049)

Если произвести вывод зависимостей “true positive rate” от “false positive rate”, можно увидеть общую оценку качества работы каждого алгоритма на рисунке 1.

Рисунок 1. Оценка качества алгоритма.

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

Применив описанный метод, сгруппируем два алгоритма, которые имеют средние показатели, а именно Random Forest и Gradient Boosting. После чего получим точность в 80 процентов:

eclf_1 = VotingClassifier(estimators=[('rf', rf), ('gbc', gbc)], voting='soft', weights=[1,2])

eclf_1.fit(X_train_1, y_train_1)

print ("\n\n ---Ensembled Gradient Boost and Random Forest---")
eclf_1_roc_auc = roc_auc_score(y_test_1, eclf_1.predict(X_test_1))
print (" AUC = %2.2f" % eclf_1_roc_auc)
print(classification_report(y_test_1, eclf_1.predict(X_test_1)))
print(confusion_matrix(y_test_1, eclf_1.predict(X_test_1)))
print (" accuracy is %2.2f" % accuracy_score(y_test_1, eclf_1.predict(X_test_1) ))

---Ensembled Gradient Boost and Random Forest---

 AUC = 0.79

precision recall f1-score support

0 0.85 0.81 0.83 143

1 0.72 0.77 0.74 88

avg / total 0.80 0.80 0.80 231

[[116 27]

 [ 20 68]]

 accuracy is 0.80

После применения описанного метода можно повторно вывести зависимость “true positive rate” от “false positive rate”, в следствии чего увидим, что метод ансамбля получает высшую точность прогнозирования по сравнению с усредненной точностью отдельно взятых алгоритмов:

Рисунок 2. Оценка метода ансамбля.

Вывод

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

Список литературы

  1. Jason Brownlee. Machine Learning Mastery// machinelearningmastery.com. URL: https://machinelearningmastery.com/logistic-regression-for-machine-learning/ (дата обращения: 22.12.2019).
  2. Brid S.R. Introduction to Decision Trees. // medium.com. URL: https://medium.com/greyatom/decision-trees-a-simple-way-to-visualize-a-decision-dc506a403aeb (дата обращения 23.12.2019).
  3. Scikit Learn. // scikit-learn.org. URL: https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html (дата обращения 24.12.2019).
  4. Patel Savan. SVM – Theory. // medium.com. URL: https://medium.com/machine-learning-101/chapter-2-svm-support-vector-machine-theory-f0812effc72 (дата обращения 24.12.2019).

Интересная статья? Поделись ей с другими: