PDF - 270 kB

Transkrypt

PDF - 270 kB
Redukcja atrybutów
Poszukuje się takich podzbiorów atrybutów, które zachowują podział
obiektów na klasy decyzyjne taki sam, jak wszystkie atrybuty
1
2
3
4
5
6
7
8
9
10
a1 a2 a3 a4 a5 a6
0 0 0 0 0 0
0 0 1 1 0 0
1 2 2 0 1 1
0 1 1 0 0 1
0 1 0 2 0 1
1 2 2 3 2 0
1 2 2 2 0 1
0 0 1 1 0 1
0 1 0 3 2 0
2 2 2 3 2 0
d
1
1
2
2
3
2
1
3
4
4
{a1 , a4 , a6 } , {a1 , a2 , a3 , a5 , a6 }
ZPT
1
2
3
4
5
6
7
8
9
10
a1 a4 a6
0 0 0
0 1 0
1 0 1
0 0 1
0 2 1
1 3 0
1 2 1
0 1 1
0 3 0
2 3 0
d
1
1
2
2
3
2
1
3
4
4
1
Redukcja atrybutów
Jak obliczać minimalne zbiory atrybutów?
Tak samo jak minimalne zbiory argumentów
Metoda obliczania reduktów:
Obliczyć:
atrybuty niezbędne,
iloczyn (PN) podziałów indukowanych atrybutami niezbędnymi (PN) ,
podział ilorazowy PN|PD
(podział ilorazowy wskazuje na wszystkie pary obiektów, których
porównanie utworzy tablicę porównań)
z tablicy porównań utworzyć funkcje wyróŜniającą (typu CNF)
przekształcić CNF na DNF
DNF reprezentuje wszystkie redukty!
ZPT
2
Przykład redukcji atrybutów
atrybuty niezbędne:
a1 a2 a3 a4 a5 a6
d
1
0
0
0
0
0
0
1
2
0
0
1
1
0
0
1
3
5
1
0
0
2
1
1
2
1
0
0
0
2
1
0
0
1
1
1
2
2
3
6
1
2
2
3
2
0
2
7
1
2
2
2
0
1
1
8
0
0
1
1
0
1
3
9
0
1
0
3
2
0
4
10
2
2
2
3
2
0
4
4
ZPT
a1
a6
poniewaŜ wiersze 6 i 10
róŜnią się na pozycji a1
skoro wiersze 2 i 8
róŜnią się na pozycji
a6
3
Przykład redukcji atrybutów
a1 a2 a3 a4 a5 a6
d
1
0
0
0
0
0
0
1
2
0
0
1
1
0
0
1
3
5
1
0
0
2
1
1
2
1
0
0
0
2
1
0
0
1
1
1
2
2
3
6
1
2
2
3
2
0
2
7
1
2
2
2
0
1
1
8
0
0
1
1
0
1
3
9
0
1
0
3
2
0
4
10
2
2
2
3
2
0
4
4
P1 = (1,2,4,5,8 , 9 ; 3,6,7 ;10)
P6 = (1,2,6,9,10 ;3,4,5,7,8)
PD = (1,2,7;3,4,6;5,8 ;9,10)
P1 • P6 | PD = (1,2)(9);(4)(5,8);(6) ;(3)(7);(10)
ZPT
4
Przykład redukcji atrybutów
a1 a2 a3 a4 a5 a6
d
1
0
0
0
0
0
0
1
2
0
0
1
1
0
0
1
3
5
1
0
0
2
1
1
2
1
0
0
0
2
1
0
0
1
1
1
2
2
3
6
1
2
2
3
2
0
7
1
2
2
2
0
8
0
0
1
1
9
0
1
0
10
2
2
2
4
Redukty:
ZPT
P1 • P6 | PD = (1,2)(9);(4)(5,8);(6) ;(3)(7);(10)
1,9
a2 , a4 , a5
2,9
a2 , a3 , a4 , a5
4,5
a3 , a4
2
4,8
a2 , a4
1
1
3,7
0
1
3
a4 , a5
3
2
0
4
3
2
0
4
WyraŜenie CNF
DNF
(a4 + a2) (a4 + a3) (a4 + a5) = a4 + a2a3a5
{a1 , a4 , a6 }
{a1 , a2 , a3 , a5 , a6 }
5
Plik danych RSES
TABLE EXPLOR
ATTRIBUTES 7
x1 numeric 0
x2 numeric 0
x3 numeric 0
x4 numeric 0
x5 numeric 0
x6 numeric 0
x7 numeric 0
OBJECTS 10
0 0 0 0 0 0 1
0 0 1 1 0 0 1
1 2 2 0 1 1 2
0 1 1 0 0 1 2
0 1 0 2 0 1 3
1 2 2 3 2 0 2
1 2 2 2 0 1 1
0 0 1 1 0 1 3
0 1 0 3 2 0 4
2 2 2 3 2 0 4
ZPT
REDUCTS (2)
{ x1, x4, x6 }
{ x1, x2, x3, x5, x6 }
Inna metoda obliczania reduktów…
Omówioną metodę moŜna znacznie usprawnić
wykorzystując stosowaną w syntezie logicznej
procedurę uzupełniania funkcji boolowskiej.
Twierdzenie: KaŜdy wiersz i macierzy , stanowiącej uzupełnienie
macierzy porównań M reprezentuje pokrycie kolumnowe M, gdzie
j ∈ L wtedy i tylko wtedy, gdy M ij = 1
PowyŜsze twierdzenie sprowadza proces obliczania reduktów do
obliczania uzupełnienia jednorodnej funkcji boolowskiej.
Procedura ta (nazwana UNATE_COMPLEMENT) została
opracowana jako fragment procedury COMPLEMENT programu
Espresso.
Nigdy nie była stosowana do obliczania reduktów
ZPT
7
Przykład – metoda klasyczna
Pokrycie kolumnowe (przypomnienie)
M:
1
0

1

1
1
0
1
0
0
1
0
0
1
1
0

1
x1
x3
x1
x1
x2 x4
x4
x2
x4
(x1 + x2 + x4) (x3 + x4) (x1 + x2)(x1 + x4) =
= x1x3 + x2x4 +x1x4
To są
wszystkie
minimalne
pokrycia
kolumnowe
macierzy M
ZPT
8
8
Przykład – metoda uzupełniania
M:
1
0

1

1
1 0 1
0 1 1
1 0 0

0 0 1
x 3x 4
x 1x 2
= x1x 4 + x 3 x 4 + x1x 2
00
01
11
00
1
01
1
11
10
x1x3 + x2x4 +x1x4
ZPT
f M = x1x 2 x 4 + x 3 x 4 + x1x 2 + x1x 4 =
1
1
1
1
1
10
1
fM = x1x 3 + x x + x x
2 4
1 4
To samo co poprzednio!
9
Metoda obliczania reduktów…
jest równowaŜna obliczaniu Complementu
(Uzupełnienia) funkcji boolowskiej, reprezentowanej
Tablicą porównań.
Espresso
F,D
Complement
Expand
Essential primes
Irredundant-Cover
Reduce
FM
Last-gasp
ZPT
10
Przykład TL27
.i 7
.o 1
.type fr
.p 9
1000101 0
1011110 0
1101110 0
1110111 0
0100101 1
1000110 1
1010000 1
1010110 1
1110101 1
.e
ZPT
Tablica porównań
Tablica porównań
nie jest funkcją
boolowską
1100000
0000011
0010101
0010011
0110000
1111011
0011000
0001110
0001000
0101011
1001011
0101000
0111110
0111000
0011011
1010010
0110001
0100111
0100001
0000010
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
11
Redukcja (usuwanie) wierszy tabl. porównań
.i 7
.o 1
.type fr
.p 9
1000101 0
1011110 0
1101110 0
1110111 0
0100101 1
1000110 1
1010000 1
1010110 1
1110101 1
.e
ZPT
1100000
0000011
0010101
0010011
0110000
1111011
0011000
0001110
0001000
0101011
1001011
0101000
0111110
0111000
0011011
1010010
0110001
0100111
0100001
0000010
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Zredukowana
tablica porównań
1100000
0010101
0110000
0110001
0100001
1
1
1
1
1
.i 7
.o 1
.p 6
11------1-1-1
-11----1----1
---1-------1.end
1
1
1
1
1
1
reprezentuje funkcję
boolowską
12
Do obliczenia uzupełnienia zastosujmy…
Espresso
F,D
.i 7
.o 1
.p 6
11------1-1-1
-11----1----1
---1-------1.end
{x1,x3,x4,x6,x7}
Complement
{x2,x3,x4,x6}
Expand
1
1
1
1
1
1
{x2,x4,x5,x6}
Essential primes
{x2,x4,x6,x7}
Irredundant-Cover
ESPRESSO
Reduce
FM
Last-gasp
.i 7
.o 1
.p 4
0-00-00
-000-0-0-000-0-0-00
.end
0
0
0
0
13
ZPT
Algorytm obliczania reduktów…
polega na obliczaniu Complementu (Uzupełnienia)
jednorodnej funkcji boolowskiej, reprezentowanej
Tablicą (macierzą) porównań.
Uzupełnienie oblicza się dla zero-jedynkowej
macierzy M.
Sprytna procedura uzupełniania polega na iteracyjnym
rozkładzie zbioru kostek macierzy M na kofaktory.
Kofaktory te są obliczane tak długo, aŜ odpowiadające im
zbiory kostek staną się „łatwe” do obliczenia ich
uzupełnienia.
Proces
kończy
„scalanie”
wyników
cząstkowych.
ZPT
14
Obliczanie…
Complementu (Uzupełnienia) funkcji boolowskiej,
reprezentowanej Tablicą porównań:
f = x j fxj + x j fxj
f = x j fxj + x j fxj
Sprytna procedura uzupełniania polega na iteracyjnym
rozkładzie zbioru kostek reprezentującego funkcję f na
kofaktory. Kofaktory te są obliczane tak długo, aŜ
odpowiadające im zbiory kostek staną się „łatwe” do
obliczenia ich uzupełnienia. Proces kończy „scalanie”
wyników cząstkowych.
ZPT
15
Complement funkcji jednorodnej
Szczególnie prosto oblicza się uzupełnienie funkcji
jednorodnej.
F = x j Fx j + Fx j
F = xj ⋅ F0 + F1
Kostki funkcji jednorodnej reprezentuje się binarnie.
0 1 ∗ 0
F = ∗ ∗ 1 ∗


0 ∗ 1 ∗
1 1 0 1 
M = 0 0 1 0 
1 0 1 0 
Uzupełnienie oblicza się dla macierzy M.
ZPT
16
Rozkład macierzy M
Wybór zmiennej:
1)Wybieramy kostkę (wiersz macierzy M) z największą
liczbą zer.
2) W wybranej kostce wybieramy zmienne, które mają
jedynkę w tej kostce.
3) Spośród wybranych w punkcie 2) zmiennych
wybieramy tę, która ma najwięcej jedynek w swojej
kolumnie.
ZPT
17
Rozkład macierzy M
Obliczanie kofaktorów:
Kofaktory macierzy M oblicza się według następującego
schematu:
Kofaktor jedynkowy macierzy M względem zmiennej
xj otrzymujemy przez ustawienie wszystkich pozycji j-tej
kolumny macierzy M na zera.
Kofaktor zerowy macierzy M względem zmiennej xj
otrzymujemy przez wypisanie z M tych kostek (wierszy),
w których zmienna xj przyjmuje wartość zero.
ZPT
18
Complement kofaktorów
Podstawą uzupełnienia funkcji jednorodnej jest
rozszczepianie macierzy M na podzbiory kostek, których
uzupełnienie łatwo moŜna obliczyć.
1)JeŜeli kofaktor zawiera tylko jedną kostkę, jego
uzupełnienie oblicza się wg prawa De Morgana.
2) JeŜeli kofaktor zawiera kostkę (wiersz) samych 0,
jego uzupełnienie jest zbiorem pustym.
3) JeŜeli kofaktor jest zbiorem pustym, jego uzupełnienie
jest Tautologią.
ZPT
19
Scalanie uzupełnionych kofaktorów
F = xj ⋅ F0 + F1
Znaczy to, Ŝe jeŜeli otrzymany kofaktor był zerowy
(ozn. F0), to jego Complement mnoŜymy go przez
odpowiednie xj i dodajemy,
a jeŜeli był jedynkowy (ozn.
Complement tylko dodajemy.
ZPT
F1),
to
jego
20
ROZKŁAD
1 2 3 4 5 6 7
1 0
0 0
0 0

0 0
C = [1 0
x1
0 0 0 0 0 0 0
0 0 1 0 1 0 1
0 0 1 0 0 0 0


0 0 0 0 0 0 1
C=Φ
ZPT
 1 1 0 0 0 0 0


0 0 1 0 1 0 1


0 1 1 0 0 0 0


0 1 0 0 0 0 1
0 0 0 0 0
1 0 1 0 1

1 0 0 0 0

0 0 0 0 1
1 2 3 4 5 6 7
0 1 1 0 0 0 0


0 1 0 0 1 0 0
C=

0 1 0 0 0 0 1


1 0 1 0 0 0 1
x2
x2
1 0 0 0 1]
x1
[0
0 1 0 1 0 1]
0 0 1 0 0 0 0
C = 0 0 0 0 1 0 0
0 0 0 0 0 0 1


0 0 1 0 1 0 1


0 0 1 0 0 0 0


0 0 0 0 0 0 1
C=[0 0 1 0 0 0 1]
C=Φ
x7
0 0 1 0 1 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0


x7
[0
0 1 0 0 0 0]
=C
21
SCALANIE
C(x7) = x7 [0010000]+ Φ = [0010001]
C(x1) = x1 [0010001]+ Φ = [1010001]
1 2 3 4 5 6 7
C(x2) =
0

x2 0

0

0 1 0 0 0 0
0 0 0 1 0 0 + [1010001] =

0 0 0 0 0 1
Minimalne pokrycia:
x2, x3,
x2, x5,
x2, x7,
x1, x3, x7
ZPT
0 1 1 0


0 1 0 0

0 1 0 0

1 0 1 0

Niezbędne:
+ x4, x6
0 0 0
1 0 0

0 0 1
00

1
Dokładnie tak samo jak
w metodzie klasycznej!
22
Funkcja KAZ
Przed redukcją
redukcją
.type fr
.i 21
.o 1
.p 31
100110010110011111101
111011111011110111100
001010101000111100000
001001101100110110001
100110010011011001101
100101100100110110011
001100100111010011011
001101100011011011001
110110010011001001101
100110110011010010011
110011011011010001100
010001010000001100111
100110101011111110100
111001111011110011000
101101011100010111100
110110000001010100000
110110110111100010111
110000100011110010001
001001000101111101101
100100011111100110110
100011000110011011110
110101000110101100001
110110001101101100111
010000111001000000001
001001100101111110000
100100111111001110010
000010001110001101101
101000010100001110000
101000110101010011111
101010000001100011001
011100111110111101111
.end
ZPT
Po redukcji
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Redukcja
argumentów/atrybutów
Ile jest takich
rozwiązań
01010
10110
00100
01001
01000
11010
10011
01110
10100
11000
11011
10000
00010
01111
00011
11111
00000
01101
00110
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
Jedno z wielu rozwią
rozwiązań
zań
po
o redukcji argumentów
23
Funkcja KAZ
.type fr
.i 21
.o 1
.p 31
100110010110011111101
111011111011110111100
001010101000111100000
001001101100110110001
100110010011011001101
100101100100110110011
001100100111010011011
001101100011011011001
110110010011001001101
100110110011010010011
110011011011010001100
010001010000001100111
100110101011111110100
111001111011110011000
101101011100010111100
110110000001010100000
110110110111100010111
110000100011110010001
001001000101111101101
100100011111100110110
100011000110011011110
110101000110101100001
110110001101101100111
010000111001000000001
001001100101111110000
100100111111001110010
000010001110001101101
101000010100001110000
101000110101010011111
101010000001100011001
011100111110111101111
.end
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Wszystkich rozwiązań:
z minimalną i najmniejszą liczbą
argumentów jest 35,
z minimalną liczbą argumentów
jest: 5574
Czas obliczeń RSES = 70 min.
Czas obliczeń dla nowej
metody= 234 ms.
18 tysięcy razy szybciej!
24
ZPT