predict использует три величины для классификации наблюдений: апостериорная вероятность, априорная вероятность и стоимость.
predict классифицирует так, чтобы минимизировать ожидаемые классификационные затраты:
где
- предсказанная классификация.
K - количество классов.
- апостериорная вероятность k классов для x наблюдений.
- стоимость классификации наблюдения как y, когда его истинный класс k.
Пространство X значения делятся на области, где Y классификации является конкретным значением. Области разделяются прямыми линиями для линейного дискриминантного анализа и коническими сечениями (эллипсы, гиперболы или параболы) для квадратичного дискриминантного анализа. Визуализацию этих областей см. в разделе «Создание и визуализация классификатора дискриминантного анализа».
Апостериорная вероятность того, что x точек принадлежит классу k, является продуктом априорной вероятности и многомерной нормальной плотности. Плотность распределения многомерного нормального с 1-by-<reservedrangesplaceholder6>, средним μk и d d ковариацией Σ <reservedrangesplaceholder2> в точке 1-by-<reservedrangesplaceholder1> x,
где является определяющим, и, k, - обратная матрица.
Пусть P (k) представляет априорную вероятность k класса. Тогда апостериорная вероятность того, что x наблюдения имеет класс k,
где P (<reservedrangesplaceholder6>) является постоянной нормализацией, а именно, сумма по k P (x | k) P (<reservedrangesplaceholder0>).
Предыдущая вероятность является одним из трех вариантов:
'uniform' - априорная вероятность k классов Это 1 по сравнению с общим количеством классов.
'empirical' - априорная вероятность k классов количество обучающих выборок класса k разделенный на общее количество обучающих выборок.
Числовой вектор - априорная вероятность k классов является jпервый элемент Prior вектор. Посмотрите fitcdiscr.
После создания классификатора obj, можно задать предшествующее с помощью записи через точку:
obj.Prior = v;
где v является вектором положительных элементов, представляющих частоту, с которой происходит каждый элемент. Вам не нужно переобучать классификатор, когда вы задаете новый предыдущий.
Существует две затраты, связанные с классификацией дискриминантного анализа: истинная стоимость неправильной классификации для каждого класса и ожидаемая стоимость неправильной классификации для каждого наблюдения.
Cost(i,j) - стоимость классификации наблюдений в классы j если его класс true i. По умолчанию Cost(i,j)=1 если i~=j, и Cost(i,j)=0 если i=j. Другими словами, стоимость 0 для правильной классификации и 1 для неправильной классификации.
При создании классификатора можно задать любую матрицу затрат. Передайте матрицу затрат в Cost Пара "имя-значение" в fitcdiscr.
После создания классификатора obj, можно задать пользовательскую стоимость с помощью записи через точку:
obj.Cost = B;
B - квадратная матрица размера K-by- K когда есть K классы. Вам не нужно переобучать классификатор, когда вы устанавливаете новые затраты.
Предположим, у вас есть Nobs наблюдения, которые необходимо классифицировать с помощью обученного классификатора дискриминантного анализа obj. Предположим, у вас есть K классы. Наблюдения помещаются в матрицу Xnew с одним наблюдением за строкой. Команда
[label,score,cost] = predict(obj,Xnew)
возвращает, помимо других выходов, матрицу затрат размера Nobs-by- K. Каждая строка матрицы затрат содержит ожидаемые (средние) затраты на классификацию наблюдения в каждый из K классы. cost(n,k) является
где
K - количество классов.
- апостериорная вероятность i классов для Xnew наблюдений (n).
- стоимость классификации наблюдения как k, когда его истинный класс i.