210 likes | 364 Views
Изкуствен интелект Упражнение № 10. спец. Информатика, ФМИ 2003/2004. Машинно самообучение. Формиране на описания на понятия (хипотези): примери положителни отрицателни обучаваща извадка тестова извадка Обучение за: едно понятие много понятия. Машинно самообучение.
E N D
Изкуствен интелектУпражнение № 10 спец. Информатика, ФМИ 2003/2004
Машинно самообучение • Формиране на описания на понятия (хипотези): • примери • положителни • отрицателни • обучаваща извадка • тестова извадка • Обучение за: • едно понятие • много понятия
Машинно самообучение • Езици за представяне на примерите и хипотезите • атрибут-стойност • релационен език • други
Език атрибут стойност • Представяне на примерите: %example (Id, Class, AVS) example(a4,mammal,[has_covering = hair, milk = t, homeothermic = t, habitat = air, eggs = f, gills = f]). example(a5,fish,[has_covering = scales, milk = f, homeothermic = f, habitat = sea, eggs = t, gills = t]). example(a6,reptile,[has_covering = scales, milk = f, homeothermic = f, habitat = land, eggs = t, gills = f]).
Език атрибут стойност • Представяне на хипотезите: IF Ai=Vij & … & Ak=Vkm THEN Classp … IF As=Vst & … & An=Vnl THEN Classq
Типове атрибути и стойности • Номинални • Линейни • Структурни
learn(H):- findall([Class|AVS], example(_,Class,AVS), Ex), lrn(Ex,H).
lrn(E,H) :- del([Class|A],E,E1), del([Class|B],E1,E2), lgg(A,B,LGG,Class), \+((member([C1|LGG],E2), \+(Class=C1))), lrn([[Class|LGG]|E2],H). lrn(H,H).
lgg([],[],[],Class). lgg([A=V1|Rest1],[A=V2|Rest2],[A=H1|Hyp],Class) :- lgg1(A,V1,V2,H1,Class), lgg(Rest1,Rest2,Hyp,Class).
lgg1(_,X,Y,X,_):- X==Y,!. lgg1(A,X,Y,_,C):- X \== Y, nominal(C,N),member(A,N). lgg1(A,X,Y,H,C):- X \==Y, linear(C,L),member(A,L), cover(X,Y,H). lgg1(A,X,Y,H,C):- X \==Y, struct(C,L),member(A,L), common_parent(X,Y,H,C).
cover(X,X,X):-!. cover(X,Y,[Min,Max]):- atom(X),atom(Y),!, min(X,Y,Min), max(X,Y,Max). cover(X,[Y1,Y2],[Min,Max]):- atom(X),!, min(X,Y1,Min), max(X,Y2,Max). cover([X1,X2],Y,[Min,Max]):- atom(Y),!, min(X1,Y,Min), max(X2,Y,Max). cover([X1,X2],[Y1,Y2],[Min,Max]):- min(X1,Y1,Min), max(X2,Y2,Max).
min(X,X,X):-!. min(X,Y,X):-X<Y,!. min(X,Y,Y):-X>Y. max(X,X,X):-!. max(X,Y,X):-X>Y,!. max(X,Y,Y):-X<Y.
common_parent(X,Y,H,C):- parent(H,X,C), parent(H,Y,C). parent(X,X,C). parent(X,Y,C):-isa(C,Y,X). parent(X,Y,C):-isa(C,Y,Z),parent(X,Z,C).
del(X,[X|T],T). del(X,[Y|T],[Y|V]) :- del(X,T,V). member(X,[X|_]). member(X,[_|T]) :- member(X,T). write_list([]). write_list([H|Rest]):- write(H),nl, write_list(Rest).
Пример example(a1,mammal,[has_covering = hair, milk = t, homeothermic = t, habitat = land, eggs = f, gills = f]). example(a2,mammal,[has_covering = none, milk = t, homeothermic = t, habitat = sea, eggs = f, gills = f]). example(a3,mammal,[has_covering = hair, milk = t, homeothermic = t, habitat = sea, eggs = t, gills = f]). example(a4,mammal,[has_covering = hair, milk = t, homeothermic = t, habitat = air, eggs = f, gills = f]). example(a5,fish,[has_covering = scales, milk = f, homeothermic = f, habitat = sea, eggs = t, gills = t]).
Пример example(a6,reptile,[has_covering = scales, milk = f, homeothermic = f, habitat = land, eggs = t, gills = f]). example(a7,reptile,[has_covering = scales, milk = f, homeothermic = f, habitat = sea, eggs = t, gills = f]). example(a8,bird,[has_covering = feathers, milk = f, homeothermic = t, habitat = air, eggs = t, gills = f]). example(a9,bird,[has_covering = feathers, milk = f, homeothermic = t, habitat = land, eggs = t, gills = f]). example(a10,amphibian,[has_covering = none, milk = f, homeothermic = f, habitat = land, eggs = t, gills = f]).
Пример struct(_,[]). linear(_,[]). nominal(_,[has_covering,milk,homeothermic,habitat,eggs,gills])
Пример | ?- learn(H),write_list(H). [bird,has_covering=feathers,milk=f,homeothermic=t, habitat=_3699,eggs=t,gills=f] [reptile,has_covering=scales,milk=f, homeothermic=f,habitat=_3039,eggs=t,gills=f] [mammal,has_covering=_2095,milk=t,homeothermic=t, habitat=_2324,eggs=_2464,gills=f] [fish,has_covering=scales,milk=f,homeothermic=f, habitat=sea,eggs=t,gills=t] [amphibian,has_covering=none,milk=f,homeothermic=f,habitat=land,eggs=t,gills=f]
Пример example(1,pos,[hs = octagon, bs = octagon, sm = no, ho = sword, jc = red, ti = yes]). example(2,pos,[hs = octagon, bs = octagon, sm = yes, ho = sword, jc = red, ti = yes]). example(3,neg,[hs = round, bs = square, sm = yes, ho = sword, jc = blue, ti = no]). example(4,neg,[hs = round, bs = square, sm = yes, ho = flag, jc = green, ti = yes]). example(5,pos,[hs = octagon, bs = round, sm = yes, ho = sword, jc = red, ti = yes]). example(6,pos,[hs = square, bs = octagon, sm = yes, ho = sword, jc = red, ti = yes]). example(7,pos,[hs = square, bs = square, sm = no, ho = sword, jc = red, ti = yes]).
Машинно самообучение | ?- learn(H),write_list(H). [neg,hs=octagon,bs=square,sm=yes,ho=_125218,jc=blue, ti=no] [neg,hs=square,bs=round,sm=_123819,ho=_123946,jc=green, ti=_124150] [neg,hs=octagon,bs=round,sm=_120834,ho=_120961,jc=yellow,ti=no] [neg,hs=square,bs=octagon,sm=_116815,ho=_116942,jc=green,ti=_117146] [neg,hs=square,bs=round,sm=_113808,ho=_113935,jc=yellow, ti=no] [neg,hs=square,bs=round,sm=_111648,ho=_111775,jc=blue, ti=_111979] [neg,hs=round,bs=octagon,sm=_106498,ho=_106625,jc=yellow,ti=_106829] [neg,hs=round,bs=octagon,sm=_101722,ho=_101849,jc=green, ti=_102053]
[neg,hs=round,bs=octagon,sm=_100472,ho=_100599,jc=blue, ti=_100803] [pos,hs=round,bs=round,sm=_93315,ho=_93442,jc=_93582, ti=_93735] [pos,hs=square,bs=square,sm=_84522,ho=_84649,jc=_84789, ti=_84942] [pos,hs=octagon,bs=octagon,sm=_70090,ho=_70217,jc=_70357, ti=_70510] [neg,hs=round,bs=square,sm=_55652,ho=_55779,jc=yellow, ti=_55983] [neg,hs=round,bs=square,sm=_51710,ho=_51837,jc=green, ti=_52041] [neg,hs=round,bs=square,sm=_45417,ho=_45544,jc=blue, ti=_45748] [pos,hs=_41557,bs=_41658,sm=_41772,ho=_41899,jc=red, ti=_42103] [neg,hs=octagon,bs=round,sm=no,ho=flag,jc=green,ti=no] [neg,hs=square,bs=octagon,sm=yes,ho=balloon,jc=blue,ti=no] [neg,hs=square,bs=octagon,sm=no,ho=flag,jc=yellow,ti=yes] [neg,hs=octagon,bs=square,sm=no,ho=balloon,jc=yellow,ti=yes] [neg,hs=octagon,bs=square,sm=no,ho=sword,jc=green,ti=no]