2015-07-10 3 views
5

Я пытаюсь понять, как случайный лес работает на английском языке, а не в математике. Может ли кто-нибудь дать мне действительно простое объяснение того, как работает этот алгоритм?Простое объяснение случайного леса

Насколько я понимаю, мы передаем функции и метки, не сообщая алгоритму, какая функция должна быть классифицирована как метка? Поскольку я использовал Naive Bayes, основанный на вероятности, нам нужно сказать, какой функцией должна быть метка. Я совсем далеко?

Если я могу получить очень простое объяснение на английском языке, я был бы очень благодарен.

+5

https: //www.quora.com/Random-Forests/How-do-random-forest-work-in-laymans-terms – CoryKramer

ответ

4

RandomForest использует так называемый метод мешков. Идея основана на классическом смещении вариаций смещения. Предположим, что у нас есть набор (скажем N) переопределенных оценок, которые имеют низкую предвзятость, но с высокой дисперсией выборки. Таким образом, низкая предвзятость хорошая, и мы хотим сохранить ее, высокая дисперсия плоха, и мы хотим ее уменьшить. RandomForest пытается достичь этого, выполняя так называемые бутстрапы/подэмплинг (как отметил @Alexander, это комбинация выборок бутстрапов как по наблюдениям, так и по функциям). Прогнозирование - это среднее значение отдельных оценок, поэтому свойство с низким смещением успешно сохраняется. И далее по Центральной предельной теореме дисперсия этого среднего образца имеет дисперсию, равную variance of individual estimator divided by square root of N. Итак, теперь у него есть свойства с низким смещением и низкой дисперсией, и поэтому RandomForest часто превосходит автономную оценку.

+0

Чтобы немного расширить превосходное резюме Jianxun выше, RandomForest обычно принимает произвольный выбор одной трети атрибутов на каждом узле дерева для проблемы регрессии (и квадратного корня из числа атрибутов для задачи классификации). Таким образом, это комбинация мешков (выборка случайных выборок начальной загрузки исходных данных) и выбор случайных атрибутов. – Alexander

8

Я попытаюсь дать другое дополнительное объяснение простыми словами.

Случайный лес представляет собой набор случайных деревьев решений (числа n_estimators в sklearn). Вы должны понять, как построить одно случайное дерево решений.

Грубо говоря, чтобы построить случайное дерево решений, которое вы начинаете с подмножества ваших учебных образцов. На каждом узле вы произвольно рисуете подмножество функций (число определяется max_features в sklearn). Для каждой из этих функций вы будете тестировать различные пороговые значения и посмотреть, как они разделяют ваши образцы в соответствии с заданным критерием (как правило, энтропия или gini, criterion параметр в sklearn). Затем вы сохраните функцию и ее порог, которые наилучшим образом разбивают ваши данные и записывают их в узле. Когда заканчивается строительство дерева (это может быть по разным причинам: достигнута максимальная глубина (max_depth в sklearn), минимальное количество образцов достигнуто (min_samples_leaf в sklearn) и т. Д.), Вы просматриваете образцы в каждом листе и сохраняете частота меток. В результате это похоже на то, что дерево дает вам раздел ваших учебных образцов в соответствии со значимыми функциями.

Поскольку каждый узел построен из произвольно выбранных объектов, вы понимаете, что каждое дерево, построенное таким образом, будет другим. Это способствует хорошему компромиссу между смещением и дисперсией, как объясняет @Jianxun Li.

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

4

Добавление к вышеуказанным двум ответам, поскольку вы упомянули простое объяснение. Вот запись, которую я считаю самым простым способом объяснить случайные леса.

Кредиты идут к Эдвину Чену для простого объяснения here в условиях неспециалиста для случайных лесов. Опубликуйте то же самое ниже.

Предположим, вы очень нерешительны, поэтому всякий раз, когда вы хотите посмотреть фильм, вы спрашиваете своего друга Уиллоу, думает ли она, что вам это понравится. Чтобы ответить, Уиллоу сначала нужно выяснить, какие фильмы вам нравятся, поэтому вы даете ей кучу фильмов и расскажите ей, понравился ли вам каждый или нет (т. Е. Вы дадите ей обозначенный набор для обучения). Затем, когда вы спросите ее, думает ли она, что вам понравится фильм X или нет, она играет 20 вопросов, подобных игре с IMDB, задавая такие вопросы, как «Is X - романтический фильм?», «Звезда ли Джонни Деппа в X?» , и так далее. Сначала она задает более информативные вопросы (т. Е. Максимизирует информационный выигрыш по каждому вопросу) и дает ответ «да/нет» в конце.

Таким образом, Willow является деревом решений для ваших предпочтений в отношении фильма.

Но Уиллоу только человек, поэтому она не всегда очень хорошо обобщает ваши предпочтения (т. Е. Она наряды). Чтобы получить более точные рекомендации, вы хотите спросить кучу своих друзей и посмотреть фильм X, если большинство из них говорят, что они думают, что вам это понравится. То есть вместо того, чтобы спрашивать только Уиллоу, вы также хотите спросить у Вуди, Яблока и Картмана, и они проголосуют за то, понравится ли вам фильм (т. Е. Вы создадите классификатор ансамбля, иначе это лес в этом случае).

Теперь вы не хотите, чтобы каждый из ваших друзей делал то же самое и дал вам тот же ответ, поэтому сначала дайте каждому из них несколько разные данные. В конце концов, вы сами не совсем уверены в своих предпочтениях - вы сказали Уиллоу, что любите Титаника, но, возможно, вы были счастливы в тот день, потому что это был ваш день рождения, поэтому, возможно, некоторые из ваших друзей не должны использовать тот факт, что вам понравилось Титаник в своих рекомендациях. Или, может быть, вы сказали ей, что любили Золушку, но на самом деле вам действительно понравилось, поэтому некоторые из ваших друзей должны дать Золушке больше веса. Поэтому вместо того, чтобы давать своим друзьям те же данные, которые вы дали Уиллоу, вы даете им слегка возмущенные версии. Вы не изменяете свои решения о любви/ненависти, вы просто говорите, что любите/ненавидите некоторые фильмы немного больше или меньше (формально, вы даете каждому из ваших друзей загрузочную версию ваших исходных данных обучения). Например, в то время как вы сказали Уиллоу, что вам нравятся «Черный лебедь» и «Гарри Поттер» и «Не понравился Аватар», вы говорите Вуди, что вы так сильно любили «Черный лебедь», что вы смотрели его дважды, вы не любили Аватара и вообще не упоминали Гарри Поттера.

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

Однако по-прежнему существует одна проблема с вашими данными. В то время как вы любили как «Титаник», так и «Начало», это было не потому, что вам нравятся фильмы, которые снимают Леонардо Ди Каприо. Возможно, вам понравились оба фильма по другим причинам. Таким образом, вы не хотите, чтобы ваши друзья основывали свои рекомендации на том, находится ли Лео в кино или нет. Поэтому, когда каждый друг задает вопрос IMDB, допускается только случайное подмножество возможных вопросов (т. Е. Когда вы строите дерево решений, на каждом узле вы используете некоторую случайность при выборе атрибута для разделения, скажем, путем случайного выбора атрибут или путем выбора атрибута из произвольного подмножества). Это означает, что вашим друзьям не разрешается спрашивать, находится ли Леонардо Ди Каприо в фильме, когда захочет. Таким образом, если раньше вы вводили случайность на уровне данных, слегка возмущая ваши предпочтения в отношении фильма, теперь вы вводите случайность на уровне модели, заставляя ваших друзей задавать разные вопросы в разное время.

Итак, ваши друзья теперь образуют случайный лес.

 Смежные вопросы

  • Нет связанных вопросов^_^