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

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

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

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

[err,...] = cvshrink(obj,Name,Value) крест подтверждает с дополнительными опциями, заданными одним или несколькими 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'

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

Значение по умолчанию: 0

'NumGamma'

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

Значение по умолчанию: 10

'verbose'

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

Значение по умолчанию: 0

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

err

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

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

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

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

gamma

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

delta

Вектор или матрица значений 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);