Dobývání znalostí

Z ωικι.matfyz.cz
Verze z 15. 9. 2013, 20:47, kterou vytvořil PeterBlack (diskuse | příspěvky) (D)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání
Dobývání znalostí
Kód předmětu: NNDBI023
Přednáší: Doc. RNDr. Mrázová Iveta, CSc.

Požadavky 12/13[editovat | editovat zdroj]

  • výsledná známka = 40% body ze zkoušky, 20% body z dvou písemek, 40% body z úkolů ze cvičení a projektu (včetně bodů ze cvičení, všechny úkoly jsou povinné)
  • vypracovat projekt
  • celkem je potreba splnit aspon 56%
  • terminy v září budou jeden až dva

Zdroje k předmětu[editovat | editovat zdroj]

Fisherův test[editovat | editovat zdroj]

chi-kvadrát test[editovat | editovat zdroj]

Písemky[editovat | editovat zdroj]

NDBI023_Písemky

Příklady ze cvičení[editovat | editovat zdroj]

Algoritmus TDIDT/ID3[editovat | editovat zdroj]

Zvol jeden atribut jako kořen podstromu

Kořen[editovat | editovat zdroj]

Vitamín[editovat | editovat zdroj]
  • B (2+, 3-)

$ -\frac{n_+(Vit(B))}{n(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))} = - \frac{2}{5}.log_2\frac {2}{5} - \frac{3}{5}.log_2\frac {3}{5} = 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)

Velikost rodiny[editovat | editovat zdroj]
  • veľká (2+, 2-)

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

  • stredná (4+, 2-)

$ \dots = 0.9183 $

  • malá (3+, 1-)

$ \dots = 0.8113 $

Entropia: $ H(Rodina)=0.9111 $


Cvičil[editovat | editovat zdroj]
  • pravidelně (3+, 4-)

$ \dots = - \frac{3}{7}.log_2\frac {3}{7} - \frac{4}{7}.log_2\frac {4}{7} = 0.985 $

  • málo (6+, 1-)

$ \dots = - \frac{6}{7}.log_2\frac {6}{7} - \frac{1}{7}.log_2\frac {1}{7} = 0.592 $

Entropia: $ H(Cvicil) = \frac{0.985*7 + 0.592*7}{14} = 0.7885 $

Bypass[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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

Velikost rodiny[editovat | editovat zdroj]
  • veľká (0, 2-)

$ \dots = 0 $ (z "definice"...)

  • stredná (1+, 1-)

$ \dots = 1 $

  • malá (1+, 0)

$ \dots = 0 $ (z "definice"...)

Entropia: $ H(Rodina) = \frac{0*2 + 1*2 + 0*1}{5} = 0.4 $

Cvicil[editovat | editovat zdroj]

$ H(Cvicil)=0 $

Bypass[editovat | editovat zdroj]

$ H(Bypass)=0.9183 $

C[editovat | editovat zdroj]

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

D[editovat | editovat zdroj]

$ H(Rodina)=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"

            Vitamin
             / | \
           B/ C|  \D
     Cviceni   +   Bypass
prav./  m.|        a|  n\
  -       +         -    +

Perceptron[editovat | editovat zdroj]

  • 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} ] $ => $ perc_{recall} = w_1*x_1 + w_2*x_2 + prah*1 $
    • ...rozsireny vstupny vektor $ x_1'=[\begin{matrix} x_1 & x_2 & 1 \end{matrix} ] $
    • $ vystup=hardlim1(p*x_1') $ (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=?)