Я изучаю распознавание образов и машинное обучение, и я столкнулся со следующим вопросом.
Рассмотрим задачу классификации двух классов с равной вероятностью предшествующего класса
и распределение экземпляров в каждом классе, заданное
Как рассчитать вес критерия Фишера?
Обновление 2: Расчетный вес, предоставленный моей книгой: .
Обновление 3: Как намекнул @xeon, я понимаю, что должен определить линию проекции дискриминанта Фишера.
Обновление 4: Пусть будет направлением проекционной линии, тогда метод линейного дискриминанта Фишера находит, что наилучшим является тот, для которого функция критерия максимизирована. Оставшаяся проблема заключается в том, как мы можем получить численно вектор?W W
machine-learning
self-study
classification
discriminant-analysis
Доктор Хошанг
источник
источник
Ответы:
После статьи, на которую вы ссылаетесь (Mika et al., 1999) , мы должны найти которое максимизирует так называемый обобщенный фактор Рэлея ,w
где для означает и ковариации C 1 , C 2 ,m1,m2 C1,C2
Собственный вектор с наибольшим собственным значением максимизирует фактор Рэлея. Вместо того чтобы делать расчеты вручную, я решил проблему обобщенной собственной значения в Python с использованием
scipy.linalg.eig
и получил который отличается от решения , которое вы нашли в своей книге. Ниже я изобразил оптимальную гиперплоскость вектора веса, который я нашел (черный), и гиперплоскости вектора веса, найденный в вашей книге (красный).источник
После Дуда и соавт. (Pattern CLassification), который имеет альтернативное решение @lucas и в этом случае дает очень простое решение вручную. (Надеюсь, это альтернативное решение поможет! :))
В двух классах LDA целью является:
где и , здесь - ковариационная матрица, а - средства класса 1 и 2 соответственно.SB=(m1−m2)(m1−m2)T SW=S1+S2 S1,S2 m1,m2
Решение этого обобщенного фактора Рэлея является обобщенной пробой собственного значения.
Вышеуказанная композиция имеет раствор в закрытой форме. - матрица ранга 1 с базисом поэтому который может быть normlizd, чтобы получить ответ.SB m1−m2 w∝SW−1(m1−m2)
Я только что вычислил и получил [0.5547; 0.8321].w
Ссылка: шаблон классификации по Дуда, Харт, Аист
Альтернативно, это может быть решено путем нахождения собственного вектора к обобщенной проблеме собственных значений.SBw=λSWw
Многочлен в лямбде может быть сформирован и решения этого многочлена будут собственным значением для . Теперь предположим, что вы получили набор собственных значений качестве корней многочлена. Теперь замените и получите соответствующий собственный вектор в качестве решения линейной системы уравнений . Делая это для каждого i, вы можете получить набор векторовdeterminant(SB−λSW) SBw=λSWw λ1,λ2,...,λn, λ=λi,i∈{1,2,..,n} SBwi=λiSWwi {wi}ni=1 и это набор собственных векторов в качестве решений.
Таким образом, 0 и 40/3 - это два решения. Для LDA, собственный вектор, соответствующий наибольшему собственному значению, является решением.λ=
Решение системы уравнений и(SB−λiSW)wi=0 λi=40/3
который оказывается[16−3λ161616−2λ]wi∝[−724848−32]wi=0
Решение вышеуказанной системы уравнений: что совпадает с предыдущим решением.[−0.5547−0.8321]∝[0.55470.8321]
В качестве альтернативы мы можем сказать, что лежит в нулевом пространстве .[ - 72 48 48 - 32 ][0.55470.8321] [−724848−32]
Для двух классов LDA собственный вектор с наибольшим собственным значением является решением. В общем, для LDA класса C первые собственные векторы C - 1 с самыми высокими собственными значениями C - 1 составляют решение.
Это видео объясняет, как вычислить собственные векторы для простой задачи на собственные значения. ( https://www.khanacademy.org/math/linear-algebra/alternate_bases/eigen_everything/v/linear-algebra-finding-eigenvectors-and-eigenspaces-example )
Ниже приведен пример. http://www.sosmath.com/matrix/eigen2/eigen2.html
Мультиклассовый LDA: http://en.wikipedia.org/wiki/Linear_discriminant_analysis#Multiclass_LDA
Вычисление нулевого пространства матрицы: https://www.khanacademy.org/math/linear-algebra/vectors_and_spaces/null_column_space/v/null-space-2-calculating-the-null-space-of-a-matrix
источник