Потеря k - самый близкий соседний классификатор
возвращает скалярное представление как хорошо L
= loss(mdl
,tbl
,ResponseVarName
)mdl
классифицирует данные на tbl
когда tbl.ResponseVarName
содержит истинные классификации. Если tbl
содержит переменную отклика, используемую, чтобы обучить mdl
, затем вы не должны задавать ResponseVarName
.
При вычислении потери, loss
функция нормирует вероятности класса в tbl.ResponseVarName
к вероятностям класса, используемым для обучения, которые хранятся в Prior
свойство mdl
.
Значение потери классификации (L
) зависит от функции потерь и схемы взвешивания, но в целом лучшие классификаторы дают к меньшим значениям классификации потерь. Для получения дополнительной информации смотрите Потерю Классификации.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, можно задать функцию потерь и веса классификации.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' | Минимальный ожидал стоимость misclassification (для классификационных оценок, которые являются апостериорными вероятностями), |
'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 числовая матрица затрат misclassification. Например, Cost = ones(K) – eye(K)
задает стоимость 0
для правильной классификации и 1
для misclassification.
Выходной аргумент 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 (Xj). Поэтому mj является скалярной классификационной оценкой, которую модель предсказывает для истинного, наблюдаемого класса.
Весом для наблюдения j является wj. Программное обеспечение нормирует веса наблюдения так, чтобы они суммировали к соответствующей предшествующей вероятности класса. Программное обеспечение также нормирует априорные вероятности, таким образом, они суммируют к 1. Поэтому
Учитывая этот сценарий, следующая таблица описывает поддерживаемые функции потерь, которые можно задать при помощи 'LossFun'
аргумент пары "имя-значение".
Функция потерь | Значение LossFun | Уравнение |
---|---|---|
Биномиальное отклонение | 'binodeviance' | |
Неправильно классифицированный уровень в десятичном числе | 'classiferror' | метка класса, соответствующая классу с максимальным счетом. I {·} является функцией индикатора. |
Потеря перекрестной энтропии | 'crossentropy' |
Взвешенная потеря перекрестной энтропии где веса нормированы, чтобы суммировать к n вместо 1. |
Экспоненциальная потеря | 'exponential' | |
Потеря стержня | 'hinge' | |
Потеря логита | 'logit' | |
Минимальный ожидал стоимость misclassification | 'mincost' |
Программное обеспечение вычисляет взвешенную минимальную ожидаемую стоимость классификации с помощью этой процедуры для наблюдений j = 1..., n.
Взвешенное среднее минимального ожидало, что потеря стоимости misclassification Если вы используете матрицу стоимости по умолчанию (чье значение элемента 0 для правильной классификации и 1 для неправильной классификации), то |
Квадратичная потеря | 'quadratic' |
Этот рисунок сравнивает функции потерь (кроме 'crossentropy'
и 'mincost'
) по счету m для одного наблюдения. Некоторые функции нормированы, чтобы пройти через точку (0,1).
Два затрат сопоставлены с классификацией KNN: истинная стоимость misclassification в классе и ожидаемом misclassification стоится на наблюдение.
Можно установить истинную стоимость misclassification в классе при помощи 'Cost'
аргумент пары "имя-значение", когда вы запускаетесь fitcknn
. Значение Cost(i,j)
стоимость классификации наблюдения в класс j
если его истинным классом является i
. По умолчанию, Cost(i,j) = 1
если i ~= j
, и Cost(i,j) = 0
если i = j
. Другими словами, стоимостью является 0
для правильной классификации и 1
для неправильной классификации.
Два затрат сопоставлены с классификацией KNN: истинная стоимость misclassification в классе и ожидаемом misclassification стоится на наблюдение. Третий выход predict
ожидаемая стоимость misclassification на наблюдение.
Предположим, что у вас есть Nobs
наблюдения, что вы хотите классифицировать с обученным классификатором mdl
, и у вас есть K
классы. Вы помещаете наблюдения в матричный Xnew
с одним наблюдением на строку. Команда
[label,score,cost] = predict(mdl,Xnew)
возвращает матричный cost
из размера Nobs
- K
, среди других выходных параметров. Каждая строка cost
матрица содержит ожидаемую (среднюю) стоимость классификации наблюдения в каждый K
классы. cost(n,j)
где
K является количеством классов.
апостериорная вероятность класса i для наблюдения Xnew (n).
истинная misclassification стоимость классификации наблюдения как j, когда его истинным классом является i.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
loss
не поддерживает массивы графического процессора для ClassificationKNN
модели со следующими техническими требованиями:
'NSMethod'
свойство задано как 'kdtree'
.
'Distance'
свойство определяется функцией указатель.
'IncludeTies'
свойство задано как true
.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
ClassificationKNN
| fitcknn
| edge
| margin
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.