NDBI023 Dobývání znalostí

Poznámky

Zkoušky

Zdroje k předmětu

Požadavky 12/13

  • 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

Fisherův test

chi-kvadrát test

Příklady ze cvičení

Algoritmus TDIDT/ID3

Zvol jeden atribut jako kořen podstromu

Kořen

Vitamín
  • B (2+, 3-)

−n+(Vit(B))n(Vit(B)).log2n+(Vit(B))n(Vit(B))−n−(Vit(B))n(Vit(B)).log2n−(Vit(B))n(Vit(B))=−25.log225−35.log235=0.97-\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-)

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

  • D (3+, 2-)

⋯=0.97\dots = 0.97

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

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

−n+(Rodina(velka))m(Rodina(velka)).log2n+(Rodina(velka))n(Rodina(velka))−n−(Rodina(velka))n(Rodina(velka)).log2n−(Rodina(velka))n(Rodina(velka))=1-\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-)

⋯=0.9183\dots = 0.9183

  • malá (3+, 1-)

⋯=0.8113\dots = 0.8113

Entropia: H(Rodina)=0.9111H(Rodina)=0.9111

Cvičil
  • pravidelně (3+, 4-)

⋯=−37.log237−47.log247=0.985\dots = - \frac{3}{7}.log_2\frac {3}{7} - \frac{4}{7}.log_2\frac {4}{7} = 0.985

  • málo (6+, 1-)

⋯=−67.log267−17.log217=0.592\dots = - \frac{6}{7}.log_2\frac {6}{7} - \frac{1}{7}.log_2\frac {1}{7} = 0.592

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

Bypass

Entropia: H(Bypass)=0.8922H(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é :)

Velikost rodiny
  • veľká (0, 2-)

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

  • stredná (1+, 1-)

⋯=1\dots = 1

  • malá (1+, 0)

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

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

Cvicil

H(Cvicil)=0H(Cvicil)=0

Bypass

H(Bypass)=0.9183H(Bypass)=0.9183

C

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

D

H(Rodina)=0.9183H(Rodina)=0.9183 H(Cvicil)=0.9183H(Cvicil)=0.9183

H(Bypass)=0H(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 + Bypassprav./ m.| a| n\ - + - +

Perceptron

  • uloha: naucit perceptron rozoznavat body v 2D na 2 skupiny...

  • popis perceptronu v matlabe: p=[w1w2prah]p=\begin{bmatrix} w_1 & w_2 & prah \end{bmatrix}

  • vyhodnoti sa potom... x=[x1x2]x=\begin{bmatrix} x_1 & x_2 \end{bmatrix} => percrecall=w1∗x1+w2∗x2+prah∗1perc_{recall} = w_1*x_1 + w_2*x_2 + prah*1

  • ...rozsireny vstupny vektor x1′=[x1x21]x_1'=\begin{bmatrix} x_1 & x_2 & 1 \end{bmatrix}

  • vystup=hardlim1(p∗x1′)vystup=hardlim1(p*x_1') (hardlim1(<=0)=0; hardlim1(>0)=1)

  • inicializacia : p=[111]p=\begin{bmatrix} 1 & 1 & 1 \end{bmatrix}

  • vstup: A=[11231321]A=\left[ \begin{matrix} 1 & 1 & 2 & 3 \\ 1 & 3 & 2 & 1 \end{matrix} \right]

  • vystup (chceme): c=[1100]c = \begin{bmatrix} 1 & 1 & 0 & 0 \end{bmatrix}

  • uciaca konstanta a=0.2a=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)y=hardlim1(p*AA); dif=c(3)-y(3)) dany vektor k vaham... (c(3)−y(3))∗AA(:,3)(c(3)-y(3))*AA(:,3)

  • dostavam novy perceptron p1=p+a∗((c(3)−y(3))∗AA(:,3))′p1=p+a*((c(3)-y(3))*AA(:,3))'

  • y1=hardlim1(p1∗AA)=[1111]y1=hardlim1(p1*AA) = \begin{bmatrix} 1 & 1 & 1 & 1 \end{bmatrix}

  • to je zla matica (ma byt samozrejme [1100]\begin{bmatrix} 1 & 1 & 0 & 0 \end{bmatrix})- znovu zopakujeme postup...

  • p1=[0.60.6−0.2]=>y1=[1111]p1=\begin{bmatrix} 0.6 & 0.6 & -0.2 \end{bmatrix} => y1=\begin{bmatrix} 1 & 1 & 1 & 1 \end{bmatrix}

  • p2=[00.4−0.4]=>y2=[0110]p2=\begin{bmatrix} 0 & 0.4 & -0.4 \end{bmatrix} => y2=\begin{bmatrix} 0 & 1 & 1 & 0 \end{bmatrix}

teraz budeme skusat prvy vektor (ktory je nespravny)

  • p3=[0.20.6−0.2]=>y2=[1111]p3=\begin{bmatrix} 0.2 & 0.6 & -0.2 \end{bmatrix} => y2=\begin{bmatrix} 1 & 1 & 1 & 1 \end{bmatrix}

  • ... N iteracii (N=?)