M U
2. 3M ts ph ng pháp gi i quy t
4.1.1 Th v in maxent
Th vi n ph,n m m maxent ,u tiên .c Jason Baldridge, Tom Morton và Gann Bierner thi t k và tri n khai v i m)c ích xây d$ng m t b công c) ph,n m m h8 tr. cho mô hình entropy c$c #i [25,26]. T2 phiên b n 1.2.0, Eric Friedman ti p t)c thi t k và c i ti n th vi n #t tính hi u qu cao h n. Phiên b n m i nh"t 2.4.0 .c phát hành ngày 06/10/2005 [26].
Th vi n là m t s n ph6m ph,n m m mi n phí, có th .c phân ph i l#i ho(c s a i theo các i u l c a t ch c GNU Lesser General Public License (LGPL). Th vi n .c phân ph i v i m)c ích nó s= .c áp d)ng m t cách h u ích các ph,n m m th ng m#i ho(c trong các bài toán thích h.p. Ng -i s d)ng nh n .c m t b n sao c a GNU Lesser General Public License cùng v i th vi n này.
Th vi n ph,n m m .c t i t2 trang Web có %a chB:
http://maxent.sourceforge.net.
4.1.2 Th vi n SharpEntropy
M t th vi n các công c) h8 tr. mô hình entropy c$c #i th hai có tên g i SharpEntropy [25]. SharpEntropy là m t th vi n gi ng nh th vi n MaxEnt nh ng .c vi t b>ng ngôn ng C#. SharpEntropy .c thi t k và tri n khai d$a trên phiên b n 2.3.0 c a th vi n MaxEnt phát hành vào tháng 8 n m 2004 [25]. Phiên b n ,u tiên c a SharpEntropy .c phát hành vào ngày 24 tháng 7 n m 2005, phiên b n th hai .c phát hành vào ngày 16 tháng 11 n m 2005 [25]. Tác gi c a SharpEntropy là Richard Northedge, là m t nhà phát tri n c a công ty UK Microsoft Gold Partner [26].
H,u h t mã ngu7n c a SharpEntropy .c chuy n i d$a trên th vi n Java .c xu"t b n theo gi"y phép LGPL, nên mã ngu7n c a SharpEntropy c9ng có th t i .c trên m#ng d i s$ cho phép c a LGPL [25, 26].
Th vi n ph,n m m .c t i t2 trang Web có %a chB:
C"u trúc th m)c và các t p c a SharpEntropy là t ng t$ nh c a Maxent. D i ây là c"u trúc th m)c và các t p c a th vi n SharpEntropy [25].
C u trúc SharpEntropy C u trúc SharpEntropy.IO
Chi ti t v ý ngh/a c a các t p cung c"p 0 tài li u s [25].
4.1.3 nh d ng c a t p d li u hu n luy n trong SharpEntropy
Gi s mu n d$ oán vào m t ngày nào ó, m t ng -i c) th có mang theo ô ra ngoài hay không. Vi c ,u tiên là thu th p m t s d li u m4u b>ng cách quan sát m t s ngày i ra ngoài c a ng -i ó. Ta có b ng d li u nh d i ây:
Ngày 1 Em Tr-i khô Không mang ô Ngày 2 L#nh Tr-i khô Không mang ô Ngày 3 L#nh Tr-i m a Mang ô
Ngày 4 L#nh Tr-i khô Mang ô Ngày 5 Em Tr-i khô Mang ô
Sau 5 ngày, ta nh n th"y r>ng c,n ph i thêm m t s thông tin: ch@ng h#n ng -i ó i mu n, ho(c là ng -i ó i s m, và quan sát thêm m t s d li u m4u:
Ngày 6 L#nh Tr-i khô i s m Mang ô Ngày 7 L#nh Tr-i m a i s m Mang ô
Ngày 8 L#nh Tr-i khô i mu n Không mang ô Ngày 9 Em Tr-i m a i mu n Không mang ô Ngày 10 Em Tr-i khô i mu n Không mang ô
M8i m t hàng c a b ng d li u bi u di n m t s$ ki n hu"n luy n. M8i s$ ki n hu"n luy n có m t ,u ra (0 ây là mang ô hay không mang ô) và m t ng c nh. Ng c nh bao g7m m t ho(c nhi u các thu c tính ("L#nh", "Tr-i khô" …). Ng c nh là s$ k t h.p c a các thu c tính d4n t i ,u ra c a s$ ki n. ây th t$ c a các thu c tính là không quan tr ng.
D li u .c (t trong m t t p v n b n, ch@ng h#n là t p data.txt. Trong t p
ch a m8i s$ ki n hu"n luy n trên m t dòng. Trên m8i dòng các thu c tính ng c nh và ,u ra .c phân tách b0i các ký t$ tr:ng ( ,u ra luôn .c gi s là ph,n t cu i cùng trên dòng). %nh d#ng d li u hu"n luy n nh v y vì th vi n
SharpEntropy ã có l p SharpEntropy.IO.PlainTextByLineDataReader có th c
các t p v n b n theo s$ phân tách nh trên. SharpEntropy th$c hi n c t p d li u hu"n luy n và sinh m t mô hình entropy c$c #i nh sau:
System.IO.StreamReader trainingStreamReader =
new System.IO.StreamReader(trainingDataFile); SharpEntropy.ITrainingEventReader eventReader =
new SharpEntropy.BasicEventReader(new SharpEntropy.PlainTextByLineDataReader(trainingStreamReader)); SharpEntropy.GisTrainer trainer = new SharpEntropy.GisTrainer(); trainer.TrainModel(eventReader);
mModel = new SharpEntropy.GisModel(trainer);
L p GisTrainer hu"n luy n m t mô hình entropy c$c #i s d)ng ph ng pháp GIS ã trình bày trong ph,n ch ng 2 c a lu n v n. Có m t s ph ng pháp khác s d)ng cho vi c hu"n luy n các mô hình MaxEnt và m t s th$c hi n t t h n GIS [26], tuy nhiên, hi n t#i th vi n SharpEntropy chB h8 tr. thu t toán GIS [25, 26].
K t qu nh n .c là m t b n th c a l p GisModel, là l p thi hành giao di n IMaximumEntropyModel. Khi mô hình ã .c hu"n luy n nó có th .c s d)ng d$ oán các k t qu ra trong t ng lai.
Nh v y m8i khi ch#y ch ng trình thì mô hình s= .c sinh ra t2 t p hu"n luy n, i u này có th ch"p nh n .c n u t p hu"n luy n là nh3, tuy nhiên trong các ng d)ng th$c t , t p d li u hu"n luy n th -ng r"t l n do ó mô hình hu"n luy n chB xây d$ng m t l,n và sau ó .c l u l#i s d)ng. Th vi n SharpEntropy cung c"p ba ki u %nh d#ng t p trong SharpEntropy.IO l u tr mô
o %nh d#ng v n b n (PlainTextGisModelReader và
PlainTextGisModelWriter). V i %nh d#ng này chúng ta có th c .c và ki m tra các k t q a c a vi c hu"n luy n d li u nh ng kích th c t p là r"t l n.
o %nh d#ng nh% phân "t ng thích Java" (JavaBinaryGisModelReader và
JavaBinaryGisModelWriter). Kích th c t p nh3 h n nh ng %nh d#ng theo h máy big-endian phù h.p v i %nh d#ng c a th vi n maxent. Tuy nhiên %nh d#ng này không phù h.p v i SharpEntropy, vì C# thân thi n v i h máy little-endian.
o %nh d#ng nh% phân (BinaryGisModelReader và BinaryGisModelWriter).
ây là %nh d#ng th -ng xuyên s d)ng. Các t p .c sinh ra nh3 h n %nh d#ng t ng thích Java và t n ít th-i gian c h n.
Chúng tôi s d)ng %nh d#ng nh% phân l u tr mô hình trong các t p nh% phân có ph,n m0 r ng .nbin và có c"u trúc nh sau [26]: GIS : Ch ra ki u mô hình. H ng s làm úng (int). Tham s h ng s làm úng (double). Các !u ra o S các !u ra o Tên c a các !u ra. Các thu c tính o Các m$u !u ra S l ng các m$u !u ra (int)
Các giá tr m$u !u ra (m%i giá tr là m t xâu ng n cách nhau b i ký t tr ng).
o Các nhãn thu c tính
S l ng các nhãn thu c tính (int) Tên các thu c tính.
o#n mã hu"n luy n các t p mô hình t2 các t p d li u hu"n luy n:
SharpEntropy.GisModel mModel;
string trainingDataFile = “trainingFile.txt”; string modelDataFile = modelFile.nbin;
System.IO.StreamReader trainingStreamReader = new System.IO.StreamReader(trainingDataFile); SharpEntropy.ITrainingEventReader eventReader = new SharpEntropy.BasicEventReader(new
SharpEntropy.PlainTextByLineDataReader(trainingStreamReader)); SharpEntropy.GisTrainer trainer = new SharpEntropy.GisTrainer();
trainer.TrainModel(eventReader);
mModel = new SharpEntropy.GisModel(trainer); SharpEntropy.IO.BinaryGisModelWriter writer = new SharpEntropy.IO.BinaryGisModelWriter(); writer.Persist(mModel, modelDataFile);
Trong ó trainingFile.txt là t p v n b n ch a d li u hu"n luy n có %nh d#ng mô t trong 4.1.3, modelFile.nbin là m t t p mô hình ch a mô hình .c hu"n luy n.