LogicForest
Autor: Gabriel Janik
LogicForest Jest To złożony z wielu drzew Klasyfikator służący przewidywania kombinacji binarnych. LogicForest bazuje na modelach Logic Regression. Modele te są efektywne lecz produkują dużo Noise Data czyli danych śmieciowych, a LogicForest pozbywa się tych danych poprzez nadawanie poszczególnym klasyfikatorom wagi w zależności od poprawności wyników jakie dawały bądź stosując regułę większości.
uruchamianie
Rozpoczynamy pracę ściągając pakiet ze strony: http://cran.r-project.org/web/packages/LogicForest/index.html
Następnie Uruchamiamy środowisko R i w klikamy menu packages->install packages from zip następnie szukamy uprzednio ściągniętego pliku i wybieramy go. Program zrobi za nas resztę.
Abu wykorzystać nasz nowy pakiet należy go załadować w następujący sposób (wszystkie pakiety ładujemy tak samo)
Library(‘LogincForest’);
Nasz pakiet jest gotowy do użycia.
Modele LogicForest
W pakiecie LogicForest Dostajemy do wyboru 2 modele:
· LBOOST – tworzy zbiór modeli drzew regresyjnych przy użyciu boostingu
· LOGFOREST – tworzy zbiór modeli drzew regresyjnych za pomocą baggingu
Boosting – połączenie prostych i często nieefektywnych klasyfikatorów w grupę, i nadawanie poszczególnym klasyfikatorom wagi w celu uzyskania jak najlepszego wyniku.
Bagging – połączenie prostych klasyfikatorów w grupę, lecz w przeciwieństwie to boostingu nie przydziela im się wag. Rezultat otrzymuje się przez głosowanie ,tzn. wynik jaki dało najwięcej klasyfikatorów uznaje się za właściwy (Majority vote).
LBOOST
ñ Użycie:
LBoost(resp, Xs, nBS, kfold , nperm ,PI.imp, pred.imp )
ñ Najważniejsze Parametry:
resp – binarny wektor przechowujący dane wejścioweXs – macież 0 i 1nBS – ilość drzew logicznych w modelukfold – ile razy dane mają być dzielone przy tworzeniu zbioru drzewnperm – ilość permutacjiPI.imp – skala używana do mierzenia wagi poszczególnych klasyfikatorów. Możliwe wartości „Permutation” ,„AddRemove” i „Both”pred.imp = czy zapisać wage drzew
logforest( resp, Xs, nBSXVars, nBS, h,norm , numout)
ñ Najważniejsze Parametry
resp – binarny wektor przechowujący dane wejściowe Xs – macież 0 i 1nBSXVars – ilość klasyfikatorów potrzebna do zbudowania jednego modelu regresyjnego nBS – ilość drzew logicznych w modeluh – numer pomiędzy 0 a 1 – minimalna ilość drzew, które muszą odpowiedzieć 1 by cały model zwrócił 1numout – ilość iteracji
LBOOST.fit jest to przykładowy zawarty w pakiecie model LBOOST. Składa się on ze 100 drzew i 2 iteracji.
Użycie modelu jest bardzo szybkie i nieskomplikowane dlatego zaleca się to osobom początkującym i wygląda następująco:
data(LBOOST.fit)
LOGFOREST.fit Podobnie jak w przypadku LBOOST.fit jest przykładowym zawartym w pakiecie modelem składającym się ze 100 drzew.
Użycie modelu wygląda analogicznie jak w przypadku LBOOST.fit
data(LOGFOREST.fit)
LF. Data – gotowy zbiór danych kontrolnych możliwy do użycia podczas tworzenia modelu LBOOST bądź LOGFOREST.
Użycie:
data(LF.data)
LF.testdata – gotowy zbiór danych testowych do wykorzystania podczas przewidywania za pomocą modeli LBOOST i LOGFOREST
Funkcja predict służy do przewidywania ciągu binarnego na podstawie wybranego modelu.Składnia Funkcji predict wygląda następująco:
predict(obiect, newdata,testdata)
obiect – model na podstawie którego chcemy przewidywać
newdata – dane na podstawie jakich przewidujemy
testdata – jak sama nazwa wskazuje dane testowe :-)
Ciąg znaków będący listą przewidzianych wartości zwracany jest jako obiekt klasy LBOOST.predictions lub LF.predictions w zależności jakim modelem posługiwaliśmy się podczas przewidywania.
Przykłady:
LBOOST:
data(LF.data, LF.testdata, Lboost.fit)#LF.data – dane źródłowe#LF.testdata – dane testowe#LBOOST.fit – przykładowy model LBOOSTpredict(object=LBoost.fit, newdata=LF.testdata[,1:50])
LOGFOREST:
data(LF.data, LF.testdata, LOGFOREST.fit)#LF.data – dane źródłowe#LF.testdata – dane testowe#LOGFOREST.fit – przykładowy model LOGFORESTpredict(object=LOGFOREST .fit, newdata=LF.testdata[,1:50])
Funkcja wypisuje na ekran to co prześlemy jej jako parametr. W przypadku podania modeli LBOOST lub LOGFOREST funkcja wyświetla właściwości danego modelu, najważniejsze klasyfikatory . W przypadku gdy jako parametr podamy obiekt klasy LF.predictions funkcja wyświetli nam wartości przewidziane we wcześniejszym wywołaniu funkcji predict.
Funkcja rysuje wykres zawierający częstotliwość występowania poszczególnych drzew w iteracjach w modelu Logforest lub LBoost;
persistence.plot(fit, preds, PI, title)
parametry:
fit – obiekt klasy LBoost bądź Logforestpreds – ilość drzew w modeluPI – szukane drzewo(zmienna)Title – tytuł wykresu
Funkcja Rysuje wykres przedstawiający wagę poszczególnych klasyfikatorów oraz iteracji. W zależności od podanych parametrów może ona wygenerować od 1 do 3 wykresów.
BoostVimp.plot(fit, num, pred, norm=TRUE, titles=TRUE)
Parametry:
Fit- obiekt klasy LBoost
Num- ilość klasyfikatorów uwzględnionych w wykresie
Pred- zmienna logiczna mówiąca czy konstruować osobne w ykresy dla każdego klasyfikatora
Norm- zmienna logiczna mówiąca czy normalizować wynik
Titles- kolejna zmienna logiczna mówiąca nam czy nadawać tytuły poszczególnych wykresom
data(LBoost.fit)print(LBoost.fit)result:
Powyższe funkcje kolejno: tworzą podstawowy model LBOOST oraz drukują jego zawartość.
data(LBoost.fit)BoostVimp.plot(fit=LBoost.fit, num=10,pred=TRUE, norm=TRUE, titles=TRUE)
result:
data(LBoost.fit)BoostVimp.plot(fit=LBoost.fit, num=10,pred=FALSE, norm=TRUE, titles=TRUE)
Po następującej modyfikacji uzyskano tylko wykres 1
data(LBoost.fit)BoostVimp.plot(fit=LBoost.fit, num=10,pred=TRUE, norm=FALSE, titles=TRUE)
Po następującej modyfikacji uzyskano tylko wykres 2
newanneal<-logreg.anneal.control(start=1, end=-2, iter=2500)
LBfit.1<-LBoost(resp=LF.data$Ybin, Xs=LF.data[,1:50], nBS=20, kfold=4,anneal.params=newanneal, nperm=2,PI.imp="ddRemove")
print(LBfit.1)# print modelu
zmiana parametrów:
parametr PI.imp = “AddRemove”
Parametr PI.imp= „Both”
Powyższy podpunkt prezentuje tworzenie własnego modelu LBOOST przy różnych parametrach.
LF.fit1<-logforest(resp=LF.data$Ybin, Xs=LF.data[,1:50], nBS=20,
anneal.params=newanneal)
print(LF.fit1)
Powyżej stworzyliśmy model LogForest przy użyciu przykładowych danych LF.data składający się z 20 drzew oraz 2500 iteracji.powyższy screen pokazuje nam 5 najważniejszych drzew i iteracji.
data(logforest.fit)
persistence.plot(fit=logforest.fit, pred=50, PI="X5", title="wystąpienia X5 in logic forest")
Wykres Przedstawia wystąpienia drzewa X5 w iteracjach domyślnie stworzonego modelu LOGFOREST
data(LBoost.fit)
persistence.plot(fit=LBoost.fit, pred=50, PI="X5", title="wystąpienia X5 in LBoost")
...
kac85