Я использую scikitlearn в Python для запуска некоторых базовых моделей машинного обучения. Используя встроенную функцию GridSearchCV (), я определил «лучшие» параметры для различных методов, но многие из них работают хуже, чем значения по умолчанию. Я включаю параметры по умолчанию в качестве опции, поэтому я удивлен, что это произойдет.
Например:
from sklearn import svm, grid_search
from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(verbose=1)
parameters = {'learning_rate':[0.01, 0.05, 0.1, 0.5, 1],
'min_samples_split':[2,5,10,20],
'max_depth':[2,3,5,10]}
clf = grid_search.GridSearchCV(gbc, parameters)
t0 = time()
clf.fit(X_crossval, labels)
print "Gridsearch time:", round(time() - t0, 3), "s"
print clf.best_params_
# The output is: {'min_samples_split': 2, 'learning_rate': 0.01, 'max_depth': 2}
Это то же самое, что и по умолчанию, за исключением того, что max_depth равно 3. Когда я использую эти параметры, я получаю точность 72% по сравнению с 78% от значения по умолчанию.
Одна вещь, которую я сделал, что я признаю подозрительной, заключалась в том, что я использовал весь свой набор данных для перекрестной проверки. Затем, получив параметры, я запустил его, используя тот же набор данных, разделенный на 75-25 тренировок / тестов.
Есть ли причина, по которой при поиске по сетке не учитывались "превосходные" значения по умолчанию?
cross_validation
схеме? - person juanpa.arrivillaga   schedule 21.04.2017