В этом руководстве мы покажем, как использовать TPOT для автоматизации и оптимизации конвейеров машинного обучения на практике. Мы будем работать непосредственно в Google Colab, чтобы обеспечить лёгкость настройки, воспроизводимость и доступность.
Этапы работы
1. Загрузка данных.
2. Определение пользовательского счётчика (scorer).
3. Настройка пространства поиска с использованием продвинутых моделей, таких как XGBoost.
4. Настройка стратегии перекрёстной проверки (cross-validation).
Использование эволюционных алгоритмов в TPOT
Эволюционные алгоритмы в TPOT ищут высокоэффективные конвейеры, обеспечивая прозрачность через Pareto fronts и контрольные точки.
Установка библиотек
!pip -q install tpot==0.12.2 xgboost==2.0.3 scikit-learn==1.4.2 graphviz==0.20.3
Импорт модулей
“`python
import os, json, math, time, random, numpy as np, pandas as pd
from sklearn.datasets import loadbreastcancer
from sklearn.modelselection import traintest_split, StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import makescorer, f1score, classificationreport, confusionmatrix
from sklearn.pipeline import Pipeline
from tpot import TPOTClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, ExtraTreesClassifier, GradientBoostingClassifier
from xgboost import XGBClassifier
“`
Загрузка данных
“`python
SEED = 7
random.seed(SEED); np.random.seed(SEED); os.environ[“PYTHONHASHSEED”]=str(SEED)
X, y = loadbreastcancer(returnXy=True, as_frame=True)
Xtr, Xte, ytr, yte = traintestsplit(X, y, testsize=0.3, stratify=y, randomstate=SEED)
scaler = StandardScaler().fit(X_tr)
Xtrs, Xtes = scaler.transform(Xtr), scaler.transform(Xte)
“`
Определение пользовательского счётчика (scorer)
“`python
def f1costsensitive(ytrue, ypred):
return f1score(ytrue, ypred, average=’binary’, poslabel=1)
costf1 = makescorer(f1costsensitive, greaterisbetter=True)
“`
Настройка конфигурации TPOT
“`python
tpot_config = {
‘sklearn.linear_model.LogisticRegression’: {
‘C’: [0.01, 0.1, 1.0, 10.0],
‘penalty’: [‘l2’], ‘solver’: [‘lbfgs’], ‘max_iter’: [200]
},
‘sklearn.naive_bayes.GaussianNB’: {},
‘sklearn.tree.DecisionTreeClassifier’: {
‘criterion’: [‘gini’,’entropy’], ‘max_depth’: [3,5,8,None],
‘minsamplessplit’:[2,5,10], ‘minsamplesleaf’:[1,2,4]
},
‘sklearn.ensemble.RandomForestClassifier’: {
‘n_estimators’:[100,300], ‘criterion’:[‘gini’,’entropy’],
‘maxdepth’:[None,8], ‘minsamplessplit’:[2,5], ‘minsamples_leaf’:[1,2]
},
‘sklearn.ensemble.ExtraTreesClassifier’: {
‘n_estimators’:[200], ‘criterion’:[‘gini’,’entropy’],
‘maxdepth’:[None,8], ‘minsamplessplit’:[2,5], ‘minsamples_leaf’:[1,2]
},
‘sklearn.ensemble.GradientBoostingClassifier’: {
‘nestimators’:[100,200], ‘learningrate’:[0.03,0.1],
‘max_depth’:[2,3], ‘subsample’:[0.8,1.0]
},
‘xgboost.XGBClassifier’: {
‘nestimators’:[200,400], ‘maxdepth’:[3,5], ‘learning_rate’:[0.05,0.1],
‘subsample’:[0.8,1.0], ‘colsample_bytree’:[0.8,1.0],
‘reglambda’:[1.0,2.0], ‘minchild_weight’:[1,3],
‘njobs’:[0], ‘treemethod’:[‘hist’], ‘eval_metric’:[‘logloss’],
‘gamma’:[0,1]
}
}
“`
Запуск эволюционного поиска с TPOT
“`python
t0 = time.time()
tpot = TPOTClassifier(
generations=5,
population_size=40,
offspring_size=40,
scoring=cost_f1,
cv=cv,
subsample=0.8,
n_jobs=-1,
configdict=tpotconfig,
verbosity=2,
random_state=SEED,
maxtimemins=10,
early_stop=3,
periodiccheckpointfolder=”tpot_ckpt”,
warm_start=False
)
tpot.fit(Xtrs, y_tr)
print(f”\n First search took {time.time()-t0:.1f}s”)
“`
В этом руководстве мы показали, как использовать TPOT для автоматизации и оптимизации конвейеров машинного обучения. Мы загрузили данные, определили пользовательский счётчик (scorer), настроили пространство поиска и стратегию перекрёстной проверки. Затем мы запустили эволюционный поиск с TPOT и оценили лучшие кандидаты на тестовом наборе данных.
Для более подробной информации и полного кода, пожалуйста, посетите [GitHub Page for Tutorials, Codes and Notebooks](ссылка).
1. Какие этапы работы с данными и настройкой моделей описаны в статье для автоматизации и оптимизации конвейеров машинного обучения с помощью TPOT?
В статье описаны следующие этапы работы:
* Загрузка данных.
* Определение пользовательского счётчика (scorer).
* Настройка пространства поиска с использованием продвинутых моделей, таких как XGBoost.
* Настройка стратегии перекрёстной проверки (cross-validation).
2. Какие библиотеки и модули импортируются для работы с TPOT в Google Colab?
Для работы с TPOT в Google Colab импортируются следующие библиотеки и модули:
* os;
* json;
* math;
* time;
* random;
* numpy как np;
* pandas как pd;
* sklearn.datasets;
* sklearn.model_selection;
* sklearn.preprocessing;
* sklearn.metrics;
* sklearn.pipeline;
* tpot;
* sklearn.linear_model;
* sklearn.naive_bayes;
* sklearn.tree;
* sklearn.ensemble;
* xgboost.
3. Какие модели используются для настройки пространства поиска в TPOT?
В TPOT для настройки пространства поиска используются продвинутые модели, такие как XGBoost, а также следующие модели:
* sklearn.linear_model.LogisticRegression;
* sklearn.naive_bayes.GaussianNB;
* sklearn.tree.DecisionTreeClassifier;
* sklearn.ensemble.RandomForestClassifier;
* sklearn.ensemble.ExtraTreesClassifier;
* sklearn.ensemble.GradientBoostingClassifier;
* xgboost.XGBClassifier.
4. Какие параметры используются для настройки конфигурации TPOT?
Для настройки конфигурации TPOT используются следующие параметры:
* Параметры для sklearn.linear_model.LogisticRegression.
* Параметры для sklearn.naive_bayes.GaussianNB.
* Параметры для sklearn.tree.DecisionTreeClassifier.
* Параметры для sklearn.ensemble.RandomForestClassifier.
* Параметры для sklearn.ensemble.ExtraTreesClassifier.
* Параметры для sklearn.ensemble.GradientBoostingClassifier.
* Параметры для xgboost.XGBClassifier.
Например, для LogisticRegression задаются параметры C, penalty, solver и maxiter, а для XGBClassifier — nestimators, maxdepth, learningrate и другие.