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