Ядерная машина

Ядерные машины увеличивают размерность входных данных за счёт формирования дополнительных входных значений в виде нелинейных многомерных функций от объясняющих переменных - ядерных трюков (kernel tricks).

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

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

Поскольку алгоритм машинного обучения по методу Брауна-Робинсон-Решетова, который применяется в векторной машине Решетова обладает свойством авторедукции, то проблема чрезмерно высокой входной размерности при его использовании не возникает. Зато возникает иная проблема: обнаружить такие ядерные преобразования, которые с максимальной вероятностью могут увеличить значимость предикторов. Но и эта проблема лишь следствие другой более важной проблемы, а именно подбора значимых объясняющих переменных, из которых уже впоследствии можно с помощью различных математических преобразований получить значимые предикторы. А иначе, если объясняющие переменные не имеют никакой причинной связи по отношению к зависимым переменным, то никакие ядерные преобразования и никакие алгоритмы машинного обучения не дадут ничего кроме отсутствия обобщающей способности построенных моделей.

В libVMR ядерные машины расположены в пакете libvmr.kernelmachines

Базовым интерфейсом для расширения классов ядерных машин является KernelMachine

Для ядерных преобразований в данном интерфейсе предусмотрены два метода с одинаковыми идентификаторами, но различиями в аргументах:

public double[][] getTransformData(double[][] samples)

и

public double[] getTransformData(double[] sample)

Первый метод применяется для ядерных преобразований примеров из обучающей выборки (двумерного массива) до построения модели алгоритмом машинного обучения.

Второй метод применяется для ядерных преобразований примеров в виде одномерных массивов, предъявляемых уже готовой модели для классификации.

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

Юрий Решетов


Comments