Số lượng cây tối thiểu để phân loại rừng ngẫu nhiên


8

Tôi đang tìm kiếm một ước tính lý thuyết hoặc thực nghiệm về giới hạn dưới cho số lượng cây trong phân loại Rừng ngẫu nhiên.

Tôi thường kiểm tra các kết hợp khác nhau và chọn một kết hợp (sử dụng xác thực chéo) cung cấp kết quả tốt nhất trung bình.

Tuy nhiên, tôi nghĩ rằng có thể có giới hạn thấp hơn về số lượng cây sẽ sử dụng, với các quan sát và tính năng, để giảm sự đóng góp của phương sai cho lỗi. Có một số kiểm tra hoặc tài liệu tham khảo tôi có thể kiểm tra để điều chỉnh chính xác phân loại của tôi?nmn


3
Tôi nghi ngờ điều đó. Nhưng một gợi ý: lĩnh vực học máy mà nghiên cứu hiệu suất trong học máy được gọi là giảm thiểu rủi ro theo kinh nghiệm . Bạn có thể cố gắng thêm những từ khóa đó vào tìm kiếm của bạn.
Ricardo Cruz

Câu trả lời:


7

Đây không nhất thiết là một câu trả lời cho câu hỏi của bạn. Chỉ cần suy nghĩ chung về việc xác thực chéo số lượng cây quyết định trong một khu rừng ngẫu nhiên.

Tôi thấy rất nhiều người ở kaggle và stackexchange xác nhận chéo số lượng cây trong một khu rừng ngẫu nhiên. Tôi cũng đã hỏi một vài đồng nghiệp và họ nói với tôi rằng điều quan trọng là phải xác thực chéo để tránh tình trạng thừa.

Điều này không bao giờ có ý nghĩa với tôi. Vì mỗi cây quyết định được đào tạo độc lập, việc thêm nhiều cây quyết định sẽ giúp cho bộ đồng phục của bạn ngày càng mạnh mẽ hơn.

.

Tôi đã làm một thí nghiệm đơn giản:

from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestClassifier
from sklearn.grid_search import GridSearchCV
import numpy as np
import matplotlib.pyplot as plt
plt.ioff()

df = load_digits()
X = df['data']
y = df['target']

cv = GridSearchCV(
    RandomForestClassifier(max_depth=4),
    {'n_estimators': np.linspace(10, 1000, 20, dtype=int)},
    'accuracy',
    n_jobs=-1,
    refit=False,
    cv=50,
    verbose=1)
cv.fit(X, y)
scores = np.asarray([s[1] for s in cv.grid_scores_])
trees = np.asarray([s[0]['n_estimators'] for s in cv.grid_scores_])
o = np.argsort(trees)
scores = scores[o]
trees = trees[o]
plt.clf()
plt.plot(trees, scores)
plt.xlabel('n_estimators')
plt.ylabel('accuracy')
plt.savefig('trees.png')
plt.show()

hiệu suất

Tôi không nói rằng bạn đang phạm phải ngụy biện này về việc nghĩ rằng nhiều cây có thể gây ra tình trạng thừa. Bạn rõ ràng không phải vì bạn đã yêu cầu một giới hạn thấp hơn. Đây chỉ là một cái gì đó đã được tôi làm phiền trong một thời gian, và tôi nghĩ rằng điều quan trọng là phải ghi nhớ.

(Phụ lục: Các yếu tố của học thống kê thảo luận điều này ở trang 596 và đồng ý với tôi về điều này. «Chắc chắn là việc tăng B [B = số cây] không làm cho chuỗi rừng ngẫu nhiên vượt quá». Nói cách khác, vì giới hạn này có thể vượt quá dữ liệu ». Nói cách khác, vì các siêu âm khác có thể dẫn đến quá mức, tạo ra một mô hình mạnh mẽ không cứu bạn khỏi tình trạng quá mức. Bạn phải chú ý khi xác thực chéo các siêu đường kính khác của bạn. )

Để trả lời câu hỏi của bạn, việc thêm cây quyết định sẽ luôn có lợi cho nhóm của bạn. Nó sẽ luôn làm cho nó ngày càng mạnh mẽ hơn. Nhưng, tất nhiên, không rõ liệu sự giảm phương sai 0,00000001 có xứng đáng với thời gian tính toán hay không.

Do đó, câu hỏi của bạn, theo tôi hiểu, là bằng cách nào đó bạn có thể tính toán hoặc ước tính số lượng cây quyết định để giảm phương sai lỗi xuống dưới một ngưỡng nhất định.

Tôi rất nghi ngờ nó. Chúng tôi không có câu trả lời rõ ràng cho nhiều câu hỏi lớn trong khai thác dữ liệu, những câu hỏi ít cụ thể hơn như thế. Như Leo Breiman (tác giả của các khu rừng ngẫu nhiên) đã viết, có hai nền văn hóa trong mô hình thống kê và rừng ngẫu nhiên là loại mô hình mà ông nói có ít giả định, nhưng cũng rất cụ thể về dữ liệu. Đó là lý do tại sao, ông nói, chúng ta không thể dùng đến thử nghiệm giả thuyết, chúng ta phải đi với xác nhận chéo vũ lực.


Mh, tôi nghĩ rằng việc tăng số lượng cây sẽ dẫn đến sự gia tăng thành phần sai lệch của lỗi (được cân bằng bằng cách nào đó bằng cách giảm phương sai của mô hình).
gc5

1
Tôi luôn nghĩ rằng việc thêm cây không bao giờ có thể làm tổn thương, nhưng trong The Elements of Statistics Learning trang 596, họ cho rằng quá giàu rừng có thể đưa ra nhiều biến động, vì vậy tôi nghĩ rằng câu trả lời của bạn vẫn đúng, nhưng với một hạt muối nhỏ: )
TBSRounder

1
@TBSRounder Cảm ơn liên kết. Tác giả đang thảo luận quá nhiều điều trong một đoạn văn bản ngắn như vậy, vì vậy thật khó để chắt lọc anh ta, đặc biệt khó hiểu vì anh ta nói về độ sâu của cây và số cây cùng một lúc. Nhưng, liên quan đến B (= # cây), ông nói rằng nhiều cây hơn làm cho mô hình kết quả gần với cây trung bình hơn và tất nhiên, cây trung bình có thể bị sai lệch, do đó bạn có thể kết thúc bằng mô hình thiên vị. Tôi không bao giờ tuyên bố khác. Tôi chỉ nói rằng B, tự nó, không làm tăng sự thiên vị. Nó chỉ làm cho mô hình của bạn mạnh mẽ hơn (= giảm phương sai).
Ricardo Cruz

À đúng rồi, hơi khó hiểu, cảm ơn vì đã làm rõ. Vì một số lý do, tôi nghĩ rằng tác giả đã nói về B, không phải độ sâu của cây.
TBSRounder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.