exponenta event banner

ClassificationKNN

k-ближайшая соседняя классификация

Описание

ClassificationKNN - модель классификации ближайшего соседа, в которой можно изменить метрику расстояния и число ближайших соседей. Потому что ClassificationKNN классификатор хранит учебные данные, модель можно использовать для вычисления прогнозов повторного замещения. Либо используйте модель для классификации новых наблюдений с помощью predict способ.

Создание

Создать ClassificationKNN модель с использованием fitcknn.

Свойства

развернуть все

Свойства KNN

Алгоритм разрыва соединения, используемый predict если несколько классов имеют одинаковую наименьшую стоимость, заданную как одно из следующих значений:

  • 'smallest' - использовать наименьший индекс среди связанных групп.

  • 'nearest' - Используйте класс с ближайшим соседом среди связанных групп.

  • 'random' - Использовать случайный тайбрейкер среди связанных групп.

По умолчанию связи возникают, когда несколько классов имеют одинаковое количество ближайших точек среди k ближайших соседей. BreakTies применяется, когда IncludeTies является false.

Изменение BreakTies с использованием точечной нотации: mdl.BreakTies = newBreakTies.

Метрика расстояния, заданная как символьный вектор или дескриптор функции. Допустимые значения зависят от NSMethod собственность.

NSMethodМетрика расстояния разрешена
'exhaustive'Любая метрика расстояния ExhaustiveSearcher
'kdtree''cityblock', 'chebychev', 'euclidean', или 'minkowski'

В следующей таблице перечислены ExhaustiveSearcher метрики расстояния.

СтоимостьОписание
'cityblock'Расстояние между городскими кварталами.
'chebychev'Расстояние Чебычева (максимальная разность координат).
'correlation'Один минус выборочная линейная корреляция между наблюдениями (обрабатываемая как последовательности значений).
'cosine'Один минус косинус включенного угла между наблюдениями (рассматривается как векторы).
'euclidean'Евклидово расстояние.
'hamming'Расстояние взлома, процент различающихся координат.
'jaccard'Один минус коэффициент Джаккарда, процент отличных от нуля координат.
'mahalanobis'Расстояние Махаланобиса, вычисленное с использованием положительной определенной ковариационной матрицы C. Значение по умолчанию C - выборка ковариационной матрицы X, как вычислено cov(X,'omitrows'). Задание другого значения для C, установите DistParameter имущество mdl с использованием точечной нотации.
'minkowski'Минковская дистанция. Показатель по умолчанию: 2. Чтобы задать другую степень, задайте значение DistParameter имущество mdl с использованием точечной нотации.
'seuclidean'Стандартизированное евклидово расстояние. Каждая разность координат между X и масштабируется точка запроса, означающая деление на значение масштаба S. Значение по умолчанию S является стандартным отклонением, вычисленным из X, S = std(X,'omitnan'). Чтобы указать другое значение для S, установите DistParameter имущество mdl с использованием точечной нотации.
'spearman'Один минус выборка ранговой корреляции Спирмена между наблюдениями (обрабатываемыми как последовательности значений).
@distfun

Дескриптор функции расстояния. distfun имеет форму

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
где

  • ZI является 1около-N вектор, содержащий одну строку X или Y.

  • ZJ является M2около-N матрица, содержащая несколько строк X или Y.

  • D2 является M2около-1 вектор расстояний, и D2(k) - расстояние между наблюдениями ZI и ZJ(k,:).

Дополнительные сведения см. в разделе Метрики расстояния.

Изменение Distance с использованием точечной нотации: mdl.Distance = newDistance.

Если NSMethod является 'kdtree', для изменения можно использовать точечную нотацию Distance только для метрик 'cityblock', 'chebychev', 'euclidean', и 'minkowski'.

Типы данных: char | function_handle

Функция взвешивания расстояния, заданная как одно из значений в этой таблице.

СтоимостьОписание
'equal'Без взвешивания
'inverse'Вес 1/расстояние
'squaredinverse'Вес 1/дистанцие2
@fcnfcn - функция, которая принимает матрицу неотрицательных расстояний и возвращает матрицу того же размера, содержащую неотрицательные веса расстояний. Например, 'squaredinverse' эквивалентно @(d)d.^(–2).

Изменение DistanceWeight с использованием точечной нотации: mdl.DistanceWeight = newDistanceWeight.

Типы данных: char | function_handle

Параметр метрики расстояния, указанный как одно из значений, описанных в этой таблице.

Метрика расстоянияПараметр
'mahalanobis'Положительная определенная ковариационная матрица C
'minkowski'Показатель расстояния Минковского, положительный скаляр
'seuclidean'Вектор положительных значений шкалы длиной, равной числу столбцов X

Для любой другой метрики расстояния значение DistParameter должно быть [].

Вы можете изменить DistParameter с использованием точечной нотации: mdl.DistParameter = newDistParameter. Однако, если Distance является 'mahalanobis' или 'seuclidean', то вы не можете изменить DistParameter.

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

Флаг включения галстука, указывающий, predict включает все соседи, значения расстояний которых равны k-му наименьшему расстоянию, указанному как false или true. Если IncludeTies является true, predict включает в себя все эти соседи. В противном случае predict использует точно k соседей (см. BreakTies свойство).

Изменение IncludeTies с использованием точечной нотации: mdl.IncludeTies = newIncludeTies.

Типы данных: logical

Это свойство доступно только для чтения.

Метод поиска ближайшего соседа, указанный как 'kdtree' или 'exhaustive'.

  • 'kdtree' - создает и использует дерево Kd для поиска ближайших соседей.

  • 'exhaustive' - использует исчерпывающий алгоритм поиска. При прогнозировании класса новой точки xnew, программа вычисляет значения расстояния из всех точек в X кому xnew найти ближайших соседей.

Значение по умолчанию: 'kdtree' когда X имеет 10 или меньше столбцов, X не разрежен, а метрика расстояния 'kdtree' тип. В противном случае значением по умолчанию является 'exhaustive'.

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

Изменение NumNeighbors с использованием точечной нотации: mdl.NumNeighbors = newNumNeighbors.

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

Другие свойства классификации

Это свойство доступно только для чтения.

Индексы категориального предиктора, указанные как вектор положительных целых чисел. CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).

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

Это свойство доступно только для чтения.

Названия классов в данных обучения Y с удаленными дубликатами, заданными как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. ClassNames имеет тот же тип данных, что и Y. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

Типы данных: categorical | char | logical | single | double | cell

Стоимость неправильной классификации точки, указанной как квадратная матрица. Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i (то есть строки соответствуют истинному классу, а столбцы соответствуют прогнозируемому классу). Порядок строк и столбцов в Cost соответствует порядку классов в ClassNames. Количество строк и столбцов в Cost - количество уникальных классов в ответе.

По умолчанию Cost(i,j) = 1 если i ~= j, и Cost(i,j) = 0 если i = j. Другими словами, стоимость составляет 0 для правильной классификации и 1 за неправильную классификацию.

Изменение Cost матрица с использованием точечной нотации: mdl.Cost = costMatrix.

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

Это свойство доступно только для чтения.

Расширенные имена предикторов, заданные как массив ячеек символьных векторов.

Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames содержит имена, описывающие развернутые переменные. В противном случае ExpandedPredictorNames является таким же, как PredictorNames.

Типы данных: cell

Это свойство доступно только для чтения.

Параметры, используемые при обучении ClassificationKNN модель, заданная как объект.

Это свойство доступно только для чтения.

Предикторное средство, указанное как числовой вектор длины numel(PredictorNames).

Если не стандартизировать mdl при обучении модели с использованием fitcknn, то Mu пуст ([]).

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

Это свойство доступно только для чтения.

Количество наблюдений, использованных при обучении ClassificationKNN модель, заданная как положительный целочисленный скаляр. Это число может быть меньше числа строк в данных обучения, поскольку строки содержат NaN значения не являются частью посадки.

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

Это свойство доступно только для чтения.

Имена переменных предиктора, заданные как массив ячеек векторов символов. Имена переменных находятся в том же порядке, в котором они отображаются в данных обучения. X.

Типы данных: cell

Предшествующие вероятности для каждого класса, указанные как числовой вектор. Порядок элементов в Prior соответствует порядку классов в ClassNames.

Добавить или изменить Prior вектор с использованием точечной нотации: mdl.Prior = priorVector.

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

Это свойство доступно только для чтения.

Имя ответной переменной, указанное как символьный вектор.

Типы данных: char

Это свойство доступно только для чтения.

Строки исходных учебных данных, используемых при подборе ClassificationKNN модель, заданная как логический вектор. Это свойство пусто, если используются все строки.

Типы данных: logical

Преобразование баллов, указанное как вектор символов или дескриптор функции.

В этой таблице представлены доступные векторы символов.

СтоимостьОписание
'doublelogit'1/( 1 + e-2x)
'invlogit'log (x/( 1 - x))
'ismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0
'logit'1/( 1 + e-x)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2x – 1
'symmetricismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1
'symmetriclogit'2/( 1 + e-x) - 1

Для функции MATLAB ® или определяемой функции используйте ее дескриптор функции для преобразования баллов. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).

Изменение ScoreTransform с использованием точечной нотации: mdl.ScoreTransform = newScoreTransform.

Типы данных: char | function_handle

Это свойство доступно только для чтения.

Стандартные отклонения предиктора, заданные как числовой вектор длины numel(PredictorNames).

Если вы не стандартизируете переменные предиктора во время обучения, то Sigma пуст ([]).

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

Метки класса, указанные как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. Каждое значение в Y - наблюдаемая метка класса для соответствующей строки в X.

Y имеет тот же тип данных, что и данные в Y используется для обучения модели. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)

Типы данных: single | double | logical | char | cell | categorical

Свойства оптимизации гиперпараметров

Это свойство доступно только для чтения.

Оптимизация гиперпараметров с перекрестной проверкой, указанная как BayesianOptimization объект или таблица гиперпараметров и связанных значений. Это свойство не является пустым, если 'OptimizeHyperparameters' аргумент пары «имя-значение» не является пустым при создании модели с помощью fitcknn. Значение зависит от настройки 'HyperparameterOptimizationOptions' аргумент пары имя-значение при создании модели:

  • 'bayesopt' (по умолчанию) - объект класса BayesianOptimization

  • 'gridsearch' или 'randomsearch' - Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной проверки) и ранга наблюдений от самого низкого (лучший) до самого высокого (худший)

Функции объекта

compareHoldoutСравнение точности двух классификационных моделей с использованием новых данных
crossvalМодель машинного обучения с перекрестной проверкой
edgeКрай k-ближайшего соседнего классификатора
gatherСбор свойств модели машинного обучения из графического процессора
limeЛокальные интерпретируемые модели-агностические объяснения (LIME)
lossПотеря k-ближайшего классификатора соседей
marginЗапас k-ближайшего классификатора соседей
partialDependenceВычислить частичную зависимость
plotPartialDependenceСоздание графиков частичной зависимости (PDP) и индивидуального условного ожидания (ICE)
predictПрогнозирование меток с использованием k-ближайшей модели классификации соседей
resubEdgeКрай классификации повторной субституции
resubLossПотеря классификации возмещения
resubMarginМаржа классификации ресообразования
resubPredictКлассификация данных обучения с использованием обученного классификатора
shapleyЗначения Шапли
testckfoldСравнение точности двух классификационных моделей с помощью повторной перекрестной проверки

Примеры

свернуть все

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

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

load fisheriris
X = meas;
Y = species;

X - числовая матрица, содержащая четыре измерения лепестка для 150 ирисов. Y - клеточный массив символьных векторов, который содержит соответствующие виды радужки.

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

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1)
Mdl = 
  ClassificationKNN
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 150
                 Distance: 'euclidean'
             NumNeighbors: 5


  Properties, Methods

Mdl является обученным ClassificationKNN классификатор и некоторые его свойства отображаются в окне команд.

Доступ к свойствам Mdl, используйте точечную нотацию.

Mdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

Mdl.Prior содержит предшествующие вероятности класса, которые можно указать с помощью 'Prior' аргумент пары имя-значение в fitcknn. Порядок предшествующих вероятностей класса соответствует порядку классов в Mdl.ClassNames. По умолчанию предшествующие вероятности являются соответствующими относительными частотами классов в данных.

Можно также сбросить предыдущие вероятности после обучения. Например, установите предыдущие вероятности 0,5, 0,2 и 0,3 соответственно.

Mdl.Prior = [0.5 0.2 0.3];

Вы можете пройти Mdl кому predict для маркировки новых измерений или crossval для перекрестной проверки классификатора.

Совет

  • compact функция уменьшает размер большинства классификационных моделей, удаляя свойства обучающих данных и любые другие свойства, которые не требуются для прогнозирования меток новых наблюдений. Поскольку для k-ближайших моделей классификации соседей требуются все обучающие данные для прогнозирования меток, нельзя уменьшить размер ClassificationKNN модель.

Альтернативная функциональность

knnsearch находит k-ближайшие соседи точек. rangesearch находит все точки в пределах фиксированного расстояния. Эти функции можно использовать для классификации, как показано в разделе Классификация данных запроса. Если требуется выполнить классификацию, используйте ClassificationKNN модели могут быть более удобными, поскольку вы можете обучить классификатор за один шаг (используя fitcknn) и классифицировать в других шагах (используя predict). Можно также обучить модель классификации k-ближайших соседей, используя одну из опций перекрестной проверки в вызове fitcknn. В этом случае fitcknn возвращает ClassificationPartitionedModel объект модели с перекрестной проверкой.

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

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