LogicForest.doc

(325 KB) Pobierz
LogicForest

LogicForest

LogicForest

Autor: Gabriel Janik

Co to LogicForest

 

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ściowe
Xs – macież 0 i 1
nBS – ilość drzew logicznych w modelu
kfold – ile razy dane mają być dzielone przy tworzeniu zbioru drzew
nperm – ilość permutacji
PI.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

ñ         Użycie:

logforest( resp, Xs, nBSXVars, nBS, h,norm , numout)

ñ         Najważniejsze Parametry

resp – binarny wektor przechowujący dane wejściowe
Xs – macież 0 i 1
nBSXVars – ilość klasyfikatorów potrzebna do zbudowania jednego modelu regresyjnego
nBS – ilość drzew logicznych w modelu
h – numer pomiędzy 0 a 1 – minimalna ilość drzew, które muszą odpowiedzieć 1 by cały model zwrócił 1
numout – ilość iteracji

 

LBOOST.fit

 

              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

 

              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

              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

              LF.testdata – gotowy zbiór danych testowych do wykorzystania podczas przewidywania za pomocą modeli LBOOST i LOGFOREST

              Użycie:

                            data(LF.data)

             

predict

              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 LBOOST
predict(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 LOGFOREST
predict(object=LOGFOREST .fit, newdata=LF.testdata[,1:50])

 

 

print

             

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.

 

presistence.plot

 

Funkcja rysuje wykres zawierający częstotliwość występowania poszczególnych drzew w iteracjach w modelu Logforest lub LBoost;

Użycie:

 

persistence.plot(fit, preds, PI, title)

 

parametry:

 

fit                            obiekt klasy LBoost bądź Logforest
preds              ilość drzew w modelu
PI                             szukane drzewo(zmienna)
Title              tytuł wykresu

Boostvimp.plot

 

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.

 

Użycie:

 

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

 

 

 

 

Przykłady użycia poszczególnych funkcji:

LBOOST

data(LBoost.fit)
print(LBoost.fit)result:

 

 

Powyższe funkcje  kolejno: tworzą podstawowy model LBOOST oraz drukują jego zawartość.

 

BoostVimp.plot


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

 

Tworzenie modelu LBoost

 

data(LF.data)

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
             

result:

 

 

 

zmiana parametrów:
 

parametr               PI.imp = “AddRemove”

 

 

             

Parametr PI.imp= „Both”

 

Powyższy podpunkt prezentuje tworzenie własnego modelu LBOOST przy różnych parametrach.

Tworzenie modelu LogicForest

 

data(LF.data)

newanneal<-logreg.anneal.control(start=1, end=-2, iter=2500)

LF.fit1<-logforest(resp=LF.data$Ybin, Xs=LF.data[,1:50], nBS=20,

anneal.params=newanneal)

print(LF.fit1)

 

result:

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.

Persistence.plot

 

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")

 

...

Zgłoś jeśli naruszono regulamin