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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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');

Больше о

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

Советы

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

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