Ini belum tentu merupakan jawaban untuk pertanyaan Anda. Hanya pemikiran umum tentang memvalidasi silang jumlah pohon keputusan dalam hutan acak.
Saya melihat banyak orang di kaggle dan stackexchange memvalidasi jumlah pohon di hutan acak. Saya juga bertanya kepada beberapa rekan kerja dan mereka memberi tahu saya bahwa penting untuk melakukan validasi silang untuk menghindari overfitting.
Ini tidak pernah masuk akal bagi saya. Karena setiap pohon keputusan dilatih secara independen, menambahkan lebih banyak pohon keputusan hanya akan membuat ansambel Anda semakin kuat.
(Ini berbeda dari gradient boosting tree, yang merupakan kasus khusus ada boosting, dan oleh karena itu ada potensi overfitting karena setiap pohon keputusan dilatih untuk menimbang residu lebih banyak.)
Saya melakukan percobaan sederhana:
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()
Saya tidak mengatakan Anda melakukan kesalahan ini karena berpikir lebih banyak pohon dapat menyebabkan overfitting. Anda jelas bukan karena Anda telah meminta batas bawah. Ini hanya sesuatu yang telah mengganggu saya untuk sementara waktu, dan saya pikir penting untuk diingat.
(Tambahan: Elemen Pembelajaran Statistik membahas hal ini di halaman 596, dan menyetujui hal ini dengan saya. «Memang benar bahwa peningkatan B [B = jumlah pohon] tidak menyebabkan urutan hutan acak menjadi terlalu cocok». Penulis tidak membuat pengamatan bahwa «batas ini dapat melebihi data». Dengan kata lain, karena hiperparameter lain dapat menyebabkan overfitting, menciptakan model yang kuat tidak menyelamatkan Anda dari pakaian berlebihan. )
Untuk menjawab pertanyaan Anda, menambahkan pohon keputusan akan selalu bermanfaat bagi ansambel Anda. Itu akan selalu membuatnya semakin kuat. Tapi, tentu saja, meragukan apakah pengurangan varians 0,00000001 marginal bernilai waktu komputasi.
Karena itu pertanyaan Anda, seperti yang saya pahami, adalah apakah Anda entah bagaimana dapat menghitung atau memperkirakan jumlah pohon keputusan untuk mengurangi varians kesalahan hingga di bawah ambang tertentu.
Saya sangat meragukannya. Kami tidak memiliki jawaban yang jelas untuk banyak pertanyaan luas dalam penggalian data, apalagi pertanyaan spesifik seperti itu. Seperti yang ditulis Leo Breiman (penulis hutan acak), ada dua budaya dalam pemodelan statistik , dan hutan acak adalah jenis model yang menurutnya memiliki sedikit asumsi, tetapi juga sangat spesifik data. Itu sebabnya, katanya, kita tidak bisa menggunakan pengujian hipotesis, kita harus pergi dengan validasi silang brute-force.