Working log: Hybrydowe metody

1. Dodawać kolejno jedną nową cechę by zobaczyć czy jej nie pomineliśmy.
2. Dorobić inne medyczne bazy danych

Cancer oraz dodawanie nowych cech
Cancer class1: 68/286

      reguły klasyfikują wektory klasy pierwszej (class1)
      poprawna klasyfikacja wektorów klasy zerowej (class0) oznacza nie
      zaklasyfikowanie wektora klasy zero przez regułę do klasy jeden

uwagi ogólne: z reguł usunąłem już nieistotne (zawsze spełnione) przesłanki

opis: reguły umieszczone w liniach,
      przesłanki oddzielane symbolami algebraicznymi /\ \/
      poniżej podałem ilości wektorów poprawnie klasyfikowanych dla każdej
      reguły oraz macierz nakrywania tych reguł - diagonalna to odpowiednio
      ilości wektorów klasyfikowanych tylko przez jedną regułę,
      pozadiagonalna - wektory klasyfikowane przez co najmniej dwie reguły,
      dodatkowa liczba na dole za macierzą to ewentualne wektory pokryte
      przez wrzystkie trzy reguły, dalsze dwie liczby to całkowita ilość
      poprawnie klasyfikowanych wektorów odpowiednio klasy 1 i 0.
      A dalej to samo dla błędnej klasyfikacji.
 

--asa5--

deg_malig = 3 /\ node_caps = yes

deg_malig = [2-3] /\ inv_nodes = [9-26] (not [0-8]) /\ age = not [40-69]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [40-59]
 
23/2/18 =>  31 (p++)  + 193 (p--)  = 224 ->  78,32%  poprawnie
7/0/3   =>  54 (p+-) +   8 (p-+) =  62 ->  21,68%  błędnie
 

--asa50--

deg_malig = 3 /\ node_caps = yes

deg_malig = 3 /\ age = not [30-59]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
23/10/18 =>  36 + 189 = 224 ->  78,32%  poprawnie
 
7/7/3    =>  49 +  13 =  62 ->  21,68%  błędnie
 

--asa51--

deg_malig = 3 /\ node_caps = yes

inv_nodes = [9-26] (not [0-8]) /\ age = not [40-69]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
23/4/18 =>  31 + 193 = 224 ->  78,32%  poprawnie
 
7/0/3   =>  54  +  8 =  62 ->  21,68%  błędnie
 
 

--asa52--

deg_malig = 3 /\ node_caps = yes

deg_malig = 3 /\ age = not [40-69]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [40-59]

 
23/18/18 =>  40 + 184 = 224 ->  78,32%  poprawnie
 
7/11/3   =>  45 +  17 =  62 ->  21,68%  błędnie
 
 

--asa54--

deg_malig = 3 /\ node_caps = yes

deg_malig = 3 /\ age = not [40-59]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
23/18/18 =>  40 + 184 = 224 ->  78,32%  poprawnie
 
7/11/3   =>  45 +  17 =  62 ->  21,68%  błędnie

=============================================================================

--ASA5_00--

deg_malig = 3 /\ inv_nodes = [3-26] (not [0-2]) /\ tumor_size = [5-44]
 

--ASA5_01--

deg_malig = 3 /\ inv_nodes = [3-26] (not [0-2]) /\ tumor_size = [10-44]
 

--ASA5_02--

deg_malig = 3 /\ inv_nodes = [3-26] (not [0-2]) /\ tumor_size = [0-44]
 

27 + 192 = 219 -> 76,57%

58 +   9 =  67 -> 23,43%

=============================================================================

--asa1_001--

deg_malig = 3 /\ inv_nodes = [3-11] /\ tumor_size = [20-44]

inv_nodes = [9-26] /\ age = not [40-49] /\ menopause = premeno

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
19/4/18 =>  35 + 193 = 228 ->  79,72%  poprawnie
 
6/0/3   =>  50 +   8 =  58 ->  20,28%  błędnie

--asa1_002--

deg_malig = 3 /\ inv_nodes = [3-11] /\ tumor_size = [15-54]

inv_nodes = [9-26] /\ age = not [40-49] /\ menopause = premeno

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
20/4/18 =>  35 + 193 = 228 ->  79,72%  poprawnie
 
7/0/3   =>  50 +   8 =  58 ->  20,28%  błędnie
 

--asa1_003--

deg_malig = 3 /\ inv_nodes = [3-11] /\ tumor_size = [10-54]

deg_malig = [2-3] /\ inv_nodes = [9-26] /\ age = not [40-49] /\ menopause = lt40 or premeno (not ge40)

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
21/4/18 =>  35 + 193 = 228 ->  79,72%  poprawnie
 
7/0/3   =>  50 +   8 =  58 ->  20,28%  błędnie

-----------------------------------------------------------------------------

--asa1_010--

deg_malig = 3 /\ inv_nodes = [3-11] /\ tumor_size = [15-39]

deg_malig = 3 /\ inv_nodes = [3-26] /\ age = not [30-49] /\ tumor_size = [35-44]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
17/5/18 =>  33 + 194 = 227 ->  79,72%  poprawnie
 
4/1/3   =>  52 +   7 =  59 ->  20,28%  błędnie

--asa1_011--

deg_malig = 3 /\ inv_nodes = [3-14] /\ tumor_size = [20-34]

inv_nodes = [6-26] /\ age = not [30-49] /\ tumor_size = [35-54]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
16/5/18 =>  33 + 194 = 227 ->  79,72%  poprawnie
 
4/2/3   =>  52  +  7 =  59 ->  20,28%  błędnie

--asa1_012--

deg_malig = 3 /\ inv_nodes = [3-8] /\ tumor_size = [2-34]

inv_nodes = [6-26] /\ age = not [30-49] /\ tumor_size = [35-54]

breast = left /\ inv_nodes = [3-26] (not [0-2]) /\ age = not [50-59]

 
12/5/18 =>  31 + 196 = 227 ->  79,72%  poprawnie     tylko 4 wspólne
 
2/2/3   =>  54 +   5 =  59 ->  20,28%  błędnie       tylko 2 wspólne
 
 

=============================================================================

ASA - REZULTATY: autor Grzegorz Zal

THYROID:

ASA - dziala bardzo dobrze (choc nie zawsze), co dalo sie dostrzec zupelnie przypadkowo startujac z jedna bledna granica - ASA odrazu znalazla blad. Rozwiazanie startowe (juz bez bledu w jednej z granic) dla ASA bylo zbyt optymalne - rozwiazanie sie nie zmienia.

Jedyne co udalo sie zrobic to zmniejszyc ilosc bledow na zbiorze treningowym z 12 do 11, co jest wynikiem rozsuniecia granicy 0.029 dla TSH w obu regulach dla klasy 1 odpowiednio 0.030045 i 0.02984 co powoduje drobna szczeline, w ktora wpada jeden z blednych przypadkow, moze to jednak pogorszyc klasyfikacje na zbiorze testowym.

Dostawiajac dowolny przedzial dla cechy TT4 (F19) w regule dla klasy 2 i przeprowadzajac optymalizacje otrzymujemy reguly:

dla klasy 1 dwie:
TSH >= 0.03048  /\  FTI < 0.06416
TSH in [0.00617, 0.02953)  /\  T3 < 0.02322  /\  FTI < 0.06406

i dla klasy 2 jedna:
on_thyroxine=0  /\  thyroid_surgery=0
/\  TSH >= 0.00602  /\  FTI in [0.06427, 0.18671)  /\  TT4 < 0.14852

(gdzie dolna granica dla TT4 zostala usunieta bo cecha nie przyjmuje nigdy nizszych wartosci - co jeszcze nie znaczy ze ta granica jest niepotrzebna! - o czym dalej jeszcze napisze)

daje to odpowiednio 4 bledy na zbiorze treningowym i 24 na zbiorze testowym czyli odpowiednio dokladnosc 99.89%  i 99.3%

Identyczne rezultaty dla zbioru treningowego uzyskuje sie zmieniajac w regule dla klasy 2 granice przedzialu dla cechy TTF (F19) - tzn. TT4 in [0.05, 0.1505), co na zbiorze testowym daje 22 bledy czyli 99.36%

mozna jeszcze przesunac nawet granice 0.05 -> 0.055 powoduje to, ze na zbiorze treningowym pojawia sie jeden blad wiecej, a na testowym 3 mniej (nawet 5 mniej - co wynika z tego, ze rozwiazanie z cecha 19 dla klasy drugiej dla pozostalych cech jest minimalnie rozne co zwieksza ilosc bledow dla testowego o 2)

Czyli dodanie TT4 usuwa 7 błędów.
WD: Jeśli zostawić TT4 in (0.05, 0.1505) to mamy 21 błędów na testowym zbiorze

Moim wlasnym zdaniem najlepszym rozwiazaniem jest takie:  (pomijajac pierwszy wspomniany efekt z granica 0.029 dla TSH)
 
dla klasy 1 dwie:
TSH >= 0.029  /\  FTI < 0.0644
TSH in [0.0061, 0.029)  /\  T3 < 0.023  /\  FTI < 0.0644

i dla klasy 2 jedna:
on_thyroxine=0  /\  thyroid_surgery=0
/\  TSH >= 0.0061  /\  FTI in [0.0644, 0.18)  /\  TT4 in [0.055, 0.1505)

daje ono odpowiednio 6 i 17 błędów czyli 99.84% i 99.5%, ale to jest wynik trenowania na zbiorze testowym! Jeśli szukać innych minimów oprócz globalnego to da się znaleźć to rozwiązanie na zbiorze treningowym też.

Apropos wynikow Weissa:
te ktore mam nie sa lepsze niz te od ktorych startowalem z ASA: na razie nie ustosunkowuje sie do nich.


APPENDICTIS:

zaczynajac od regul ponizej (numery w nawiasach oznaczaja numery cech)

rule_1     12.6 < (4) < 18.9
rule_2     6650 < (3)
rule_3     81.6 < (6)

------------------------------------------------------------------------

rule_4            (2) < 51.4    \/    64.4 < (2) < 71.6
                      (3) < 6650    \/      38 < (6) < 54.5
                      25.2 < (4)
 
rule_5            (2) < 51.4    \/    64.4 < (2) < 71.6
                      (3) < 6650
                       38 < (6) < 54.5

rule_6        60 < (2) < 64.4    \/    82.4 < (2)
                   (3) < 6650
                   25.2 < (4)
                   38 < (6) < 54.5

Te 3 reguły zmniejszają błąd tylko o 3 przypadki.
------------------------------------------------------------------------
Udało się tak samo jak w prologu z pierwszych trzech uzyskac tylko dwie:

rule_1     12.6 < (4) < 60
rule_2     6650 < (3)

przy czym wartości granic wyszły nieco inne ale wynik ten sam.

Z regulami 4, 5 i 6 nic nie udalo sie zrobic (narazie).

Weiss:     MNEA>6600 OR MBPA > 11
Dokładność: PVM 1/2 rules           8.5%             10.4%
Błąd 8.5% taki jak u nas.
 
==================================================================
ASA optymalizacja i dodawanie cech
==================================================================
rule_1     12.6 =< (MBAP) < 18.9

rule_2     6650 < (MNEA)

rule_3     81.6 < (HNEP)

9 błędów na 106 wektorach
dokładność 91.509434 %, czyli błąd 8.490566 %

==================================================================

rule_1     12.6 =< (MBAP) < 60

rule_2     6650 < (MNEA)

9 błędów na 106 wektorach (inne błędy - na innych wektorach)
dokładność 91.509434 %, czyli błąd 8.490566 %

==================================================================
Nowe wyniki z dodawania cech
==================================================================

dodany przedział dla cechy HNEA do reguły 2

rule_1     12.6 =< (MBAP) < 60
rule_2    6650  < (MNEA)
              2857 =< (HNEA) < 22178

8 błędów na 106 wektorach
dokładność 92,452830 %, czyli błąd  7.547169 %

==================================================================

dodane zaprzeczenie przedziału dla cechy HNEA do reguły 2

rule_1     12.6 =< (MBAP) < 60
rule_2     6650  < (MNEA)
                  (HNEA) < 6980  \/ (HNEA) >= 7577

8 błędów na 106 wektorach
dokładność 92,452830 %, czyli błąd  7.547169 %

==================================================================

dodane zaprzeczenie przedziału dla cechy HNEA do reguły 2

rule_1     30.15 =< (MBAP) < 51,39
rule_2     6804  <   (MNEA)
                  (HNEA) < 9557  \/ (HNEA) >= 9872

7 błędów na 106 wektorach
dokładność 93,396226 %, czyli błąd   6,6037735 %

------------------------------------------------------------------

rule_2    6804  < (MNEA)
                  (HNEA) < 9557  \/ (HNEA) >= 9872

10 błędów na 106 wektorach
dokładność 90,56604 %, czyli błąd    9,43396 %

==================================================================

dodany przedział dla cechy HNEA do reguły 1

rule_1     12.6 =< (MBAP) < 60
           3896 =< (HNEA) < 15486
 
rule_2     6650 < (MNEA)

8 błędów na 106 wektorach
dokładność 92,452830 %, czyli błąd  7.547169 %

==================================================================

dodany przedział dla cechy HNEA do reguły 1

rule_1     11.1 =< (MBAP) < 60
           3845 =< (HNEA) < 21646
 
rule_2     6650 < (MNEA)

8 błędów na 106 wektorach
dokładność 92,452830 %, czyli błąd  7.547169 %

==================================================================

dodane zaprzeczenie przedziału dla cechy HNEA do reguły 1

rule_1     12.6 =< (MBAP) < 60
                   (HNEA) < 3565  \/ (HNEA) >= 4006
 
rule_2     6650 < (MNEA)

7 błędów na 106 wektorach
dokładność 93,396226 %, czyli błąd   6,6037735 %

==================================================================

dodane zaprzeczenie przedziału dla cechy HNEA do reguły 1

rule_1     11.1 =< (MBAP) < 60
                   (HNEA) < 3515  \/ (HNEA) >= 4357
 
rule_2     6650 < (MNEA)

7 błędów na 106 wektorach
dokładność 93,396226 %, czyli błąd   6,6037735 %

==================================================================