exponenta event banner

cvshrink

Класс: ClassificationDiscriminant

Перекрестная проверка регуляризации линейного дискриминанта

Синтаксис

err = cvshrink(obj)
[err,gamma] = cvshrink(obj)
[err,gamma,delta] = cvshrink(obj)
[err,gamma,delta,numpred] = cvshrink(obj)
[err,...] = cvshrink(obj,Name,Value)

Описание

err = cvshrink(obj) возвращает вектор значений ошибок перекрестной проверки классификации для различных значений параметра регуляризации Gamma.

[err,gamma] = cvshrink(obj) также возвращает вектор значений Гамма.

[err,gamma,delta] = cvshrink(obj) также возвращает вектор значений дельты.

[err,gamma,delta,numpred] = cvshrink(obj) возвращает вектор числа ненулевых предикторов для каждой установки параметров Гамма и Дельта.

[err,...] = cvshrink(obj,Name,Value) cross проверяет с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары.

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

obj

Классификатор дискриминантного анализа, полученный с использованием fitcdiscr.

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

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

'delta'

  • Скаляр deltacvshrink использует это значение delta со всеми значениями gamma для регуляризации.

  • Вектор строки delta - Для каждого i и j, cvshrink использование delta(j) с gamma(i) для регуляризации.

  • Матрица delta - Количество строк delta должно равняться количеству элементов в gamma. Для каждого i и j, cvshrink использование delta(i,j) с gamma(i) для регуляризации.

По умолчанию: 0

'gamma'

Вектор значений Гамма для перекрестной проверки.

По умолчанию: 0:0.1:1

'NumDelta'

Количество дельта-интервалов для перекрестной проверки. Для каждого значения Гамма, cvshrink перекрестная проверка дискриминанта с помощью NumDelta + 1 значения Дельты, равномерно разнесенные от нуля до максимальной Дельты, при которой для этого значения Гамма исключаются все предикторы. Если установить delta, cvshrink игнорирует NumDelta.

По умолчанию: 0

'NumGamma'

Количество гамма-интервалов для перекрестной проверки. cvshrink перекрестная проверка дискриминанта с помощью NumGamma + 1 значения Гамма, равномерно отстоящие от MinGamma кому 1. Если установить gamma, cvshrink игнорирует NumGamma.

По умолчанию: 10

'verbose'

Уровень детализации, целое число от 0 кому 2. Более высокие значения дают больше сообщений о ходе выполнения.

По умолчанию: 0

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

err

Числовой вектор или матрица ошибок. err - частота ошибок неправильной классификации, то есть средняя доля данных неправильной классификации по всем складкам.

  • Если delta является скаляром (по умолчанию), err(i) - частота ошибок классификации ошибок для obj упорядочено с gamma(i).

  • Если delta является вектором, err(i,j) - частота ошибок классификации ошибок для obj упорядочено с gamma(i) и delta(j).

  • Если delta является матрицей, err(i,j) - частота ошибок классификации ошибок для obj упорядочено с gamma(i) и delta(i,j).

gamma

Вектор значений Гамма, используемый для регуляризации. См. Гамма и дельта.

delta

Вектор или матрица значений дельты, используемых для регуляризации. См. Гамма и дельта.

  • Если вы даете скаляр для delta пара имя-значение, вывод delta - вектор строки того же размера, что и gamma, с записями, равными входному скаляру.

  • Если задан вектор строки для delta пара имя-значение, вывод delta является матрицей с тем же количеством столбцов, что и вектор строки, и с количеством строк, равным числу элементов gamma. Продукция delta(i,j) равно входу delta(j).

  • Если вы даете матрицу для delta пара имя-значение, вывод delta совпадает с входной матрицей. Количество строк delta должно равняться количеству элементов в gamma.

numpred

Числовой вектор или матрица, содержащая количество предикторов в модели при различных регуляризациях. numpred имеет тот же размер, что и err.

  • Если delta является скаляром (по умолчанию), numpred(i) - количество предикторов для obj упорядочено с gamma(i) и delta.

  • Если delta является вектором, numpred(i,j) - количество предикторов для obj упорядочено с gamma(i) и delta(j).

  • Если delta является матрицей, numpred(i,j) - количество предикторов для obj упорядочено с gamma(i) и delta(i,j).

Примеры

развернуть все

Упорядочить классификатор дискриминантного анализа и просмотреть компромисс между количеством предикторов в модели и точностью классификации.

Создание классификатора линейного дискриминантного анализа для ovariancancer данные. Установите SaveMemory и FillCoeffs варианты, чтобы сохранить полученную модель достаточно малой.

load ovariancancer
obj = fitcdiscr(obs,grp,...
    'SaveMemory','on','FillCoeffs','off');

Использовать 10 уровней Gamma и 10 уровней Delta для поиска хороших параметров. Этот поиск занимает много времени. Набор Verbose кому 1 для просмотра хода выполнения.

rng('default') % for reproducibility
[err,gamma,delta,numpred] = cvshrink(obj,...
    'NumGamma',9,'NumDelta',9,'Verbose',1);
Done building cross-validated model.
Processing Gamma step 1 out of 10.
Processing Gamma step 2 out of 10.
Processing Gamma step 3 out of 10.
Processing Gamma step 4 out of 10.
Processing Gamma step 5 out of 10.
Processing Gamma step 6 out of 10.
Processing Gamma step 7 out of 10.
Processing Gamma step 8 out of 10.
Processing Gamma step 9 out of 10.
Processing Gamma step 10 out of 10.

Постройте график частоты ошибок классификации по количеству предикторов.

plot(err,numpred,'k.')
xlabel('Error rate');
ylabel('Number of predictors');

Figure contains an axes. The axes contains 10 objects of type line.

Подробнее

развернуть все

Совет

  • Осмотрите err и numpred результаты, чтобы увидеть компромисс между кросс-проверенной ошибкой и количеством предикторов. При обнаружении удовлетворительной точки установите соответствующую gamma и delta свойства в модели с использованием точечной нотации. Например, если (i,j) - местоположение удовлетворительной точки, установка

    obj.Gamma = gamma(i);
    obj.Delta = delta(i,j);