cvshrink

Класс: ClassificationDiscripant

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

Синтаксис

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) возвращает вектор перекрестных проверенных значений ошибки классификации для различных значений параметра регуляризации Гамма.

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

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

[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 Пара "имя-значение", выход 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);