Потеря k - ближайшего соседа классификатора
возвращает скаляр, представляющий, насколько хорошо L
= loss(mdl
,tbl
,ResponseVarName
)mdl
классифицирует данные в tbl
когда tbl.ResponseVarName
содержит истинные классификации. Если tbl
содержит переменную отклика, используемую для обучения mdl
, тогда вам не нужно указывать ResponseVarName
.
При вычислении потерь, loss
функция нормирует вероятности классов в tbl.ResponseVarName
к вероятностям классов, используемым для обучения, которые хранятся в Prior
свойство mdl
.
Смысл классификационных потерь (L
) зависит от функции потерь и схемы взвешивания, но, в целом, лучшие классификаторы дают меньшие значения классификационных потерь. Для получения дополнительной информации смотрите Классификационные потери.
возвращает скаляр, представляющий, насколько хорошо L
= loss(mdl
,tbl
,Y
)mdl
классифицирует данные в tbl
когда Y
содержит истинные классификации.
При вычислении потерь, loss
функция нормирует вероятности классов в Y
к вероятностям классов, используемым для обучения, которые хранятся в Prior
свойство mdl
.
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Для примера можно задать функцию потерь и классификационные веса.L
= loss(___,Name,Value
)
Создайте k-ближайших соседей классификатор для данных радужной оболочки глаза Фишера, где k = 5.
Загрузите набор данных радужной оболочки глаза Фишера.
load fisheriris
Создайте классификатор для пяти ближайших соседей.
mdl = fitcknn(meas,species,'NumNeighbors',5);
Исследуйте потерю классификатора для среднего наблюдения, классифицированного как 'versicolor'
.
X = mean(meas);
Y = {'versicolor'};
L = loss(mdl,X,Y)
L = 0
Все пять ближайших соседей классифицируются как 'versicolor'
.
mdl
- k - модель классификатора по ближайшему соседуClassificationKNN
объектk-ближайших соседей классификатор модели, заданный как ClassificationKNN
объект.
tbl
- Выборочные данныеВыборочные данные, используемых для обучения модели, заданная как таблица. Каждая строка tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально tbl
может содержать один дополнительный столбец для переменной отклика. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Если tbl
содержит переменную отклика, используемую для обучения mdl
, тогда вам не нужно указывать ResponseVarName
или Y
.
Если вы обучаете mdl
использование выборочных данных, содержащихся в table
, затем входные данные для loss
также должно быть в таблице.
Типы данных: table
ResponseVarName
- Имя переменной откликаtbl
Имя переменной отклика, заданное как имя переменной в tbl
. Если tbl
содержит переменную отклика, используемую для обучения mdl
, тогда вам не нужно указывать ResponseVarName
.
Вы должны задать ResponseVarName
как вектор символов или строковый скаляр. Для примера, если переменная отклика сохранена как tbl.response
, затем укажите его следующим 'response'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая tbl.response
, как предикторы.
Переменная отклика должна быть категориальными символьными или строковыми массивами, логическим или числовым вектором или массивом ячеек из векторов символов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Типы данных: char
| string
X
- Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X
представляет одно наблюдение, и каждый столбец представляет одну переменную.
Типы данных: single
| double
Y
- Метки классовМетки класса, заданные как категориальные символьные или строковые массивы, логический или числовой вектор или массив ячеек из векторов символов. Каждая строка Y
представляет классификацию соответствующей строки X
.
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
loss(mdl,tbl,'response','LossFun','exponential','Weights','w')
возвращает взвешенные экспоненциальные потери mdl
классификация данных в tbl
. Здесь, tbl.response
- переменная отклика, и tbl.w
- весовая переменная.'LossFun'
- Функция потерь'mincost'
(по умолчанию) | 'binodeviance'
| 'classiferror'
| 'exponential'
| 'hinge'
| 'logit'
| 'quadratic'
| указатель на функциюФункция потерь, заданная как разделенная разделенными запятой парами, состоящая из 'LossFun'
и встроенное имя функции потерь или указатель на функцию.
В следующей таблице перечислены доступные функции потерь.
Значение | Описание |
---|---|
'binodeviance' | Биномиальное отклонение |
'classiferror' | Неверно классифицированный коэффициент в десятичных числах |
'exponential' | Экспоненциальные потери |
'hinge' | Потеря шарнира |
'logit' | Логистические потери |
'mincost' | Минимальные ожидаемые затраты на неправильную классификацию (для классификационных оценок, которые являются апостериорными вероятностями) |
'quadratic' | Квадратичные потери |
'mincost'
подходит для классификационных оценок, которые являются апостериорными вероятностями. По умолчанию k-ближайшие модели-соседи возвращают апостериорные вероятности как классификационные оценки (см predict
).
Указатель на функцию можно задать для пользовательской функции потерь с помощью @
(например, @lossfun
). Предположим n количество наблюдений в X
и K быть количество отдельных классов (numel(mdl.ClassNames)
). Ваша пользовательская функция потерь должна иметь следующую форму:
function lossvalue = lossfun(C,S,W,Cost)
C
является n -by K логической матрицей с строками, указывающими класс, к которому принадлежит соответствующее наблюдение. Порядок столбцов соответствует порядку классов в mdl.ClassNames
. Конструкция C
путем установки C(p,q) = 1
, если наблюдение p
находится в q классов
, для каждой строки. Установите все другие элементы строки p
на 0
.
S
является n -by K числовой матрицей классификационных оценок. Порядок столбцов соответствует порядку классов в mdl.ClassNames
. Аргумент S
является матрицей классификационных оценок, подобной выходным данным predict
.
W
является n -by-1 числовым вектором весов наблюдений. Если вы сдаете W
, программное обеспечение нормализует веса, чтобы сумма 1
.
Cost
является K -by K числовой матрицей затрат на неправильную классификацию. Для примера, Cost = ones(K) – eye(K)
задает стоимость 0
для правильной классификации и 1
для неправильной классификации.
Выходной аргумент lossvalue
является скаляром.
Для получения дополнительной информации о функциях потерь смотрите Классификационные потери.
Типы данных: char
| string
| function_handle
'Weights'
- Веса наблюденийones(size(X,1),1)
(по умолчанию) | числовой вектор | имя переменной в tbl
Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights'
и числовой вектор или имя переменной в tbl
.
Если вы задаете Weights
в виде числового вектора, затем размера Weights
должно быть равно количеству строк в X
или tbl
.
Если вы задаете Weights
как имя переменной в tbl
имя должно быть вектором символов или строковым скаляром. Для примера, если веса сохранены как tbl.w
, затем задайте Weights
как 'w'
. В противном случае программное обеспечение обрабатывает все столбцы tbl
, включая tbl.w
, как предикторы.
loss
нормализует веса так, чтобы веса наблюдений в каждой сумме классов соответствовали предшествующей вероятности этого класса. Когда вы поставляете Weights
, loss
вычисляет взвешенные классификационные потери.
Пример: 'Weights','w'
Типы данных: single
| double
| char
| string
Classification loss функции измеряют прогнозирующую неточность классификационных моделей. Когда вы сравниваете один и тот же тип потерь среди многих моделей, более низкая потеря указывает на лучшую прогнозирующую модель.
Рассмотрим следующий сценарий.
L - средневзвешенные классификационные потери.
n - размер выборки.
Для двоичной классификации:
yj - наблюдаемая метка класса. Программное обеспечение кодирует его как -1 или 1, указывая на отрицательный или положительный класс (или первый или второй класс в ClassNames
свойство), соответственно.
f (Xj) является баллом классификации положительного класса для j наблюдений (строка) X данных предиктора.
mj = yj f (Xj) является классификационной оценкой для классификации j наблюдений в класс, относящийся к yj. Положительные значения mj указывают на правильную классификацию и не вносят большой вклад в средние потери. Отрицательные значения mj указывают на неправильную классификацию и вносят значительный вклад в среднюю потерю.
Для алгоритмов, которые поддерживают многоклассовую классификацию (то есть K ≥ 3):
yj* - вектор с K - 1 нулями, с 1 в положении, соответствующем истинному, наблюдаемому классу yj. Для примера, если истинный класс второго наблюдения является третьим классом и K = 4, то y 2* = [0 0 1 0]′. Порядок классов соответствует порядку в ClassNames
свойство модели входа.
f (Xj) является вектором K длины счетов классов для j наблюдений X данных предиктора. Порядок счетов соответствует порядку классов в ClassNames
свойство модели входа.
mj = yj*′ f (<reservedrangesplaceholder1>). Поэтому mj является скалярной классификационной оценкой, которую модель предсказывает для истинного наблюдаемого класса.
Вес для j наблюдения wj. Программа нормализует веса наблюдений так, чтобы они суммировались с соответствующей вероятностью предыдущего класса. Программное обеспечение также нормализует предыдущие вероятности, поэтому они равны 1. Поэтому,
С учетом этого сценария в следующей таблице описываются поддерживаемые функции потерь, которые можно задать при помощи 'LossFun'
аргумент пары "имя-значение".
Функция потерь | Значение LossFun | Уравнение |
---|---|---|
Биномиальное отклонение | 'binodeviance' | |
Неверно классифицированный коэффициент в десятичных числах | 'classiferror' | - метка класса, соответствующая классу с максимальным счетом. I {·} является функцией индикации. |
Потери перекрестной энтропии | 'crossentropy' |
Взвешенные потери перекрестной энтропии где веса нормированы в сумме к n вместо 1. |
Экспоненциальные потери | 'exponential' | |
Потеря шарнира | 'hinge' | |
Логит потеря | 'logit' | |
Минимальные ожидаемые затраты на неправильную классификацию | 'mincost' |
Программа вычисляет взвешенные минимальные ожидаемые затраты классификации, используя эту процедуру для наблюдений j = 1,..., n.
Взвешенное среднее значение минимальных ожидаемых потерь от неправильной классификации Если вы используете матрицу затрат по умолчанию (значение элемента которой 0 для правильной классификации и 1 для неправильной классификации), то |
Квадратичные потери | 'quadratic' |
Этот рисунок сравнивает функции потерь (кроме 'crossentropy'
и 'mincost'
) по счету m для одного наблюдения. Некоторые функции нормированы, чтобы пройти через точку (0,1).
Две стоимости связаны с классификацией KNN: истинная стоимость неправильной классификации для каждого класса и ожидаемая стоимость неправильной классификации для каждого наблюдения.
Можно задать истинные затраты на неправильную классификацию по классам с помощью 'Cost'
аргумент пары "имя-значение" при запуске fitcknn
. Значение Cost(i,j)
- стоимость классификации наблюдений в классы j
если его класс true i
. По умолчанию Cost(i,j) = 1
если i ~= j
, и Cost(i,j) = 0
если i = j
. Другими словами, стоимость 0
для правильной классификации и 1
для неправильной классификации.
Две стоимости связаны с классификацией KNN: истинная стоимость неправильной классификации для каждого класса и ожидаемая стоимость неправильной классификации для каждого наблюдения. Третий выход predict
- ожидаемая стоимость неправильной классификации за наблюдение.
Предположим, у вас есть Nobs
наблюдения, которые необходимо классифицировать с помощью обученного классификатора mdl
, и у вас есть K
классы. Наблюдения помещаются в матрицу Xnew
с одним наблюдением за строкой. Команда
[label,score,cost] = predict(mdl,Xnew)
возвращает матрицу cost
размера Nobs
-by- K
, среди других выходов. Каждая строка cost
матрица содержит ожидаемые (средние) затраты на классификацию наблюдений в каждый из K
классы. cost(n,j)
является
где
K - количество классов.
- апостериорная вероятность i классов для Xnew наблюдений (n).
- истинная стоимость неправильной классификации при классификации наблюдения как j, когда его истинный класс i.
Эта функция полностью поддерживает длинные массивы. Для получения дополнительной информации см. Раздел «Длинные массивы»
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
Эта функция поддерживает объекты модели, оснащенные входными параметрами массива GPU.
loss
выполняется только на графическом процессоре в следующих случаях:
Входной параметр X
является gpuArray
.
Входной параметр tbl
содержит gpuArray
элементы.
Входной параметр mdl
был оснащен входными параметрами массива GPU.
ClassificationKNN
| edge
| fitcknn
| margin
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.