• No results found

Enligt den tidigare forskning som tagits upp i avsnitt 1.6 visar flera studier på att precisio- nen för en SVM sjunker i takt med att inlärningsmängden ökar. Detta är någonting som inte kunnat återskapas för detta arbete, vilket kan bero på att den mängd inlärningsdata som krävs inte kunnat uppnås. Vad man istället kan jämföra är algoritmernas stigning i prestation upp till den största datamängd som användes i detta arbete vilket var 2000 datainstanser. Det vi bland annat kan se är för Schohn och Cohn där deras resultat för ”earn” och ”acquisitions” märkta datainstanser efter 2000 inlärningsdata börjar ge sämre resultat[22]. Det vi kan se i våra resultat i Figur 18 är att en mycket högre precision nås vid våra tester än vad Schohn och Cohn fått ur sina försök med de datainstanserna. Re- sultaten de får för de markerade med ”baseball” och ”cryptography” är lika bra som de resultat som visats i detta arbete, men har inte lika många inlärningsdata som de tidigare nämnda markeringar.

6

Slutsatser och vidare forskning

Denna studie visar tydligt att mängden inlärningsdata markant påverkar algoritmernas prestation. Ju mer inlärningsdata desto bättre prestation av samtliga algoritmer upp till en viss mängd. Det som bör hållas i åtanke är att mina tester endast utförts på data- mängder mindre än 2000 datainstanser vilket gör att slutsatsen inte är generaliserbar för större mängder. Däremot visar resultaten att alla algoritmer presterade liknande resultat för de datamängder som givits vilket gör slutsatsen generaliserbar för andra algoritmer med samma datamängder. Studien visar också att strukturen på datainstanserna påverkar inlärningsförmågan för samtliga algoritmer, där de alla presterar bättre med en dubbel- symmetriskt datamängd jämfört med en symmetriskt datamängd.

I resultaten ser man att algoritmerna är olika bra på olika datamängder. Detta gör att det inte enkelt går att avgöra vilken algoritm som ska användas vid en ny datamängd.

Man bör därför vid en implementering av en Maskininlärningsapplikation först testa olika algoritmer med förslagsvis Scikit Learn och mäta inlärningsförmågan med en ROC space. Vidare forskning kan göras på var dessa mängdgränser går och om strukturen på datan påverkar dessa gränser. Det kan också vara intressant att undersöka om resultaten av andra algoritmer är de samma som för dessa algoritmer samt utföra ytterligare tester med andra datamängder som finns tillgängliga. Det kan även vara av intresse att utföra samma eller liknande tester med andra mätinstrument så som ROC kurvor och AUC för att se om dessa mätinstrument ger annorlunda resultat.

Slutligen vill jag återge några av mina erfarenheter kring Scikit Learn. Detta bibliotek har underlättat forskningen avsevärt. Det är relativt enkelt att använda och kräver inte särskilt mycket förkunskaper inom Python, men grundläggande kunskaper krävs. Inför vidare forskning inom området rekommenderar jag att använda detta bibliotek då det är anpassningsbart för olika angreppsmetoder som kan tänkas användas i forskningen.

Figurer

1 Demonstration av en SVM[14] . . . 9

2 Demonstration av en KNN med K=5[19] . . . 10

3 Demonstration av en Decision Tree Classifier[21] . . . 11

4 Exempel av Iris datamängd[28]. Här ses nio datainstanser av klass 2, Iris Virginica. . . 12

5 Exempel av Digits datamängd[23]. Här ses fyra exempel av datainstanser i Digits datamängd. . . 12

6 Exempel på en symmetrisk datainstans av formen 8x8 . . . 13

7 Exempel på en dubbelsymmetrisk datainstans av formen 8x8 . . . 14

8 Demonstration av Cross-validation[25] . . . 15

9 Definition av Confusion Matrix[6] . . . 15

10 Demonstration av ROC space[6]. . . 17

11 Confusion Matrix av resultatet för K-Nearest Neighbor på 6x6 symmetri datamängd och input data till ROC space. . . 18

12 ROC space på 6x6 symmetriskt datamängd . . . 19

13 ROC space på 8x8 symmetriskt datamängd . . . 20

14 ROC space på 6x6 dubbelsymmetriskt datamängd . . . 21

15 ROC space på 8x8 dubbelsymmetriskt datamängd . . . 21

16 ROC space på Iris datamängd . . . 22

17 ROC space på Digits datamängd . . . 23

Referenser

[1] Arlot, Sylvain, and Alain Celisse. ”A survey of cross-validation procedures for model selection.” Statistics surveys 4 (2010): 40-79.

[2] Bishop, Christopher M. Pattern recognition. Machine Learning 128 (2006): 1-58. [3] Carbonell, Jaime G., Ryszard S. Michalski, and Tom M. Mitchell. ”An overview of

Machine Learning.” Machine Learning. Springer Berlin Heidelberg, 1983. 3-23. [4] Caruana, Rich, and Alexandru Niculescu-Mizil. An empirical comparison of supervi-

sed Learning algorithms. Proceedings of the 23rd international conference on Machine Learning. ACM, 2006.

[5] Chang, Chih-Chung, and Chih-Jen Lin. ”LIBSVM: a library for support vector Machi- nes.” ACM Transactions on Intelligent Systems and Technology (TIST) 2.3 (2011): 27.

[6] Fawcett, Tom. ”An introduction to ROC analysis.” Pattern recognition letters 27.8 (2006): 861-874.

[7] Ferri, César, Peter Flach, and José Hernández-Orallo. ”Learning decision trees using the area under the ROC curve.” ICML. Vol. 2. 2002.

[8] Forman, George, and Ira Cohen. ”Learning from little: Comparison of classifiers given little training.” Knowledge Discovery in Databases: PKDD 2004 (2004): 161-172. [9] Geisser, Seymour. ”The predictive sample reuse method with applications.” Journal

of the American Statistical Association 70.350 (1975): 320-328.

[10] GOLDBERG, David E.; HOLLAND, John H. Genetic algorithms and Machine Le- arning. Machine Learning, 1988, 3.2: 95-99.

[11] Hanley, James A., and Barbara J. McNeil. ”The meaning and use of the area under a receiver operating characteristic (ROC) curve.” Radiology 143.1 (1982): 29-36. [12] Huang, Gong, and Wang Man. ”Learning curve: principle, application and limitation.”

E-Business and E-Government (ICEE), 2010 International Conference on. IEEE, 2010.

[13] Kalmár, Marcus, and Joel Nilsson. ”The art of forecasting–an analysis of predictive precision of Machine Learning models.” (2016).

[14] Marsland, Stephen. Machine Learning: an algorithmic perspective. CRC press, 2015. [15] McCarthy, John, et al. ”A proposal for the dartmouth summer research project on

artificial intelligence, august 31, 1955.” AI magazine 27.4 (2006): 12.

[16] Mosteller, Frederick, and John W. Tukey. ”Data analysis, including statistics.” Hand- book of social psychology 2 (1968): 80-203.

[17] Pedregosa, Fabian, et al. Scikit-learn: Machine Learning in Python. Journal of Machi- ne Learning Research, 12.Oct (2011): 2825-2830.

[18] Perlich, Claudia, Foster Provost, and Jeffrey S. Simonoff. Tree induction vs. logistic regression: A Learning-curve analysis. Journal of Machine Learning Research 4.Jun (2003): 211-255.

[19] Peterson, Leif E. ”K-nearest neighbor.” Scholarpedia 4.2 (2009): 1883.

[20] Provost, Foster. ”Machine Learning from imbalanced data sets 101.” Proceedings of the AAAI’2000 workshop on imbalanced data sets. 2000.

[21] Ranka, Sanjay, and V. Singh. ”CLOUDS: A decision Tree classifier for large datasets.” Proceedings of the 4th Knowledge Discovery and Data Mining Conference. 1998. [22] Schohn, Greg, and David Cohn. ”Less is more: Active learning with support vector

machines.” ICML. 2000.

[23] Scikit Learn. ”The Digit Dataset”. scikit-learn.org. [Online]. Tillgänglig:

http://scikit-learn.org/stable/auto_examples/datasets/plot_digits_last_image.html [Hämtad 2017-03-25].

[24] Shalev-Shwartz, Shai, and Nathan Srebro. ”SVM optimization: inverse dependence on training set size.” Proceedings of the 25th international conference on Machine learning. ACM, 2008.

[25] Stone, Mervyn. ”Cross-validatory choice and assessment of statistical predictions.” Journal of the royal statistical society. Series B (Methodological) (1974): 111-147. [26] Thomas G. Tape, MD. ”The area under an ROC curve”. gim.unmc.edu. [Online].

Tillgänglig:

http://gim.unmc.edu/dxtests/ROC3.htm [Hämtad 2017-04-04].

[27] Trigueiros, Paulo, Fernando Ribeiro, and Luis Paulo Reis. ”A comparison of machine learning algorithms applied to hand gesture recognition.” Information Systems and Technologies (CISTI), 2012 7th Iberian Conference on. IEEE, 2012.

[28] UCI Machine Learning Repository. ”Iris Data Set”. archive.ics.uci.edu. [Online]. Till- gänglig:

https://archive.ics.uci.edu/ml/datasets/Iris [Hämtad 2017-03-15].

[29] Wang, Defeng, and Lin Shi. ”Selecting valuable training samples for SVMs via data structure analysis.” Neurocomputing 71.13 (2008): 2772-2781.

[30] Wu, Jia, et al. ”Learning to compute the plane of symmetry for human faces.” Pro- ceedings of the 2nd ACM Conference on Bioinformatics, Computational Biology and Biomedicine. ACM, 2011.

[31] Yelle, Louis E. ”The learning curve: Historical review and comprehensive survey.” Decision sciences 10.2 (1979): 302-328.

A

Bilaga, Skapandet av dataset

1 i m p o r t c s v 2 i m p o r t numpy a s np 3 i m p o r t i t e r t o o l s 4 i m p o r t random 5 6 d a t a = " " 7 s e q = i t e r t o o l s . p r o d u c t (" 01 ", r e p e a t =16) 8 f = open(’ dubblesym8x8 . c s v ’, ’w ’) 9 10 s t r i n g s a r r = [ ] 11 c o u n t e r = 0 12 f o r i i n s e q : 13 a r r = np . f r o m i t e r ( i , np . i n t 8 ) . r e s h a p e ( 4 , 4 ) 14 s t r i n g s = " " 15 one = random . g e t r a n d b i t s ( 1 ) 16 two = random . g e t r a n d b i t s ( 1 ) 17 t h r e e = random . g e t r a n d b i t s ( 1 ) 18 f o u r = random . g e t r a n d b i t s ( 1 ) 19 f i v e = random . g e t r a n d b i t s ( 1 ) 20 s i x = random . g e t r a n d b i t s ( 1 ) 21 s e v e n = random . g e t r a n d b i t s ( 1 ) 22 e i g h t = random . g e t r a n d b i t s ( 1 ) 23 n i n e = random . g e t r a n d b i t s ( 1 ) 24 t e n = random . g e t r a n d b i t s ( 1 ) 25 e l e v e n = random . g e t r a n d b i t s ( 1 ) 26 t w e l v e = random . g e t r a n d b i t s ( 1 ) 27 t h i r t e e n = random . g e t r a n d b i t s ( 1 ) 28 f o u r t e e n = random . g e t r a n d b i t s ( 1 ) 29 f i f t h e e n = random . g e t r a n d b i t s ( 1 ) 30 s i x t e e n = random . g e t r a n d b i t s ( 1 ) 31 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( one , two , t h r e e , f o u r , f o u r , t h r e e , two , one ) 32 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( f i v e , s i x , s e v e n , e i g h t , e i g h t , s e v e n , s i x , f i v e ) 33 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( n i n e , ten , e l e v e n , t w e l v e , t w e l v e , e l e v e n , ten , n i n e ) 34 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( t h i r t e e n , f o u r t e e n , f i f t h e e n , s i x t e e n , s i x t e e n , f i f t h e e n , f o u r t e e n , t h i r t e e n ) 35 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( t h i r t e e n , f o u r t e e n , f i f t h e e n , s i x t e e n , s i x t e e n , f i f t h e e n , f o u r t e e n , t h i r t e e n ) 36 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( n i n e , ten , e l e v e n , t w e l v e , t w e l v e , e l e v e n , ten , n i n e ) 37 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( f i v e , s i x , s e v e n , e i g h t , e i g h t , s e v e n , s i x , f i v e ) 38 s t r i n g s += "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % ( one , two , t h r e e , f o u r , f o u r , t h r e e , two , one ) 39 s t r i n g s += " 1 " 40 s t r i n g s a r r . append ( s t r i n g s ) 41 c o u n t e r += 1 42 i f c o u n t e r == 1 0 0 0 : 43 b r e a k 44 random . s h u f f l e ( s t r i n g s a r r ) 45 f o r i i n s t r i n g s a r r : 46 f . w r i t e ( i + " \n")

47 48 s e q 2 = i t e r t o o l s . p r o d u c t (" 01 ", r e p e a t =32) 49 c = 0 50 f o r i i n s e q 2 : 51 a r r = np . f r o m i t e r ( i , np . i n t 8 ) . r e s h a p e ( 8 , 4 ) 52 s t r i n g s = " " 53 f o r j i n a r r : 54 one = random . g e t r a n d b i t s ( 1 ) 55 two = random . g e t r a n d b i t s ( 1 ) 56 t h r e e = random . g e t r a n d b i t s ( 1 ) 57 f o u r = random . g e t r a n d b i t s ( 1 ) 58 f i v e = random . g e t r a n d b i t s ( 1 ) 59 s i x = random . g e t r a n d b i t s ( 1 ) 60 s e v e n = random . g e t r a n d b i t s ( 1 ) 61 e i g h t = random . g e t r a n d b i t s ( 1 )

62 temp = "%s ,% s ,% s ,% s ,% s ,% s ,% s ,% s , " % (s t r( one ) , s t r( two ) , s t r( t h r e e ) ,

s t r( f o u r ) , s t r( f i v e ) , s t r( s i x ) , s t r( s e v e n ) , s t r( e i g h t ) ) 63 s t r i n g s += temp 64 temp = " " 65 s t r i n g s += " 0 " 66 f . w r i t e ( s t r i n g s + " \n") 67 c += 1 68 i f c == 1 0 0 0 : 69 b r e a k 70 f . c l o s e ( )

B

Bilaga, Skapandet av Confusion Matrix

1 from s k l e a r n . svm i m p o r t SVC 2 from s k l e a r n i m p o r t t r e e 3 from s k l e a r n i m p o r t n e i g h b o r s 4 i m p o r t numpy a s np 5 i m p o r t math 6 i m p o r t random 7 from s k l e a r n . m e t r i c s i m p o r t c o n f u s i o n _ m a t r i x 8 from s k l e a r n . c r o s s _ v a l i d a t i o n i m p o r t KFold

9 #Two l i n e s t o i g n o r e an e r r o r m ess age about f a l l i n g back t o a g l e s d r i v e r 10 i m p o r t w a r n i n g s

11 w a r n i n g s . f i l t e r w a r n i n g s ( a c t i o n=" i g n o r e ", module=" s c i p y ", mes sa ge="^ i n t e r n a l

g e l s d ") 12 #P r i n t o u t f u l l a r r a y s 13 np . s e t _ p r i n t o p t i o n s ( t h r e s h o l d=np . nan ) 14 15 d a t a = np . l o a d t x t (" t r a i n i n g d a t a . c s v ", d e l i m i t e r=’ , ’, u s e c o l s =(r a n g e( 0 , 6 3 ) ) ) 16 t a r g e t = np . l o a d t x t (" t r a i n i n g d a t a . c s v ", d e l i m i t e r=’ , ’, u s e c o l s =(64) ) 17 a l g o r i t h m s = [ n e i g h b o r s . K N e i g h b o r s C l a s s i f i e r ( n _ n e i g h b o r s =5 , w e i g h t s=’ u n i f o r m ’) , t r e e . D e c i s i o n T r e e C l a s s i f i e r ( c r i t e r i o n=’ g i n i ’) , SVC( k e r n e l=’ l i n e a r ’, C = 1 . 0 ) ] 18 19 f = open(’ o u t p u t . t x t ’, ’w ’) 20 21 f o r a l g i n a l g o r i t h m s : 22 f . w r i t e (" A l g o r i t m : " + s t r( a l g ) + " \n\n") 23 l o o p = [ 4 0 , 4 ] 24 f o r i i n l o o p : 25 cv = KFold ( n=l e n( t a r g e t ) , n _ f o l d s=i ) 26 f o r j , ( t r a i n , t e s t ) i n enumerate( cv ) : 27 a l g . f i t ( d a t a [ t r a i n ] , t a r g e t [ t r a i n ] ) 28 p r e d = a l g . p r e d i c t ( d a t a [ t e s t ] ) 29 t r u e = t a r g e t [ t e s t ] 30 conf_mat = c o n f u s i o n _ m a t r i x ( t r u e , pred , l a b e l s = [ 0 , 1 ] ) 31 s c o r e s . append ( a l g . s c o r e ( d a t a [ t e s t ] , t a r g e t [ t e s t ] ) ) 32 f . w r i t e (" T r a i n s i z e : " + s t r(l e n( t a r g e t [ t r a i n ] ) ) + " \n") 33 f . w r i t e (" T e s t s i z e : " + s t r(l e n( t a r g e t [ t e s t ] ) ) + " \n") 34 f . w r i t e (" S c o r e : " + s t r( a l g . s c o r e ( d a t a [ t e s t ] , t a r g e t [ t e s t ] ) ) + " \ n") 35 f . w r i t e (" C o n f u s i o n Matrix : \n") 36 f . w r i t e (s t r( conf_mat ) ) 37 f . w r i t e (" \n\n\n\n") 38 f . c l o s e ( )

Related documents