Методы ядра могут использоваться для контролируемых и неконтролируемых проблем. Хорошо известными примерами являются машина опорных векторов и спектральная кластеризация ядра соответственно.
Методы ядра предоставляют структурированный способ использования линейного алгоритма в преобразованном пространстве признаков, для которого преобразование обычно является нелинейным (и в пространство более высокого измерения). Основное преимущество, которое дает этот так называемый трюк ядра, заключается в том, что нелинейные шаблоны можно найти при разумных вычислительных затратах.
Обратите внимание, что я сказал, что вычислительные затраты разумны, но не пренебрежимо малы. Методы ядра обычно создают матрицу ядра с числом обучающих экземпляров. Поэтому сложность методов ядра является функцией количества обучающих экземпляров, а не количества входных измерений. Например, машины опорных векторов имеют сложность обучения между и . Для проблем с очень большим , эта сложность в настоящее время запредельна.K ∈ RN× NNO ( N2)O ( N3)N
Это делает методы ядра очень интересными с вычислительной точки зрения, когда число измерений велико, а количество выборок относительно мало (скажем, менее 1 миллиона).
Связанный: линейное ядро и нелинейное ядро для опорных векторов машин?
SVM для крупномасштабных задач
Для задач с очень большими измерениями, такими как 10000
измерения, которые вы упоминаете в вопросе, часто нет необходимости отображать пространство пространственных объектов более высокого измерения. Пространство ввода уже достаточно хорошо. Для таких задач линейные методы на несколько порядков быстрее с почти такой же прогнозирующей эффективностью. Примеры этих методов можно найти в LIBLINEAR или Vowpal Wabbit .
Линейные методы особенно интересны, когда у вас много выборок в многомерном пространстве ввода. Когда у вас есть только выборок, использование нелинейного метода ядра также будет дешевым (так как мало). Если бы у вас было, скажем, образцов в измерений, методы ядра были бы невозможны.500N5.000.00010,000
Для задач малой размерности со многими обучающими примерами (так называемые задачи с большим малым ) линейные методы могут дать плохую точность прогнозирования. Для таких задач методы ансамбля, такие как EnsembleSVM, обеспечивают нелинейные границы принятия решений при значительно меньших вычислительных затратах по сравнению со стандартным SVM.Nп
RBF
ядроlibsvm
, оно всегда переоснащается, классификатор достигает высокой точности, но низкой точности в тестовом наборе. И если я делаю уменьшение измерений перед классификатором, а уменьшенные измерения близки к количеству обучающих выборок, классификатор может достичь хорошей прибыли между обучением и тестированием. Соответствуют ли результаты наиболее эмпирическим результатам? Спасибо.gamma
для ядра RBF. Оптимальное значение дляgamma
связано с количеством входных измерений. Наиболее распространенным подходом к настройке является перекрестная проверка. Если вы использовали одно и то же значение дляgamma
уменьшения размерности и без него, вы, вероятно, ошиблись.grid.py
вlibsvm
пакете, чтобы сделать перекрестную проверку. И в большинстве случаев для данных больших размеровgamma
всегда очень маленький, например0.00001
, этот уровень.EnsembleSVM
, нужно ли сделать процедуру перекрестной проверки многопоточностью? И я думаю, что на этапе прогнозирования будет хорошо, если прогнозировать огромные данные в пакетах и многопоточности или на нескольких машинах?esvm-train
иesvm-predict
. Чтобы отключить многопоточность, используйте следующий флаг в этих инструментах:-threads 1
.