O buna parte a algoritmilor de invatare a unor reprezentari logice sunt bazate pe notiunile de specializare si generalizare. Generalizarea este un raspuns la un exemplu fals negativ -- un exemplu prezis negativ, dar care este de fapt pozitiv. Operatia inversa, specializarea, este raspunsul la un exemplu fals pozitiv.
Generalizarea se realizeaza prin urmatoarele operatii:
Inlocuirea constantelor cu variabile | varsta(ion,18)-->varsta(Student, 18) |
Eliminarea intersectiilor | varsta(Student,18)&statura(Student,inalt)&casatorit(Student,da)-->varsta(Student,18)&statura(Student,inalt). |
Reuniunea multimilor | varsta(Student,18)-->varsta(Student,18) U statura(Student, inalt). |
Utilizarea unor termeni generalizatori | varsta(Student,18)-->varsta(Student,major) |
Specializarea, fiind inversa generalizarii, se realizeaza prin operatiile duale celor descrise mai sus.
Algoritmul "current-best-hypothesis"
Acest algoritm porneste de la o ipoteza extrasa din primul exemplu (obligatoriu pozitiv) si in continuare o generalizeaza sau specializeaza corespuzator exemplelor de invatare. Algoritmul poate fi descris schematic prin urmatorul pseudocod:
Algoritmul "least-commitment"
Algoritmul CBH este adesea ineficient pentru ca uneori trebuie sa ia decizii in momente cind nu exista informatie suficienta. Algoritmul de tip "least-commitment" incearca sa mentina reprezentarea tuturor ipotezelor consistente cu exemplele vazute. Aceasta multime de ipoteze se numeste spatiul de versiuni. Cand se intalneste un nou exemplu, se elimina din spatiul de versiuni toate ipotezele inconsistente cu exemplul curent.
O reprezentare compacta a spatiului de versiuni poate fi construita plecand de la ordonarea partiala generata de specializare/generalizare. Astfel un set de ipoteze poate fi reprezentat prin multimile de ipoteze cele mai generale (G) si cele mai specializate (S). Fiecare element din G este consistent cu toate observatiile facute, si nu exista astfel de ipoteze mai generale. Fiecare element din S este consistent cu toate observatiile facute, si nu exista astfel de ipoteze mai specializate.
Descrierea algoritmului in pseudocod:
Exemplu:
Sky | Temp | Humid | Wind | Water | Forecast | EnjoySport |
Sunny | Warm | Normal | Strong | Warm | Same | Yes |
Sunny | Warm | High | Strong | Warm | Same | Yes |
Rainy | Cold | High | Strong | Warm | Change | No |
Sunny | Warm | High | Strong | Cool | Change | Yes |
Se poate urmari pas cu pas evolutia spatiului de versiuni in urma aplicarii a doua reguli simple si intuitive:
S = {(0,0,0,0,0,0)}
; 0 este 'prohibited'
G = {(?,?,?,?,?,?)}
; ? este 'any'
1: (+)
S = {(Sunny,Warm,Normal,Strong,Warm,Same)}
G = {(?,?,?,?,?,?)}
2: (+)
S = {(Sunny,Warm,?,Strong,Warm,Same)}
G = {(?,?,?,?,?,?)}
3: (-)
S = {(Sunny,Warm,?,Strong,Warm,Same)}
G = {(Sunny,?,?,?,?,?), (?,Warm,?,?,?,?), (?,?,?,?,?,Same)}
4: (+)
S = {(Sunny,Warm,?,Strong,?,?)}
G = {(Sunny,?,?,?,?,?), (?,Warm,?,?,?,?)}
Se observa ca la ultimul pas, dupa generalizarea multimii S a fost modificata
si multimea G deoarece contine un element care nu este consistent cu exemplele
intalnite. Cele doua multimi obtinute in final, impreuna cu tot spatiul
pe care il acopera intre ele, descriu toate
ipotezele consistente cu exemplele parcurse.
Dezavantaje:
Termen
de predare: 20 Decembrie 1999
Pentru intarziere: -2 puncte/saptamana (vacanta nu se considera)