exponenta event banner

предсказать

Прогнозирование меток с использованием k-ближайшей модели классификации соседей

Описание

label = predict(mdl,X) возвращает вектор прогнозируемых меток класса для данных предиктора в таблице или матрице X, на основе обученной модели классификации k-ближайших соседей mdl. См. раздел Прогнозируемая метка класса.

пример

[label,score,cost] = predict(mdl,X) также возвращает:

  • Матрица классификационных баллов (score), указывая вероятность того, что метка исходит от определенного класса. Для k-ближайшего соседа баллы являются задними вероятностями. См. Апостериорная вероятность.

  • Матрица ожидаемых затрат на классификацию (cost). Для каждого наблюдения в X, прогнозируемая метка класса соответствует минимальным ожидаемым затратам на классификацию среди всех классов. См. раздел Ожидаемые затраты.

Примеры

свернуть все

Создайте k-ближайший классификатор соседей для данных радужки Фишера, где k = 5. Оцените некоторые прогнозы модели для новых данных.

Загрузите набор данных радужки Фишера.

load fisheriris
X = meas;
Y = species;

Создайте классификатор для пяти ближайших соседей. Стандартизация данных некатегорического предиктора.

mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

Спрогнозировать классификацию цветов с минимальными, средними и максимальными характеристиками.

Xnew = [min(X);mean(X);max(X)];
[label,score,cost] = predict(mdl,Xnew)
label = 3x1 cell
    {'versicolor'}
    {'versicolor'}
    {'virginica' }

score = 3×3

    0.4000    0.6000         0
         0    1.0000         0
         0         0    1.0000

cost = 3×3

    0.6000    0.4000    1.0000
    1.0000         0    1.0000
    1.0000    1.0000         0

Вторая и третья строки матриц оценки и стоимости имеют двоичные значения, что означает, что все пять ближайших соседей среднего и максимального цветочных измерений имеют идентичные классификации.

Входные аргументы

свернуть все

k - ближайшая модель классификатора соседей, заданная как ClassificationKNN объект.

Данные предиктора, подлежащие классификации, указываются как числовая матрица или таблица.

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

  • Для числовой матрицы:

    • Переменные, составляющие столбцы X должен иметь тот же порядок, что и переменные предиктора, используемые для обучения mdl.

    • Если вы тренируетесь mdl использование таблицы (например, Tbl), то X может быть числовой матрицей, если Tbl содержит все числовые переменные предиктора. k-ближайшая соседняя классификация требует однородных предикторов. Поэтому для лечения всех числовых предикторов в Tbl как категорично во время обучения, установить 'CategoricalPredictors','all' при обучении с использованием fitcknn. Если Tbl содержит гетерогенные предикторы (например, числовые и категориальные типы данных) и X является числовой матрицей, то predict выдает ошибку.

  • Для таблицы:

    • predict не поддерживает многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов.

    • Если вы тренируетесь mdl использование таблицы (например, Tbl), затем все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и используемые для обучения mdl (хранится в mdl.PredictorNames). Однако порядок столбцов X не обязательно соответствовать порядку столбцов Tbl. Оба Tbl и X может содержать дополнительные переменные (переменные ответа, веса наблюдения и т.д.), но predict игнорирует их.

    • Если вы тренируетесь mdl используя числовую матрицу, затем имена предикторов в mdl.PredictorNames и соответствующие имена переменных предиктора в X должно быть то же самое. Чтобы указать имена предикторов во время обучения, см. PredictorNames аргумент пары имя-значение fitcknn. Все переменные предиктора в X должны быть числовыми векторами. X может содержать дополнительные переменные (переменные ответа, веса наблюдения и т.д.), но predict игнорирует их.

Если установить 'Standardize',true в fitcknn обучаться mdl, то программное обеспечение стандартизирует столбцы X используя соответствующие средства в mdl.Mu и стандартные отклонения в mdl.Sigma.

Типы данных: double | single | table

Выходные аргументы

свернуть все

Прогнозируемые метки классов для наблюдений (строк) в X, возвращаемый как категориальный массив, символьный массив, логический вектор, вектор числовых значений или массив ячеек символьных векторов. label имеет длину, равную количеству строк в X. Метка - это класс с минимальными ожидаемыми затратами. См. раздел Прогнозируемая метка класса.

Предсказанные оценки класса или задние вероятности, возвращенные в виде числовой матрицы размера n-by-K. n - количество наблюдений (строк) в X, и K - количество классов (в mdl.ClassNames). score(i,j) - задняя вероятность того, что наблюдение i в X имеет класс j в mdl.ClassNames. См. Апостериорная вероятность.

Типы данных: single | double

Ожидаемые затраты на классификацию, возвращенные в виде числовой матрицы размера n-by-K. n - количество наблюдений (строк) в X, и K - количество классов (в mdl.ClassNames). cost(i,j) - стоимость классификации строк i из X как класс j в mdl.ClassNames. См. раздел Ожидаемые затраты.

Типы данных: single | double

Алгоритмы

свернуть все

Метка прогнозируемого класса

predict классифицирует путем минимизации ожидаемых затрат на неправильную классификацию:

y ^ = argminy = 1,..., K∑j=1KP^ (j 'x) C (y' j),

где:

  • y ^ - прогнозируемая классификация.

  • K - количество классов.

  • P ^ (j 'x) - задняя вероятность класса j для наблюдения x.

  • C (y 'j) - стоимость классификации наблюдения как y, когда его истинным классом является j.

Задняя вероятность

Рассмотрим вектор (одна точка запроса) xnew и модель mdl.

  • k - число ближайших соседей, используемых при прогнозировании; mdl.NumNeighbors.

  • nbd(mdl,xnew) задает k ближайших соседей к xnew в mdl.X.

  • Y(nbd) определяет классификации точек в nbd(mdl,xnew), а именно mdl.Y(nbd).

  • W(nbd) определяет веса точек в nbd(mdl,xnew).

  • prior задает приоры классов в mdl.Y.

Если модель содержит вектор предыдущих вероятностей, то веса наблюдения W нормализуются классом для суммирования с приорами. Этот процесс может включать расчет для точки xnew, поскольку веса могут зависеть от расстояния от xnew к точкам в mdl.X.

Задняя вероятность p (j |xnewявляется

p (j 'xnew) =∑i∈nbdW (i) 1Y (X (i)) =j∑i∈nbdW (i).

Здесь 1Y (X (i)) = j1 когда mdl.Y(i) = j, и 0 в противном случае.

Истинная стоимость неправильной классификации

С классификацией 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) является

∑i=1KP^ (i 'Xnew (n)) C (j' i),

где

  • K - количество классов.

  • P ^ (i 'X (n)) - задняя вероятность класса i для наблюдения Xnew (n).

  • C (j 'i) - истинная стоимость неправильной классификации при классификации наблюдения как j, когда его истинным классом является i.

Расширенные возможности

.
Представлен в R2012a