Я новичок в машинном обучении, и у меня есть вопрос относительно результатов поиска по сетке, чтобы найти лучшие гиперпараметры C и гаммы для SMOreg.
Я выполняю поиск по сетке, чтобы найти лучший C и гамма, которая даст мне самую высокую корреляцию. Я использую GridSearch, как показано ниже:
weka.classifiers.meta.GridSearch -E CC -y-свойство kernel.gamma -y-min -3.0 -y-max 3.0 -y- step 1.0 -y-base 10.0 -y-выражение pow (BASE, I) -x-свойство C -x-min -3.0 -x-max 3.0 -x step 1.0 -x-base 10.0 -x-выражение pow (BASE, I) -Sample-size 100.0 -ROW-WISE -log-file "D: \ Program Files \ Weka-3-9-4" -num-slots 1 -S 1 -W weka.classifiers.functions. SMOreg - - C 1,0 -N 0 -I "weka.classifiers.functions.supportVector.RegSMOImproved -T 0,001 -V -P 1.0E-12 -L 0,001 -W 1" -K "weka.classifiers.functions. supportVector.RBFKernel - C 250007 -G 0,01 "
Как показано выше, я установил оценку в CC (коэффициент корреляции), XProperty в C и YProperty в kernel.gamma с параметрами C и гаммой в диапазоне от 10 ^ -3,10 ^ -2,10 ^ -1,1,10,100 и 1000. Следует отметить, что я использую SMOreg в качестве базового классификатора и RBFKernel в качестве функция ядра. Кроме того, я установил метрики оценки в Correlation, MAE, RMSE и MAPE.
Вывод гиперпараметра GridSearch показан ниже:
weka.classifiers.meta.GridSearch: Классификатор: weka.classifiers.functions.SMOreg - C 1.0 -N 0 -I "weka.classifiers.functions.supportVector.RegSMOImproved -T 0,001 -V -P 1.0E-12 -L 0,001 -W 1" -K " weka.classifiers.functions.supportVector.RBFKernel - C 250007 -G 10,0 "
X свойство: C
Y свойство : kernel.gamma
Оценка: коэффициент корреляции
Координаты: [0,0, 1,0]
Значения: 1,0 (координата X), 10,0 (координата Y)
Смысл этого результата в том, что наилучшее значение для C равно 1, а лучшая гамма равна 10
В конце результата GridSearch отображаются следующие сводные данные:
=== Сводка ===
Коэффициент корреляции 0,945
средняя абсолютная ошибка в процентах 0,1434
средняя абсолютная ошибка 3,8465
Root средняя квадратическая ошибка 5.5417
Общее количество экземпляров 309
Это означает, что при использовании C = 1 и гамма = 10 соответственно результат прогнозирования должен быть одним показано в сводке выше.
Однако, когда я выполняю SMOreg с тем же набором данных, используя лучшие параметры, полученные из GridSearch (C = 1 и gamma = 10), я получаю разные результаты, как показано ниже:
Классификатор:
weka.classifiers.functions.SMOreg - C 1.0 -N 0 -I "weka.classifiers.functions.supportVector.RegSMOImproved -T 0,001 -V -P 1.0E-12 -L 0.001 -W 1 "-K" weka.classifiers.functions.supportVector.RBFKernel - C 250007 -G 10.0 "
Выход:
=== Сводная информация ===
Коэффициент корреляции 0,9417
Средний абсолютный процент ошибка 0,1381
средняя абсолютная ошибка 3,7672
Root средняя квадратическая ошибка 5,7114
всего Количество экземпляров 309
Забавно, что если я инвертирую лучший результат гиперпараметров (C = 10, гамма = 1), я получу результат, совершенно аналогичный результату прогноза GridSearch:
Классификатор:
weka.classifiers.functions.SMOreg - C 10.0 -N 0 -I "weka.classifiers.functions.supportVector.RegSMOImproved -T 0.001 -V -P 1.0E -12 -L 0. 001 -W 1 "-K" weka.classifiers.functions.supportVector.RBFKernel - C 250007 -G 1.0 "
Выход:
=== Резюме ===
Коэффициент корреляции 0,945
Средняя абсолютная процентная ошибка 0,1434
Среднее абсолютное ошибка 3,8465
Root средняя квадратическая ошибка 5,5417
общее количество экземпляров 309
Кто-нибудь знает почему это происходит?
Еще одна вещь: в GridSearch максимальное пространство поиска для C и гаммы равно 1000. Однако я попытался использовать C = 100 и gamma = 1, и это дало лучше / более высокий коэффициент корреляции по сравнению с лучшими гиперпараметрами согласно GridSearch, который равен C = 1 и гамме = 10. Почему GridSearch не дал наилучших результатов?
Спасибо.