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.