Не понимаю вашей критики. Алгоритм работает и очень неплохо.
По существу вашего коментария.
1000 признаков — это для бинарной классификации как бы за пределами любого разумного понимания «сокращенной размерности»,
Напомню, что начальное количество признаков — 1 560 000. Сокращение в 1 560 раз. Очень неплохо
Если бы оно заработало на сотне признаков (или порядка сотни)
Обратите внимание на график зависимости точности распознавания от количества характеристик, из которого видно, что алгоритм имеет точность более 0.9 при количестве характеристик около 150. Согласитесь, неплохо
то можно было бы говорить о предотвращении оверфиттинга
Объясните, пожалуйста, что заставляет вас говорить об overfitting конкретно в этом применении
Про AdaBoost.
Данный алгоритм применяется очень часто и очень эффективно. Например, поиск лиц на картинке, распознавание эмоций, пола и т.п. Он, как и другие алгоритмы обучения, подвержен проблеме overfitting. Так, например, чрезмерно большое количество параметров в нейронной сети может привести к нему, «сильное выращивание» упомянутого коментарием выше, random forest, может привести к нему, бесконтрольный рост параметров регрессии может привести к нему… Примеров масса. Эту задачу должен решать исследователь, а не алгоритм. Цель AdaBoost — эффективная комбинация слабых классификаторов. Если у вас набор сильных классификаторов, то AdaBoost не поможет (это тезис авторов AdaBoost).
Также известны применения AdaBoost для выбора и назначения весов характеристикам, которые после этого подаются на вход другим классификаторам для обучения (например, SVM). Такие подходы часто дают очень хорошие результаты.
заметьте, что делается упор на необходимость использовать при обучении тот же алгоритм нахождения глаз
Сразу отмечу, что это не упор, а скорее рекомендация, и делается она мной, а не авторами статьи. Если алгоритмы поиска глаз будут различны, например, обучать на глазах расставленных руками из FERET и запускать с глазами расставленными автоматическим алгоритмом, то точность слегка упадет на 2-3%. Это, а также то, что алгоритм здорово работает на данных которые «не видел» на этапе обучения, демонстрирует хорошие способности к обобщение (generalization). Говорить об overfitting можно тогда, когда наблюдается практически полное запоминание обучающей выборки (или очень похожей выборки), а неизвестная выборка прогнозируется плохо. В данном случае обобщение на лицо.
Видео представлены исключительно для целей демонстрации. Алгоритм обучен исключительно на фронтальных лица. «Академические» тесты выдают 93% точности. Если убрать сглаживание, то картина практически не изменится. Сглаживание нужно чтобы убрать эффект «моргания».
Думаю это возникло из-за сглаживания по времени. Девушка появляется на маленький промежуток времени. Очередь содержащая результаты распознавания пола, полученные с предыдущих кадров наполняется Ж только к появлению следующей девушки.
Похоже, что выхотите посмотреть такую картинку
Все вместе выглядит примерно вот так:
index: 1357250
error: 2.1651162207126617e-001
index: 128970
error: 2.6818192005157471e-001
index: 989735
error: 3.0862584710121155e-001
index: 1135840
error: 3.0191463232040405e-001
index: 308475
error: 3.4082311391830444e-001
где index — номер характеристики
По существу вашего коментария.
Напомню, что начальное количество признаков — 1 560 000. Сокращение в 1 560 раз. Очень неплохо
Обратите внимание на график зависимости точности распознавания от количества характеристик, из которого видно, что алгоритм имеет точность более 0.9 при количестве характеристик около 150. Согласитесь, неплохо
Объясните, пожалуйста, что заставляет вас говорить об overfitting конкретно в этом применении
Про AdaBoost.
Данный алгоритм применяется очень часто и очень эффективно. Например, поиск лиц на картинке, распознавание эмоций, пола и т.п. Он, как и другие алгоритмы обучения, подвержен проблеме overfitting. Так, например, чрезмерно большое количество параметров в нейронной сети может привести к нему, «сильное выращивание» упомянутого коментарием выше, random forest, может привести к нему, бесконтрольный рост параметров регрессии может привести к нему… Примеров масса. Эту задачу должен решать исследователь, а не алгоритм. Цель AdaBoost — эффективная комбинация слабых классификаторов. Если у вас набор сильных классификаторов, то AdaBoost не поможет (это тезис авторов AdaBoost).
Также известны применения AdaBoost для выбора и назначения весов характеристикам, которые после этого подаются на вход другим классификаторам для обучения (например, SVM). Такие подходы часто дают очень хорошие результаты.
Сразу отмечу, что это не упор, а скорее рекомендация, и делается она мной, а не авторами статьи. Если алгоритмы поиска глаз будут различны, например, обучать на глазах расставленных руками из FERET и запускать с глазами расставленными автоматическим алгоритмом, то точность слегка упадет на 2-3%. Это, а также то, что алгоритм здорово работает на данных которые «не видел» на этапе обучения, демонстрирует хорошие способности к обобщение (generalization). Говорить об overfitting можно тогда, когда наблюдается практически полное запоминание обучающей выборки (или очень похожей выборки), а неизвестная выборка прогнозируется плохо. В данном случае обобщение на лицо.