Потеря 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(mdl,X,Y)mdl классифицирует данные в X когда 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-на-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
Функции потери классификации измеряют прогностическую неточность классификационных моделей. При сравнении одного и того же типа потерь между многими моделями меньшие потери указывают на лучшую прогностическую модель.
Рассмотрим следующий сценарий.
L - средневзвешенная потеря классификации.
n - размер выборки.
Для двоичной классификации:
yj - наблюдаемая метка класса. Программное обеспечение кодирует его как -1 или 1, указывая отрицательный или положительный класс (или первый или второй класс в ClassNames свойство), соответственно.
f (Xj) - показатель классификации положительного класса для наблюдения (строки) j данных прогнозирования X.
mj = yjf (Xj) - показатель классификации для классификации наблюдения j в класс, соответствующий yj. Положительные значения mj указывают на правильную классификацию и не вносят большого вклада в средние потери. Отрицательные значения mj указывают на неправильную классификацию и вносят значительный вклад в средний убыток.
Для алгоритмов, поддерживающих мультиклассовую классификацию (то есть K ≥ 3):
yj * - вектор из K - 1 нулей, с 1 в положении, соответствующем истинному наблюдаемому классу yj. Например, если истинным классом второго наблюдения является третий класс и K = 4, то y2 * = [0 0 1 0] ′. Порядок классов соответствует порядку в ClassNames свойства входной модели.
f (Xj) - вектор длины K оценок класса для наблюдения j данных предсказателя X. Порядок оценок соответствует порядку классов в ClassNames свойства входной модели.
mj = yj * ′ f (Xj). Поэтому mj - это скалярная оценка классификации, которую модель прогнозирует для истинного наблюдаемого класса.
Вес для наблюдения j равен wj. Программное обеспечение нормализует весовые коэффициенты наблюдения таким образом, что они суммируются с соответствующей вероятностью предыдущего класса. Программное обеспечение также нормализует предыдущие вероятности, так что они составляют 1. Поэтому
С учетом этого сценария в следующей таблице описаны поддерживаемые функции потерь, которые можно указать с помощью 'LossFun' аргумент пары имя-значение.
| Функция потерь | Значение LossFun | Уравнение |
|---|---|---|
| Биномиальное отклонение | 'binodeviance' | |
| Неверно классифицированная скорость в десятичной | 'classiferror' | j - метка класса, соответствующая классу с максимальным баллом. I {·} - функция индикатора. |
| Потери перекрестной энтропии | 'crossentropy' |
Взвешенная потеря перекрестной энтропии равна Kn, где веса нормализуются для суммирования в n вместо 1. |
| Экспоненциальные потери | 'exponential' | ). |
| Потеря шарнира | 'hinge' | |
| Потеря журнала | 'logit' | mj)). |
| Минимальная ожидаемая стоимость классификации ошибок | 'mincost' |
Программное обеспечение вычисляет взвешенную минимальную ожидаемую стоимость классификации, используя эту процедуру для наблюдений j = 1,..., n.
Средневзвешенное минимальное ожидаемое снижение затрат на неправильную классификацию Если используется матрица затрат по умолчанию (значение элемента которой равно 0 для правильной классификации и 1 для неправильной классификации), то |
| Квадратичные потери | 'quadratic' | ) 2. |
На этом рисунке сравниваются функции потерь (за исключением 'crossentropy' и 'mincost') над баллом м для одного наблюдения. Некоторые функции нормализуются для прохождения через точку (0,1).

С классификацией KNN связаны две затраты: истинная стоимость неправильной классификации по классам и ожидаемая стоимость неправильной классификации по наблюдениям.
Можно установить истинную стоимость неправильной классификации для класса с помощью 'Cost' аргумент пары имя-значение при выполнении fitcknn. Стоимость Cost(i,j) - затраты на классификацию наблюдения по классу j если его истинный класс 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около-Kсреди прочих мероприятий. Каждая строка cost матрица содержит ожидаемую (среднюю) стоимость классификации наблюдения в каждом из K классы. cost(n,j) является
j' i),
где
K - количество классов.
n)) - задняя вероятность класса i для наблюдения Xnew (n).
) - истинная стоимость неправильной классификации при классификации наблюдения как j, когда его истинным классом является i.
Эта функция полностью поддерживает массивы tall. Дополнительные сведения см. в разделе Массивы Tall.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция поддерживает объекты модели, оснащенные входными аргументами графического процессора.
loss выполняется только на GPU в следующих случаях:
Входной аргумент X является gpuArray.
Входной аргумент tbl содержит gpuArray элементы.
Входной аргумент mdl был оснащен входными аргументами массива GPU.
ClassificationKNN | edge | fitcknn | margin
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.