Потеря классификации для перекрестной подтвержденной модели классификации ядер
возвращает потерю классификации, полученную перекрестной подтвержденной, бинарной моделью ядра (loss
= kfoldLoss(CVMdl
)ClassificationPartitionedKernel
) CVMdl
. Для каждого сгиба, kfoldLoss
вычисляет потерю классификации для наблюдений сгиба валидации с помощью модели, обученной на наблюдениях учебного сгиба.
По умолчанию, kfoldLoss
возвращает ошибку классификации.
возвращает потерю классификации с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, задайте функцию потерь классификации, количество сгибов или уровень агрегации.loss
= kfoldLoss(CVMdl
,Name,Value
)
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, которые помечены любой плохо ('b'
) или хороший ('g'
).
load ionosphere
Перекрестный подтвердите бинарную модель классификации ядер использование данных.
CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = ClassificationPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
ClassificationPartitionedKernel
модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте 'KFold'
аргумент пары "имя-значение" вместо 'Crossval'
.
Оцените перекрестную подтвержденную потерю классификации. По умолчанию программное обеспечение вычисляет ошибку классификации.
loss = kfoldLoss(CVMdl)
loss = 0.0940
В качестве альтернативы можно получить ошибки классификации на сгиб путем определения пары "имя-значение" 'Mode','individual'
в kfoldLoss
.
Загрузите ionosphere
набор данных. Этот набор данных имеет 34 предиктора, и 351 бинарный ответ для радара возвращается, которые помечены любой плохо ('b'
) или хороший ('g'
).
load ionosphere
Перекрестный подтвердите бинарную модель классификации ядер использование данных.
CVMdl = fitckernel(X,Y,'Crossval','on')
CVMdl = ClassificationPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods
CVMdl
ClassificationPartitionedKernel
модель. По умолчанию программное обеспечение реализует 10-кратную перекрестную проверку. Чтобы задать различное количество сгибов, используйте 'KFold'
аргумент пары "имя-значение" вместо 'Crossval'
.
Создайте анонимную функцию, которая измеряет линейную потерю, то есть,
вес для наблюдения j, ответ j (–1 для отрицательного класса и 1 в противном случае), и необработанная классификационная оценка наблюдения j.
linearloss = @(C,S,W,Cost)sum(-W.*sum(S.*C,2))/sum(W);
Пользовательские функции потерь должны быть написаны в конкретной форме. Для правил о записи пользовательской функции потерь смотрите 'LossFun'
аргумент пары "имя-значение".
Оцените перекрестную подтвержденную потерю классификации с помощью линейной функции потерь.
loss = kfoldLoss(CVMdl,'LossFun',linearloss)
loss = -0.7792
CVMdl
— Перекрестная подтвержденная, бинарная модель классификации ядерClassificationPartitionedKernel
объект моделиПерекрестная подтвержденная, бинарная модель классификации ядер в виде ClassificationPartitionedKernel
объект модели. Можно создать ClassificationPartitionedKernel
модель при помощи fitckernel
и определение любого из аргументов пары "имя-значение" перекрестной проверки.
Получить оценки, kfoldLoss
применяется те же данные раньше перекрестный подтверждали модель классификации ядер (X
и Y
).
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
kfoldLoss(CVMdl,'Folds',[1 3 5])
задает, чтобы использовать только первые, третьи, и пятые сгибы, чтобы вычислить потерю классификации.'Folds'
— Сверните индексы для предсказания1:CVMdl.KFold
(значение по умолчанию) | числовой вектор из положительных целых чиселСверните индексы для предсказания в виде разделенной запятой пары, состоящей из 'Folds'
и числовой вектор из положительных целых чисел. Элементы Folds
должен быть в диапазоне от 1
к CVMdl.KFold
.
Программное обеспечение использует только сгибы, заданные в Folds
для предсказания.
Пример: 'Folds',[1 4 10]
Типы данных: single
| double
'LossFun'
— Функция потерь'classiferror'
(значение по умолчанию) | 'binodeviance'
| 'exponential'
| 'hinge'
| 'logit'
| 'mincost'
| 'quadratic'
| указатель на функциюФункция потерь в виде разделенной запятой пары, состоящей из 'LossFun'
и встроенное имя функции потерь или указатель на функцию.
Эта таблица приводит доступные функции потерь. Задайте тот с помощью его соответствующего значения.
Значение | Описание |
---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Неправильно классифицированный уровень в десятичном числе |
'exponential' | Экспоненциальная потеря |
'hinge' | Потеря стержня |
'logit' | Логистическая потеря |
'mincost' | Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями), |
'quadratic' | Квадратичная потеря |
'mincost'
подходит для классификационных оценок, которые являются апостериорными вероятностями. Для моделей классификации ядер ученики логистической регрессии возвращают апостериорные вероятности как классификационные оценки по умолчанию, но ученики SVM не делают (см. kfoldPredict
).
Задайте свою собственную функцию при помощи обозначения указателя на функцию.
Примите тот n
количество наблюдений в X
, и K
количество отличных классов (numel(CVMdl.ClassNames)
, где CVMdl
входная модель). Ваша функция должна иметь эту подпись:
lossvalue = lossfun
(C,S,W,Cost)
Выходной аргумент lossvalue
скаляр.
Вы задаете имя функции (lossfun
).
C
n
- K
логическая матрица со строками, указывающими на класс, которому принадлежит соответствующее наблюдение. Порядок следования столбцов соответствует порядку класса в CVMdl.ClassNames
.
Создайте C
установкой C(p,q) = 1
, если наблюдение p
находится в классе q
, для каждой строки. Установите все другие элементы строки p
к 0
.
S
n
- K
числовая матрица классификационных оценок. Порядок следования столбцов соответствует порядку класса в CVMdl.ClassNames
S
матрица классификационных оценок, похожих на выход kfoldPredict
.
W
n
- 1 числовой вектор из весов наблюдения. Если вы передаете W
, программное обеспечение нормирует веса, чтобы суммировать к 1
.
Cost
K
- K
числовая матрица затрат misclassification. Например, Cost = ones(K) – eye(K)
задает стоимость 0
для правильной классификации и 1
для misclassification.
Пример: 'LossFun', @
lossfun
Типы данных: char |
string
| function_handle
'Mode'
— Уровень агрегации для выхода'average'
(значение по умолчанию) | 'individual'
Уровень агрегации для выхода в виде разделенной запятой пары, состоящей из 'Mode'
и 'average'
или 'individual'
.
Эта таблица описывает значения.
Значение | Описание |
---|---|
'average' | Выход является скалярным средним значением по всем сгибам. |
'individual' | Выход является вектором из длины k, содержащий одно значение на сгиб, где k является количеством сгибов. |
Пример: 'Mode','individual'
loss
— Потеря классификацииПотеря классификации, возвращенная в виде числа или числового вектор-столбца.
Если Mode
'average'
, затем loss
средняя потеря классификации по всем сгибам. В противном случае, loss
k-by-1 числовой вектор-столбец, содержащий потерю классификации для каждого сгиба, где k является количеством сгибов.
Функции Classification loss измеряют прогнозирующую погрешность моделей классификации. Когда вы сравниваете тот же тип потери среди многих моделей, более низкая потеря указывает на лучшую прогнозную модель.
Предположим следующее:
L является средневзвешенной потерей классификации.
n является объемом выборки.
yj является наблюдаемой меткой класса. Программные коды это как –1 или 1, указывая на отрицательный или положительный класс (или первый или второй класс в ClassNames
свойство), соответственно.
f (Xj) является классификационной оценкой положительного класса для наблюдения (строка) j данных о предикторе X.
mj = yj f (Xj) является классификационной оценкой для классификации наблюдения j в класс, соответствующий yj. Положительные значения mj указывают на правильную классификацию и не способствуют очень средней потере. Отрицательные величины mj указывают на неправильную классификацию и значительно способствуют средней потере.
Весом для наблюдения j является wj. Программное обеспечение нормирует веса наблюдения так, чтобы они суммировали к соответствующей предшествующей вероятности класса. Программное обеспечение также нормирует априорные вероятности так, чтобы они суммировали к 1. Поэтому
Эта таблица описывает поддерживаемые функции потерь, которые можно задать при помощи 'LossFun'
аргумент значения имени.
Функция потерь | Значение LossFun | Уравнение |
---|---|---|
Биномиальное отклонение | 'binodeviance' | |
Экспоненциальная потеря | 'exponential' | |
Неправильно классифицированный уровень в десятичном числе | 'classiferror' | метка класса, соответствующая классу с максимальным счетом. I {·} является функцией индикатора. |
Потеря стержня | 'hinge' | |
Потеря логита | 'logit' | |
Минимальный ожидал стоимость misclassification | 'mincost' |
Программное обеспечение вычисляет взвешенную минимальную ожидаемую стоимость классификации с помощью этой процедуры для наблюдений j = 1..., n.
Взвешенное среднее минимального ожидало, что потеря стоимости misclassification Если вы используете матрицу стоимости по умолчанию (чье значение элемента 0 для правильной классификации и 1 для неправильной классификации), то |
Квадратичная потеря | 'quadratic' |
Этот рисунок сравнивает функции потерь (кроме 'mincost'
) по счету m для одного наблюдения. Некоторые функции нормированы, чтобы пройти через точку (0,1).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.