Я думаю, первое, что вы должны сделать, это осознать, что перечисленные вами алгоритмы используются на разных этапах распознавания лиц.
Во-первых, вам нужно определиться с представлением, т.е. е. функции для использования.
Это могут быть необработанные пиксели, фильтры Габора, дескрипторы форм, деформируемые модели и т. Д.
Затем, как правило, вы хотите уменьшить размерность ваших функций. Это то место, где используются такие алгоритмы, как PCA, ICA или LDA, которые проектируют точки данных в пространство меньшего измерения, пытаясь сохранить большую часть дисперсии (PCA) или обеспечить оптимальное разделение точек разных категорий (LDA).
Тогда вы, вероятно, захотите обучить классификатору своих черт, чтобы различать лица разных людей. Существует множество алгоритмов на выбор, таких как ближайший сосед, машины опорных векторов, скрытые марковские модели, байесовские сети и т. Д.
Обратите внимание, что выбор алгоритма для определенного этапа может зависеть или не зависеть от алгоритмов для других этапов. Например, PCA может использоваться для уменьшения размерности практически любого типа функций. С другой стороны, не сразу очевидно, как можно использовать классификатор машин опорных векторов для граней, представленных деформируемой сеткой.
Полагаю, первое, что вы должны попытаться сделать, это очень точно определить вашу проблему. Вы хотите различать лица нескольких человек, например, узнавать членов своей семьи на фотографиях? Хотите узнать людей из огромной базы данных? У вас есть много тренировочных образов для каждого лица или только несколько? Хотите работать с разными ориентациями и условиями освещения?
Ответы на эти вопросы определяют, насколько сложна ваша проблема, и, безусловно, повлияют на ваш выбор алгоритмов.
EDIT:
Вот тезис кого-то, кто пытался решить подобную проблему. Это с 2002 года, но ИМХО это хорошее место для начала.