templateKernel

Шаблон модели Kernel

Описание

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

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

пример

t = templateKernel() возвращает шаблон модели ядра.

Если вы создаете шаблон по умолчанию, то программное обеспечение использует значения по умолчанию для всех входных параметров во время обучения.

пример

t = templateKernel(Name,Value) возвращает шаблон с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно реализовать логистическую регрессию или задать количество размерностей расширенного пробела.

Если вы отображаете t в Командном окне, затем некоторые свойства t кажитесь пустыми ([]). Во время обучения программное обеспечение использует значения по умолчанию для пустых свойств.

Примеры

свернуть все

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

Загрузите ирисовый набор данных Фишера.

load fisheriris

Создайте шаблон модели ядра по умолчанию.

t = templateKernel()
t = 
Fit template for classification Kernel.

             BetaTolerance: []
                 BlockSize: []
             BoxConstraint: []
                   Epsilon: []
    NumExpansionDimensions: []
         GradientTolerance: []
        HessianHistorySize: []
            IterationLimit: []
               KernelScale: []
                    Lambda: []
                   Learner: 'svm'
              LossFunction: []
                    Stream: []
            VerbosityLevel: []
                   Version: 1
                    Method: 'Kernel'
                      Type: 'classification'

Во время обучения программное обеспечение заполняет пустые свойства с их соответствующими значениями по умолчанию.

Задайте t как бинарный ученик для модели мультикласса ECOC.

Mdl = fitcecoc(meas,species,'Learners',t)
Mdl = 
  CompactClassificationECOC
      ResponseName: 'Y'
        ClassNames: {'setosa'  'versicolor'  'virginica'}
    ScoreTransform: 'none'
    BinaryLearners: {3x1 cell}
      CodingMatrix: [3x3 double]


  Properties, Methods

Mdl CompactClassificationECOC классификатор мультикласса.

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

t = templateKernel('Learner','logistic','KernelScale','auto')
t = 
Fit template for classification Kernel.

             BetaTolerance: []
                 BlockSize: []
             BoxConstraint: []
                   Epsilon: []
    NumExpansionDimensions: []
         GradientTolerance: []
        HessianHistorySize: []
            IterationLimit: []
               KernelScale: 'auto'
                    Lambda: []
                   Learner: 'logistic'
              LossFunction: []
                    Stream: []
            VerbosityLevel: []
                   Version: 1
                    Method: 'Kernel'
                      Type: 'classification'

Входные параметры

свернуть все

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Learner','logistic','NumExpansionDimensions',2^15,'KernelScale','auto' задает, чтобы реализовать логистическую регрессию после отображения данных о предикторе к 2^15 мерное пространство с помощью расширения функции с масштабным коэффициентом ядра, выбранным эвристической процедурой.
Опции классификации ядер

свернуть все

Линейный тип модели классификации в виде разделенной запятой пары, состоящей из 'Learner' и 'svm' или 'logistic'.

В следующей таблице, f(x)=T(x)β+b.

  • x является наблюдением (вектор-строка) от переменных предикторов p.

  • T(·) преобразование наблюдения (вектор-строка) для расширения функции. T (x) сопоставляет x в p к высокому мерному пространству (m).

  • β является вектором из коэффициентов m.

  • b является скалярным смещением.

ЗначениеАлгоритмОбласть значений ответаФункция потерь
'svm'Машина опорных векторовy ∊ {-1,1}; 1 для положительного класса и –1 в противном случаеСтержень: [y,f(x)]=max[0,1yf(x)]
'logistic'Логистическая регрессияТо же самое как 'svm'(Логистическое) отклонение: [y,f(x)]=log{1+exp[yf(x)]}

Пример: 'Learner','logistic'

Количество размерностей расширенного пробела в виде разделенной запятой пары, состоящей из 'NumExpansionDimensions' и 'auto' или положительное целое число. Для 'auto', templateKernel функция выбирает количество размерностей с помощью 2.^ceil(min(log2(p)+5,15)), где p количество предикторов.

Для получения дополнительной информации смотрите Случайное Расширение Функции.

Пример: 'NumExpansionDimensions',2^15

Типы данных: char | string | single | double

Масштабный коэффициент ядра в виде разделенной запятой пары, состоящей из 'KernelScale' и 'auto' или положительная скалярная величина. Программное обеспечение получает случайный базис для случайного расширения функции при помощи масштабного коэффициента ядра. Для получения дополнительной информации смотрите Случайное Расширение Функции.

Если вы задаете 'auto', затем программное обеспечение выбирает соответствующий масштабный коэффициент ядра с помощью эвристической процедуры. Эта эвристическая процедура использует подвыборку, таким образом, оценки могут варьироваться от одного вызова до другого. Поэтому, чтобы воспроизвести результаты, установите seed случайных чисел при помощи rng перед обучением.

Пример: 'KernelScale','auto'

Типы данных: char | string | single | double

Ограничение поля в виде разделенной запятой пары, состоящей из 'BoxConstraint' и положительная скалярная величина.

Этот аргумент допустим только когда 'Learner' 'svm'(значение по умолчанию) и вы не задаете значение для силы срока регуляризации 'Lambda'. Можно задать любой 'BoxConstraint' или 'Lambda' потому что ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n), где n является количеством наблюдений.

Пример: 'BoxConstraint',100

Типы данных: single | double

Сила срока регуляризации в виде разделенной запятой пары, состоящей из 'Lambda' и 'auto' или неотрицательный скаляр.

Для 'auto', значение 'Lambda' 1/n, где n является количеством наблюдений.

Можно задать любой 'BoxConstraint' или 'Lambda' потому что ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n).

Пример: 'Lambda',0.01

Типы данных: char | string | single | double

Средства управления сходимостью

свернуть все

Относительная погрешность на линейных коэффициентах и сроке смещения (точка пересечения) в виде разделенной запятой пары, состоящей из 'BetaTolerance' и неотрицательный скаляр.

Пусть Bt=[βtbt], то есть, вектор из коэффициентов и смещения называет в итерации оптимизации t. Если BtBt1Bt2<BetaTolerance, затем оптимизация завершает работу.

Если вы также задаете GradientTolerance, затем оптимизация завершает работу, когда программное обеспечение удовлетворяет любому критерию остановки.

Пример: 'BetaTolerance',1e–6

Типы данных: single | double

Абсолютный допуск градиента в виде разделенной запятой пары, состоящей из 'GradientTolerance' и неотрицательный скаляр.

Пусть t будьте вектором градиента из целевой функции относительно коэффициентов, и смещение называют в итерации оптимизации t. Если t=max|t|<GradientTolerance, затем оптимизация завершает работу.

Если вы также задаете BetaTolerance, затем оптимизация завершает работу, когда программное обеспечение удовлетворяет любому критерию остановки.

Пример: 'GradientTolerance',1e–5

Типы данных: single | double

Максимальное количество итераций оптимизации в виде разделенной запятой пары, состоящей из 'IterationLimit' и положительное целое число.

Значение по умолчанию 1000 если преобразованные совпадения данных в памяти, как задано BlockSize аргумент пары "имя-значение". В противном случае значение по умолчанию равняется 100.

Пример: 'IterationLimit',500

Типы данных: single | double

Другие опции классификации ядер

свернуть все

Максимальная сумма выделенной памяти (в мегабайтах) в виде разделенной запятой пары, состоящей из 'BlockSize' и положительная скалярная величина.

Если templateKernel требует большей памяти, чем значение 'BlockSize' чтобы содержать преобразованные данные о предикторе, затем программное обеспечение использует мудрую блоком стратегию. Для получения дополнительной информации о мудрой блоком стратегии, см. Алгоритмы.

Пример: 'BlockSize',1e4

Типы данных: single | double

Поток случайных чисел для воспроизводимости преобразования данных в виде разделенной запятой пары, состоящей из 'RandomStream' и случайный потоковый объект. Для получения дополнительной информации смотрите Случайное Расширение Функции.

Используйте 'RandomStream' воспроизвести случайные основные функции это templateKernel использование, чтобы преобразовать данные о предикторе к высокому мерному пространству. Для получения дополнительной информации смотрите Управление Global Stream Используя RandStream и Создание и Управление Потоком Случайных чисел.

Пример: 'RandomStream',RandStream('mlfg6331_64')

Размер буфера истории для приближения Гессиана в виде разделенной запятой пары, состоящей из 'HessianHistorySize' и положительное целое число. В каждой итерации, templateKernel составляет приближение Гессиана при помощи статистики от последнего HessianHistorySize итерации.

Пример: 'HessianHistorySize',10

Типы данных: single | double

Уровень многословия в виде разделенной запятой пары, состоящей из 'Verbose' и любой 0 или 1. Verbose управляет отображением диагностической информации в командной строке.

ЗначениеОписание
0templateKernel не отображает диагностическую информацию.
1templateKernel отображает значение целевой функции, величины градиента и другой диагностической информации.

Пример: 'Verbose',1

Типы данных: single | double

Выходные аргументы

свернуть все

Шаблон модели Kernel, возвращенный как объект шаблона. Чтобы обучить модель классификации ядер проблемам мультикласса, передайте t к fitcecoc.

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

Больше о

свернуть все

Случайное расширение функции

Случайное расширение функции, такое как Случайные Раковины [1] и Быстрое питание [2], является схемой аппроксимировать Гауссовы ядра алгоритма классификации ядер, чтобы использовать для больших данных в вычислительном отношении эффективным способом. Случайное расширение функции более практично для больших применений данных, которые имеют большие наборы обучающих данных, но могут также быть применены к меньшим наборам данных, которые умещаются в памяти.

Алгоритм классификации ядер ищет оптимальную гиперплоскость, которая разделяет данные на два класса после отображения функций в высокое мерное пространство. Нелинейные функции, которые не линейно отделимы в низком мерном пространстве, могут быть отделимыми в расширенном высоком мерном пространстве. Все вычисления для классификации гиперплоскостей используют только скалярные произведения. Можно получить нелинейную модель классификации, заменив скалярное произведение x 1x2' с нелинейной функцией ядра G(x1,x2)=φ(x1),φ(x2), где xi является i th наблюдение (вектор-строка), и φ (xi) является преобразованием, которое сопоставляет xi с высоким мерным пространством (названный “приемом ядра”). Однако оценивание G (x 1, x 2) (Матрица грамма) для каждой пары наблюдений является в вычислительном отношении дорогим для большого набора данных (большой n).

Случайная схема расширения функции находит случайное преобразование так, чтобы его скалярное произведение аппроксимировало Гауссово ядро. Таким образом,

G(x1,x2)=φ(x1),φ(x2)T(x1)T(x2)',

где T (x) сопоставляет x в p к высокому мерному пространству (m). Схема Random Kitchen Sink использует случайное преобразование

T(x)=m1/2exp(iZx')',

где Zm×p выборка, чертившая от N(0,σ2) и σ 2 является шкалой ядра. Эта схема требует O (m p) расчет и устройство хранения данных. Схема Fastfood вводит другой случайный базис V вместо Z с помощью матриц Адамара, объединенных с Гауссовыми матрицами масштабирования. Этот случайный базис уменьшает стоимость расчета для O (m logp), и уменьшает устройство хранения данных до O (m).

templateKernel функционируйте использует схему Fastfood случайного расширения функции и использует линейную классификацию, чтобы обучить Гауссову модель классификации ядер. В отличие от решателей в templateSVM функция, которые требуют расчета n-by-n матрица Грамма, решатель в templateKernel только потребности сформировать матрицу размера n-by-m, с m обычно намного меньше, чем n для больших данных.

Ограничение поля

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

Ограничение поля (C) и сила срока регуляризации (λ) связано C = 1 / (λ n), где n является количеством наблюдений.

Алгоритмы

templateKernel минимизирует упорядоченную целевую функцию с помощью решателя Лимитед-мемори Бройдена Флетчера Голдфарба Шэнно (LBFGS) с гребнем (L 2) регуляризация. Чтобы найти тип решателя LBFGS используемым для обучения, введите FitInfo.Solver в Командном окне.

  • 'LBFGS-fast' — Решатель LBFGS.

  • 'LBFGS-blockwise' — Решатель LBFGS с мудрой блоком стратегией. Если templateKernel требует большей памяти, чем значение BlockSize чтобы содержать преобразованные данные о предикторе, затем это использует мудрую блоком стратегию.

  • 'LBFGS-tall' — Решатель LBFGS с мудрой блоком стратегией длинных массивов.

Когда templateKernel использует мудрую блоком стратегию, templateKernel реализации LBFGS путем распределения вычисления потери и градиента среди различных частей данных в каждой итерации. Кроме того, templateKernel совершенствовал первоначальные оценки линейных коэффициентов и срока смещения, подбирая модель локально к частям данных и комбинируя коэффициенты путем усреднения. Если вы задаете 'Verbose',1то templateKernel информация о диагностике отображений для каждых данных передает, и хранит информацию в History поле FitInfo.

Когда templateKernel не использует мудрую блоком стратегию, первоначальные оценки являются нулями. Если вы задаете 'Verbose',1то templateKernel информация о диагностике отображений для каждой итерации и хранит информацию в History поле FitInfo.

Ссылки

[1] Rahimi, A. и Б. Речт. “Случайные Функции Крупномасштабных Машин Ядра”. Усовершенствования в Нейронных Системах обработки информации. Издание 20, 2008, стр 1177–1184.

[2] Le, Q., Т. Сарлос и А. Смола. “Быстрое питание — Аппроксимация Расширений Ядра в Логлинейное Время”. Продолжения 30-й Международной конференции по вопросам Машинного обучения. Издание 28, № 3, 2013, стр 244–252.

[3] Хуан, P. S. Х. Аврон, Т. Н. Сэйнэт, В. Синдхвани и Б. Рамабхэдрэн. “Методы ядра совпадают с Глубокими нейронными сетями на TIMIT”. 2 014 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов. 2014, стр 205–209.

Расширенные возможности

Смотрите также

|

Введенный в R2018b