Pull to refresh

Comments 11

ансамбль скорей является более стабильной моделью, способной показать ± схожий результат на тестовой выборке и в «бою», а значит снизить риск переобучения

Это, конечно, теоретически очень привлекательное утверждение, но можно увидеть какие-то цифры, которые подтверждают эффективность такого решения?


А то ведь если вас послушать, то получается, что можно всегда брать ансамбль — потерь нет, а "риск переобучения" ниже. Так ли это на самом деле?

Это так на самом деле. Какие-то цифры, подтверждающие данный факт — это топ каждого конкурса на кагле, где выигрывает ансамбль (чаще всего не такой простой, как описано в статье, а стекинг, но все же).


Другое дело, что в реальной жизни использовать ансамбли очень дорого по перфомансу.

Это так на самом деле. [...] Другое дело, что в реальной жизни использовать ансамбли очень дорого

Одно противоречит другому. Перформанс — это тоже потеря; следовательно, можно делать анализ того, насколько (потенциальный) выигрыш оправдан.


Какие-то цифры, подтверждающие данный факт — это топ каждого конкурса на кагле, где выигрывает ансамбль

Беда в том, что одно дело — применять что-то для того, чтобы выиграть Каггл, и совсем другое — утверждать, что это гарантированно правильная стратегия для "в бою".


Ну и отдельным пунктом идет то, что повторить условия Каггл, чтобы продемонстрировать, что в них ансамбль имеет преимущество, вполне возможно. Это тоже дало бы полезные цифры для обсуждения.

Одно противоречит другому. Перформанс — это тоже потеря; следовательно, можно делать анализ того, насколько (потенциальный) выигрыш оправдан.

Где противоречие? У автора про точность, а перфоманс — это про скорость работы или требуемую память. Это разные характеристики, и теряя в одной мы приобретаем другую, но в контексте статьи речь исключительно про метрики точности модели, и когда я писал «это так на самом деле», я говорил тоже про метрики.

Беда в том, что одно дело — применять что-то для того, чтобы выиграть Каггл, и совсем другое — утверждать, что это гарантированно правильная стратегия для «в бою».

Ну автор же и рассказывает про Kaggle InClass соревнование, а не про продакшен.
Ну автор же и рассказывает про Kaggle InClass соревнование, а не про продакшен.

"Часто случается, что по ходу решения прикладной задачи по анализу данных не сразу очевидно (или совсем неочевидно) какая модель обучения подходит наилучшим образом."


Где противоречие?

Там, где забыли, что производительность — тоже метрика модели.


У автора про точность

Потенциальную. Из поста так и не видно, где выигрыш.

«Часто случается, что по ходу решения прикладной задачи по анализу данных не сразу очевидно (или совсем неочевидно) какая модель обучения подходит наилучшим образом.»

Справедливо. Но автор нигде вроде бы и не советовал использовать ансамбли как абсолютно правильную стратегию на все случаи жизни. Он лишь сказал, что будет гарантированно хорошая точность.

Там, где забыли, что производительность — тоже метрика модели.

Это не метрика качества. Придираться к этому в контексте фразы автора «ансамбль скорей является более стабильной моделью, способной показать ± схожий результат на тестовой выборке и в «бою», а значит снизить риск переобучения» — это демагогия.

Он лишь сказал, что будет гарантированно хорошая точность.

Это утверждение меня сильно интересует. Где его доказательство?


Это не метрика качества.

Это зависит от того, что вы считаете "качеством". Модель, неспособная дать предсказание за нужное время, или которую нельзя развернуть в нужных условиях, или которая не обучается на существующем объеме данных — это некачественная модель.

Во-первых спасибо за время, уделенное прочтению статьи!

Относительно дискуссии о корректности приведенных высказываний, я не берусь от частного переходить к общему, потому что согласен с Вами — частный случай никоим образом не должен претендовать на универсальную теорию.

Более того, рассуждать о том, насколько уместно «везде» использовать методику построения ансамблей я тоже не возьмусь, но хочу обратить Ваше внимание на ряд моментов:
— как верно высказался roryorangepants, в данной статье речь шла о, так скажем, соревновательном Data Science, который чаще всего встречается на kaggle competitions, и там очень часто (если не всегда) наилучший результат показывают ensemble модели, часто гораздо более сложные, чем приведенная в статье.
— несмотря на то, что целью данной статьи не было обосновать сам факт выбора ансамбля как оптимального подхода, а рассмотреть скорей специфику использования конкретного модуля из библиотеки skicit, в качестве теоретической базы для обоснования могут служить статьи Thomas G Dietterich: Ensemble Methods in Machine Learning , где в качестве заключения автор делает вывод о том, что:
Ensembles are well established as a method for obtaining highly accurate classiers by combining less accurate ones
, что в целом соответствует высказываниям, сделанным мною в тексте.
— в качестве доказательства распространенности подхода можно использовать статью «История развития ансамблевых методов классификации в машинном обучении» Юрия Каштинского, где приводится история вопроса и даются перечни работ, посвященных изучению «правильности» выбранного подхода.
— из всем известного курса Andrew Ng, а также по ссылке, которая дана в тексте на курс Open Data Science блог также следует, что практика объединения более слабых отдельно-взятых классификаторов для получения «улучшенного» объединенного набирает обороты и является если не стандартом, то уже зарекомендовавшим себя подходом.
— не берусь добавить к вышеуказанным статьям и ресурсам свое сильно субъективное мнение, но, учитывая что я больше практикуюсь в построении моделей для изучения финансовых рынков, хорошим подспорьем может служить также недавно вышедшая статья: Online Ensembles for Financial Trading, где утверждается, что
Diverse behavior of models on predicting complex dynamic systems: in problems with so many unrecorded factors influencing the dynamics of a systemis hard to find a predictive model that is good for all regimes.
и исходя из этого, часто более практичным даже в решении прикладных задач с онлайн-обновляющимися данными является использование как раз нескольких моделей в виде ансамбля, что позволяет в целом повысить надежность предсказания.

В завершении хочу повторно сказать спасибо за высказанные мнения и замечания и все же уточнить, что статья скорей посвящена конкретному кейсу и должна была скорей ответить на вопрос «как применить ансамбль, если уже решились», чем «стоит ли его применять и насколько этот подход лучше других». Спасибо !)

в данной статье речь шла о, так скажем, соревновательном Data Science, который чаще всего встречается на kaggle competitions

Я специально еще раз перечитал статью. Kaggle (и вообще соревнования) первый раз упоминаются в постскриптуме. Зато вот о прикладных задачах вы пишете во втором абзаце (а прикладные задачи и соревновательные задачи — это две разные вещи).


качестве теоретической базы для обоснования могут служить статьи [...] автор делает вывод [...] "Ensembles are well established as a method for obtaining highly accurate classifiers by combining less accurate ones", что в целом соответствует высказываниям, сделанным мною в тексте

Вот. Это важный момент. Ваша цитата говорит о ансамблях, которые точнее, чем входящие в них базовые классификаторы. Возьмем, сначала, ваш "итоговый результат":


Accuracy: 0.75 (± 0.02) [Logistic Regression]
Accuracy: 0.79 (± 0.02) [Naive Bayes]
Accuracy: 0.79 (± 0.02) [SGD]
Accuracy: 0.79 (± 0.02) [Ensemble_HardVoting]

Как мы видим, ваш ансамбль не точнее, чем входящий в него базовый классификатор. Приведенное вами теоретическое обоснование не выполняется.


Теперь возьмем сделанное вами утверждение:


При этом итоговое значение (по метрике accuracy) ансамбля не обязательно должно превышать лучшего значения из входящих в него моделей, т.к. ансамбль скорей является более стабильной моделью, способной показать ± схожий результат на тестовой выборке и в «бою», а значит снизить риск переобучения, подгонки под обучающую выборку, и других сопутствующих обучению классификаторов проблем.

Вы говорите не о том, что ансамбль точнее, чем базовые классификаторы (более того, вы говорите, что он не обязательно точнее), вы говорите о том, что он стабильнее (имеет меньший риск переобучения). Я поискал, но не нашел подтверждения этому утверждению в выводах приводенной вами статьи.


Возьмем статью Каштинского, вывод (выделение мое):


в настоящее время активно развиваются ансамблевые методы классификации, объединяющие в одной модели множество разных классификаторов, обученных на разных выборках данных

Я специально пошел и проверил: VotingClassifier не разбивает обучающую выборку, значит, эта часть к вам не применима. Дальше...


Один из наиболее точных методов, существующих на сегодняшний день, — это бустинг над решающими деревьями

… тоже не ваш случай.


Собственно (в меру моего понимания), единственное, что описывает VotingClassifier в этой статье — это абзац в разделе 3.2:


Интуитивно это можно представить так: при наличии пяти классификаторов с точностью предсказания 60% можно назначать классифицируемому объекту ту метку, которая предсказывается большинством из этих пяти слабых классификаторов. Это ансамблевый метод классификации простым голосованием (или голосованием большинством). В таком случае, как это легко показать, точность мета-классификатора повышается до 68%

Но это опять про точность, а не про защиту от переобучения. То же относится и к остальным приведенным вами примерам.


статья скорей посвящена конкретному кейсу и должна была скорей ответить на вопрос «как применить ансамбль, если уже решились», чем «стоит ли его применять и насколько этот подход лучше других».

В этом и проблема: после того, как вы решили что-то применить, надо проверить, есть ли от этого применения польза (я вот как-то решился применить для одной модели сначала PCA, потом LDA, а потом NMF, и был очень рад тому, что они показывают что-то осмысленное, но вот предсказания модели не улучшились ни на йоту). У вас же есть выдвинутая гипотеза ("ансамбль меньше переобучается"), но нет ни ее проверки, ни ее подтверждения.

Товарищ, кого ты тут пытаешься обмануть, в последнем абзаце? Нет у тебя никаких исходников- это просто копипаст статьи из документации sklearn: scikit-learn.org/stable/modules/ensemble.html#voting-classifier

Все фрагменты кода один в один совпадают. Мог бы и все про ансамбли тогда перевести сразу, раз у ж взялся за перевод доков. И еще это не самые интересные методы.
Есть еще: rasbt.github.io/mlxtend/user_guide/classifier/EnsembleVoteClassifier

И по обходу параметров SearchGRID — самый неэффективный.
Ваши товарищи, уважаемый, явно в кружке с Фомой неверующим.
Если бы я хотел перевести документацию, то перевел бы.
Вот исходник, который я использовал для участия в соревновании, и на основании которого писал статью, собрав GridSearch через общий пайплайн просто для наглядности использования метода VotingClassifier.
Вам могли не понравиться ни статья, ни методы, использованные в ней, но обвинять в копи-пасте, видя метку «из песочницы», где нельзя было указывать изначально ссылки и т.д. — очень необъективно.
Sign up to leave a comment.

Articles