Dobývání znalostí

From ωικι.matfyz.cz

Dobývání znalostí
Kód předmětu: NDBI023 (http://is.cuni.cz/studium/predmety/index.php?do=predmet&kod=NNDBI023)
Přednáší: Doc. RNDr. Mrázová Iveta, CSc.
Table of contents

Obecné informace k předmětu

Termíny písemek

  • 8. 4. 2008
  • 13. 5. 2008

Okruhy otázek na první písemku 8. 4. 2008

  • Transformace do intervalu <0,1>, směrodatná odchylka, chi kvadrát test a Fisherův test
  • Rozhodovací stromy - popsat některý algoritmus, rozhodnout který algoritmus je vhodný
  • MBA - jednoduchá tabulka - pravidla, které je nejlepší a proč, algoritmus generování pravidel

Příklady ze cvičení

Algoritmus TDIDT

Povedzme že budeme rozdeľovať podľa atribútu vitamín...

1 level, vetva pre...

vitamín

  • B (2+, 3-)

-\frac{n_+(Vit(B))}{m(Vit(B))}.log_2\frac {n_+(Vit(B))}{n(Vit(B))} - \frac{n_-(Vit(B))}{n(Vit(B))}.log_2\frac {n_-(Vit(B))}{n(Vit(B))} = 0.97

  • C (4+, 0-)

\dots = 0.0 (z "definície"...)

  • D (3+, 2-)

\dots = 0.97

Entropia: H(Vit) = \frac{0.971*5 + 0*4 + 0.971*5}{14} = 0.6936 (vážený priemer)

rodina

  • veľká (2+, 2-)

-\frac{n_+(Rod(velka))}{m(Rod(velka))}.log_2\frac {n_+(Rod(velka))}{n(Rod(velka))} - \frac{n_-(Rod(velka))}{n(Rod(velka))}.log_2\frac {n_-(Rod(velka))}{n(Rod(velka))} = 1

  • stredná (4+, 2-)

\dots = 0.9183

  • malá (3+, 1-)

\dots = 0.8113

Entropia: H(Rod) = 0.9111


cvičil

Entropia: H(Cvicil) = 0.7885


Bypass

Entropia: H(Bypass) = 0.8922


... budeme teda pokračovať podľa atribútu Vitamín (najmenšia entropia).

Množinu rozdelíme na 3 skupiny (B,C,D). C-čko všetci prežili, máme dve skupiny pre Bcomplex a D - spočítame znovu strednú entropiu (aby sme vedeli, podľa čoho ďalej štiepiť).


B

vyberieme riadky s Bcomplex a robíme to isté :)

H(Rod) = 0.4 H(Cvicil) = 0 H(Bypass) = 0.9183

C

...je jasné, tam nik nezomrel... :)

D

H(Rod) = 0.9183 H(Cvicil) = 0.9183 H(Bypass) = 0


...ďalej sa teda bude štiepiť v Bčku podľa "Cvicil" a v Dčku podľa "Bypass"


Perceptron

  • uloha: naucit perceptron rozoznavat body v 2D na 2 skupiny...
  • popis perceptronu v matlabe: p=[ \begin{matrix} w_1 & w_2 & prah \end{matrix} ]
    • vyhodnoti sa potom... x=[\begin{matrix} x_1 & x_2 \end{matrix} ] => percrecall = w1 * x1 + w2 * x2 + prah * 1
    • ...rozsireny vstupny vektor x_1'=[\begin{matrix} x_1 & x_2 & 1 \end{matrix} ]
    • vystup = hardlim1(p * x1') (hardlim1(<=0)=0; hardlim1(>0)=1)
  • inicializacia : p=[ \begin{matrix} 1 1 1 \end{matrix} ]
  • vstup: A=\left[ \begin{matrix} 1 & 1 & 2 & 3 \\ 1 & 3 & 2 & 1 \end{matrix} \right]
  • vystup (chceme): c = [ \begin{matrix} 1 & 1 & 0 & 0 \end{matrix} ]
  • uciaca konstanta a = 0.2
  • ucenie prebieha takto:
    • vezme sa vzor, ak sedi, nic nerobime
    • ak najdeme chybu - pricitame/odcitame (pozadovany-skutocny vystup - napr. v priklade y = hardlim1(p * AA);dif = c(3) − y(3)) dany vektor k vaham... (c(3) − y(3)) * AA(:,3)
      • dostavam novy perceptron p1 = p + a * ((c(3) − y(3)) * AA(:,3))'
    • y1=hardlim1(p1*AA) = [ \begin{matrix} 1 & 1 & 1 & 1 \end{matrix} ]
      • to je zla matica (ma byt samozrejme [1 1 0 0])- znovu zopakujeme postup...
        • p1=[ \begin{matrix} 0.6 & 0.6 & -0.2 \end{matrix} ] => y1=[ \begin{matrix} 1 & 1 & 1 & 1 \end{matrix} ]
        • p2=[ \begin{matrix} 0 & 0.4 & -0.4 \end{matrix} ] => y2=[ \begin{matrix} 0 & 1 & 1 & 0 \end{matrix} ]
          • teraz budeme skusat prvy vektor (ktory je nespravny)
        • p3=[ \begin{matrix} 0.2 & 0.6 & -0.2 \end{matrix} ] => y2=[ \begin{matrix} 1 & 1 & 1 & 1 \end{matrix} ]
          • ... N iteracii (N=?)