2015-08-26 5 views
-1

Я пытаюсь использовать случайную левую регрессию sklearn для примера игрушки. Я создал 500 равномерных случайных чисел от 1 до 100 в качестве переменных-предикторов, а затем взял их журналы и добавил гауссовский шум для формирования переменных ответа.Случайная регрессия леса сильно перечеркивает отдельные переменные данные

Я слышал, что случайные леса, как правило, хорошо работает из коробки, так что я ожидал, что разумный ищут кривой, но это то, что я получил: enter image description here

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

Буду признателен за любую помощь в понимании, почему эта модель настолько переделает.

Вот код, который я использовал для создания сюжета:

from sklearn.ensemble import RandomForestClassifier 
import numpy as np 
import matplotlib.pyplot as plt 

def create_design_matrix(x_array): 
    return x_array.reshape((x_array.shape[0],1)) 

N = 1000 

x_array = np.random.uniform(1, 100, N) 
y_array = np.log(x_array) + np.random.normal(0, 0.5, N) 

model = RandomForestClassifier(n_estimators=100) 

model = model.fit(create_design_matrix(x_array), y_array) 


test_x = np.linspace(1.0, 100.0, num=10000) 
test_y = model.predict(create_design_matrix(test_x)) 
plt.plot(x_array, y_array, 'ro', linewidth=5.0) 
plt.plot(test_x, test_y) 
plt.show() 

Спасибо!

+0

Для регрессии следует использовать метод RandomForestRegressor. И вам нужно настроить параметры, например. 'max_depth', чтобы избежать переобучения. – yangjie

+0

Ах, блестящий! Не могу поверить, что я случайно использовал классификатор. Использование RandomForestRegressor и установка max_depth на 5 дает разумную перспективную модель. Спасибо за помощь! – Site

ответ

0

Прежде всего, это проблема регрессии, а не классификация.

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

+0

Точка «это проблема регрессии, а не классификация» верна. Но поскольку это проблема с регрессией, нет ничего общего с «иметь столько классов, сколько образцов». – yangjie