autor: Michał Bieroński
album: 218324
+
=
+
Chest Pain |
Good Blood Circ. | Blocked Arteries | Weight |
Heart Disease |
---|---|---|---|---|
No | No | No | 125 | No |
Yes | Yes | Yes | 180 | Yes |
Yes | Yes | No | 210 | No |
Yes | No | Yes | 167 | Yes |
Oryginalny dataset
Chest Pain |
Good Blood Circ. | Blocked Arteries | Weight | Heart Disease |
---|---|---|---|---|
Yes | Yes | Yes | 180 | Yes |
No | No | No | 125 | No |
Yes | No | Yes | 167 | Yes |
Yes | No | Yes | 167 | Yes |
Bootstrapped dataset
1. Bootstrapping
Chest Pain |
Good Blood Circ. | Blocked Arteries | Weight | Heart Disease |
---|---|---|---|---|
Yes | Yes | Yes | 180 | Yes |
No | No | No | 125 | No |
Yes | No | Yes | 167 | Yes |
Yes | No | Yes | 167 | Yes |
Bootstrapped dataset
2. Random subset
W skrócie: na każdym poziomie rozpatrujemy tylko losowe podzbiory niewykorzystanych cech.
Agregacja decyzji - głosowanie większościowe
Remark:
Bootstrapping
+
Decission aggregating
=
Bagging
Chest Pain |
Good Blood Circ. | Blocked Arteries | Weight |
Heart Disease |
---|---|---|---|---|
No | No | No | 125 | No |
Yes | Yes | Yes | 180 | Yes |
Yes | Yes | No | 210 | No |
Yes | No | Yes | 167 | Yes |
Oryginalny dataset
Out-Of-Bag Dataset
Co dalej?
Jak go wykorzystać?...
Out-Of-Bag Dataset
Problemy
Rozwiązanie
Wróćmy do metody random subset...
Out-Of-Bag Dataset c.d.
"Out-Of-Bag Error"
(proporcja niepoprawnych klasyfikacji do wszystkich)
Out-Of-Bag Error
Jak wykorzystać tę informację?
Można lepiej dobrać parametr ograniczenia do metody random subset.
N - liczba cech
CART - classification & regression tree
*MSE - tutaj błąd śr. kw. odległości wartości atrybutów od wartości średniej w danym podziale
Dla każdego regionu wartością regresji jest średnia obiektów do niego przynależących.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
n_informative=2, n_redundant=0,
random_state=0, shuffle=False)
clf = RandomForestClassifier(n_estimators=10,
criterion='entropy',
max_features='sqrt',
max_depth=4,
n_jobs=-1)
clf.fit(X, y)
print(clf.predict([[0, 0, 0, 0]]))
>>> [1]
Jak używać (Python)
http://dataaspirant.com/2017/05/22/random-forest-algorithm-machine-learing/
http://www.vision.cs.chubu.ac.jp/MPRG/C_group/C058_mishina2014.pdf
https://www.r-bloggers.com/how-random-forests-improve-simple-regression-trees/
http://urszula.libal.staff.iiar.pwr.wroc.pl/docs/aro/aro8.pdf
StatQuest: Random Forests Part 1 - Building, Using and Evaluating
StatQuest: Random Forests Part 2: Missing data and clustering