templateKernel

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

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

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

Синтаксис

t = templateKernel()
t = templateKernel(Name,Value)

Описание

пример

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 = 
  classreg.learning.classif.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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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)]=журнал{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 (MATLAB) и Создание и Управление Потоком Случайных чисел (MATLAB).

Пример: '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 log p) и уменьшает устройство хранения данных до 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