ãã®ã·ãªã¼ãºè¨äºã§ã¯ãRã§*1è²ã
ãªæ©æ¢°å¦ç¿ã®ã¢ã«ã´ãªãºã ã«ã¤ãã¦ãããããã©ããªãã®ãªã®ããç°¡åãªãã¼ã¿ã«å¯¾ãã¦åé¢è¶
å¹³é¢ã»æ±ºå®å¢çãæããªããè¦ã¦ãã¾ããã
- パッケージユーザーのための機械学習(1):決定木 - 銀座で働くデータサイエンティストのブログ
- パッケージユーザーのための機械学習(2):ロジスティック回帰 - 銀座で働くデータサイエンティストのブログ
- パッケージユーザーのための機械学習(3):サポートベクターマシン(SVM) - 銀座で働くデータサイエンティストのブログ
- パッケージユーザーのための機械学習(4):ニューラルネットワーク - 銀座で働くデータサイエンティストのブログ
- パッケージユーザーのための機械学習(5):ランダムフォレスト - 銀座で働くデータサイエンティストのブログ
ã¨ãããã¨ã§ä»åã¯ããããã¨ãã¦ãããã¾ã§è¦ã¦ããæ師ããå¦ç¿å士ã§åé¢è¶
å¹³é¢ã»æ±ºå®å¢çã®ããããã並ã¹ã¦è¦æ¯ã¹ã¦ã¿ããã¨æãã¾ãã
ãã¤ã³ãã¨ãã¦ã¯ãæ±åãã¨ã精度ãã®ãã©ã³ã¹ã以ä¸ã«ç¤ºãå¦ç¿ãã¼ã¿ãã¿ã¼ã³ã¯å ¨ã¦æ確ã«çã®åå¸ãäºåã«æ±ºãã¦ãããã®ã°ããï¼ä¾ãã°XORãã¿ã¼ã³ã§ããã°4ã¤ã®è±¡éã«åçã«é ç½®ãã2次å æ£è¦åå¸Ã4ï¼ãªã®ã§ãåã ã®åé¡å¨ãã©ãããããã®çã®åå¸å½¢ç¶ãåæ ãã¤ã¤ãã©ãã¾ã§ç²¾åº¦ãåºãããè¦ããã¨æã£ã¦ãã£ã¦ã¿ã¾ããã
ï¼â»ãã®ã·ãªã¼ãºã§ã¯ããã¾ã§ãåé¢è¶ å¹³é¢ã»æ±ºå®å¢çã®å½¢ç¶ãè¦ããã¨ã§ããããã®åé¡å¨ã®ããã¾ããªç¹å¾´ãã¤ãã¿ããçã®åå¸å½¢ç¶ã«ã©ããããè¿ä»ããã¨ãã§ããããã§æ±åæ§è½ãããå¦ç¿ãã¼ã¿ã«å¯¾ãã¦ã©ããããæ£ç¢ºã«è¿½å¾ã§ããããã§æ±åæ§è½ã®ãã¬ã¼ããªãã¨ãã¦ã®åé¡ç²¾åº¦ãè¦ã¦ããã®ã§ã交差æ¤è¨¼ã§ãã£ããæªç¥ãã¼ã¿ã¸ã®é©ç¨ã¨ãã£ã観ç¹ããã®ä¸è¬çãªåé¡ç²¾åº¦ã¯ç¹ã«è¦ã¦ãã¾ãããã¡ãªã¿ã«äº¤å·®æ¤è¨¼ããªãã£ãã®ã¯ãã ã®ãµããªã§ãããããªããï¼
ç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§2åé¡
ã¾ãã¯ãå¤å
¸çãªç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§2åé¡ããã±ã¼ã¹å士ã§æ¯ã¹ã¦ããã¾ããæ¬æ¥ãªããã¼ã»ãããã³ã®ãããªåç´ãªåé¡å¨ã§ããããã±ã¼ã¹ã§ãã
ç·å½¢åé¢å¯è½ãã¿ã¼ã³ã«å¯¾ãã¦ã¯ããã¯ãæ®éã®ç·å½¢èå¥é¢æ°ã®æ¹ãåãè¯ãããã ã¨ãããã¨ãè¦ã¦åãã¾ããã¨ããã®ã¯ã決å®æ¨ã¨SVMï¼ã¬ã¦ã·ã¢ã³ã«ã¼ãã«ï¼ã¨ã©ã³ãã ãã©ã¬ã¹ãã¯ã©ãè¦ã¦ãåé¢è¶ å¹³é¢ã»æ±ºå®å¢çãä¸èªç¶ãªä¸æ¹ã§ããã¸ã¹ãã£ãã¯å帰ã¨ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ã¯çãéãã®ä¸æ¬ç·ã®åé¢è¶ å¹³é¢ã»æ±ºå®å¢çãæ¨å®ããã¦ããããã§ãã
ãã¤ã³ãã¯ãã¯ããã¥ã¼ã©ã«ãããã¯ã¼ã¯ã§ããããããã¼ã»ãããã³ããæ´¾çããææ³ã ãã«ããã¡ãã¨ãã¥ã¼ãã³ã°ããã°ç·å½¢åé¢å¯è½ãã¿ã¼ã³ã®å ´åã¯ãã¼ã»ãããã³ã«ãåãããæãããã¾ããã
ãã¡ããä¾ãã°SVMã§ãç·å½¢å
ç©ã«ã¼ãã«ã¨ãé¸ã¹ã°ä½ã®åé¡ããªããã§ãããé«æ¬¡å
ã§ç·å½¢åé¢å¯è½ãä¸å¯è½ããèªããªããããªã±ã¼ã¹ã§ã¯ããã¥ã¼ã©ã«ãããã¯ã¼ã¯ãé¸ã¶ã¨ããã®ã¯ãªããªãæªããªããã§ã¤ã¹ãããããªããª*2ãã¨æã£ã¦ã¾ãã
ç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§3åé¡
次ã«ãç·å½¢åé¢å¯è½ãã¿ã¼ã³ãã¤2å¤ããå¤ã¯ã©ã¹ãªã±ã¼ã¹ã®ä¾ã¨ãã¦ã3åé¡ã®ã±ã¼ã¹ãåãä¸ãã¦ã¿ã¾ãã
ç¶æ³ã¨ãã¦ã¯ãã¾ãå¤ãããªããã¨æãã¾ãããã ã3åé¡ã«ãªã£ããã¨ã§æ±ºå®æ¨ã»SVMï¼ã¬ã¦ã·ã¢ã³ã«ã¼ãã«ï¼ã»ã©ã³ãã ãã©ã¬ã¹ãã®åé¢è¶ å¹³é¢ã»æ±ºå®å¢çã®éå¹çæ§ãããã«é¡èã«ãªã£ãæãããã¾ããã¼ã
ããã§ãSVMï¼ã¬ã¦ã·ã¢ã³ã«ã¼ãã«ï¼ã¯ã¾ã ãã·ãªæ¹ãªãã§ãããã決å®æ¨ã¨ã©ã³ãã ãã©ã¬ã¹ãã«é¢ãã¦è¨ãã°ãããããã»ã¨ãã©æ±åãã¦ãªãã«çããããããªãã§ãããããç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§ãããã«å¤ã¯ã©ã¹åé¡ã«ãªã£ãå ´åã¯è¦æ³¨æã¨ãããã¨ãªã®ããããã¾ããããã
XORã·ã³ãã«ãã¿ã¼ã³ã§2åé¡
ããããã¯ç·å½¢åé¢ä¸å¯è½ãã¿ã¼ã³ã®ä¾ã¨ãã¦ãXORãã¿ã¼ã³ãæãã¦ããã¾ãããããã«ãã®å
ã¯ãã¸ã¹ãã£ãã¯å帰ã¯ç¡çãªã®ã§é¤å¤ãã¦ãæ®ãã®4ææ³ã§è¦æ¯ã¹ã¦ããã¾ãã
大ä½ã©ã®ææ³ã§ã綺éºã«åããã¦ããã®ãè¦ã¦åãã¾ããã決å®æ¨ãä¸çªä¸æããã£ã¦ããã¨ããã®ããªããªãé¢ç½ãæãã§ãã
ã¾ãããã®ä¸ã§ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ã ããå¦ãªæ±ºå®å¢çãæãã¦ããã®ãç®ãå¼ãã¾ããåé¡æ§è½èªä½ã¯æªããªãã®ã§ãããçã®åå¸*3ã¨ã¯å¾®å¦ã«éãæãä¸ãã決å®å¢çã«ãªã£ã¦ãã¾ã£ãã¨ããã®ãèå³æ·±ãã§ãã
XORè¤éãã¿ã¼ã³ã§2åé¡
XORã·ã³ãã«ãã¿ã¼ã³ã®å象éã®åå¸ã®åæ£ãããã«å¤§ãããã¦ãåå¸å士ã®éãªããå¢ããããã®ã§ããããã¯ææ³ã«ãã£ã¦ããªãé¡èãªå·®ãåºã¦ããã¨æãã¾ãã
çã®åå¸ãä¸çªããåæ ãã¦ããã®ã¯å®ã¯SVMãã®1ï¼æ±åéè¦ï¼ã§ããã®ä»ã¯ã©ããè¦ã¦ããªã¼ãã¼ãã£ããã£ã³ã°æ°å³ã«è¦ãã¾ããSVMãã®2ã»3ã¯ã¾ãã«ã¸ã§ã¼ã¯ã§ããï½ãããã¾ã§è¡ãã¨ãä½ããªã¢ã³ã¹ã»å¼·æ±åã®SVMã®è¯ãã¯ã»ã¼å®å ¨ã«å°ç¡ãã§ãããããããããã«ãã¡ã§ãããã
ä¸æ¹ã§ãä»ã®æ±ºå®æ¨ããã¥ã¼ã©ã«ãããã¯ã¼ã¯ãã©ã³ãã ãã©ã¬ã¹ããçµæ§ãªã¼ãã¼ãã£ããã£ã³ã°ãã¦è¦ããã®ããªããªãé¢ç½ãã§ãããã¯ãåå¸å士ããã¡ããã¡ãéãªããããªãã¿ã¼ã³ã§ã¯ããªããªãé£ããã¨ãããã¨ãªãã§ããããã
ã¡ãªã¿ã«å¦ç¿ãã¼ã¿ã¸ã®è¿½å¾ç²¾åº¦ã¨ããç¹ã ãã§è¨ãã°ããã®ã±ã¼ã¹ã§ã¯ã©ã³ãã ãã©ã¬ã¹ãã100%ã§ãããã¨ããçµæã«ãªã£ã¦ãã¾ããæ±åã¯ã¨ããããåé¡ç²¾åº¦ã§åè² ãããã±ã¼ã¹ã§ã¯ã©ã³ãã ãã©ã¬ã¹ããæå
¥ãã¦ãã¾ãã¨ããã®ãæã¨ãããã¨ã§ãããã
XORè¤éãã¿ã¼ã³ã§4åé¡
æå¾ã«ãRããã±ã¼ã¸ã§å®è£
ããã¦ããã»ã¨ãã©ã®æ©æ¢°å¦ç¿åé¡å¨ã3ã¯ã©ã¹ä»¥ä¸ã®å¤ã¯ã©ã¹åé¡ã«å¯¾å¿ãã¦ãããã¨ã«çç®ãã¦ãXORè¤éãã¿ã¼ã³ããã®ã¾ã¾4象éã®åé¡åé¡ã«ç½®ãæãã¦ãã£ã¦ã¿ããã®ã並ã¹ã¦ã¿ã¾ãããåé¡æ§è½ãè¦ãããã«ãåé¡ãããªã¯ã¹ãç®åºããçµæãè¼ãã¦ããã¾ãã
> table(xor$label,out2.xor4.rp.class) 0 1 2 3 0 17 0 2 6 1 0 20 3 2 2 0 1 23 1 3 0 1 1 23 # 決å®æ¨ãå¦ç¿ãã¼ã¿ãã®ãã®ã¸ã®åé¡æ£ççã¯83% > table(xor$label,predict(xor4.svm,xor[,-3])) 0 1 2 3 0 18 1 1 5 1 0 18 4 3 2 2 2 20 1 3 0 3 0 22 # SVMãã®1ï¼æ±åéè¦ï¼ãåé¡æ£ççã¯78% > table(xor$label,predict(xor4.svm2,xor[,-3])) 0 1 2 3 0 25 0 0 0 1 0 25 0 0 2 0 0 25 0 3 0 0 0 25 # SVMãã®2ï¼éå¦ç¿æ°å³ï¼ãåé¡æ£ççã¯100% > table(xor$label,predict(xor4.svm3,xor[,-3])) 0 1 2 3 0 25 0 0 0 1 0 24 1 0 2 0 0 25 0 3 0 0 0 25 # SVMãã®3ï¼ãã®ä¸éï¼ãåé¡æ£ççã¯99% > table(xor$label,out2.xor4.nnet.class) 0 1 2 3 0 20 1 1 3 1 0 19 3 3 2 1 2 21 1 3 1 4 0 20 # ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ãåé¡æ£ççã¯80% > table(xor$label,predict(xor4.rf,xor[,-3])) 0 1 2 3 0 25 0 0 0 1 0 25 0 0 2 0 0 25 0 3 0 0 0 25 # ã©ã³ãã ãã©ã¬ã¹ããåé¡æ£ççã¯100%
ããã¯é常ã«é¢ç½ãçµæã«ãªãã¾ãããSVMãã®1ã¨ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ãã4象éã«åãããçã®åå¸å½¢ç¶ãããåæ ããªããããåé¡æ£ççã¨ããç¹ã§ã¯ãã¾ãè³ãããªãçµæã«ã決å®æ¨ã¯æ±ºå®å¢çãåé¡æ£ççãå¾®å¦ãªæããSVMãã®2ã»3ã¯åé¡æ£ççã¯æå¥ãªããªãã§ãããåé¢è¶ å¹³é¢ãç¸å¤ããããã ã®ã¸ã§ã¼ã¯ï½
ããã«å¯¾ãã¦4象éã«åãããã¨ããçã®åå¸å½¢ç¶ãããåæ ãã¤ã¤ããªããã¤åé¡æ£çç100%ãéæããã®ãã©ã³ãã ãã©ã¬ã¹ãããã¯ãã«è¦ãã¨ãªã¼ãã¼ãã£ããã£ã³ã°ãã¦ããããã«è¦ãã¤ã¤ããå
¨ä½ã®å¾åã¯å¤ããªãã¨ããå°è±¡ãä¸ããçµæã«ãªãã¾ããã
ã¾ã¨ã
ã»ã»ã»ã¨ãããã¨ã§ãç·åçã«è¦ãã¨ãã¯ãã©ã³ãã ãã©ã¬ã¹ãã£ã¦å¼·ããªãã¨ããã®ãå人çãªææ³ã§ãããä½ã§ããç¡çããåé¡ãã¦ããããããã®ç²¾åº¦ãããªãè¯ããç¹ã«å¤ã¯ã©ã¹åé¡ãã¤éç·å½¢ãªã±ã¼ã¹ã§ã¯é常ã«å¼·ãã¨ããããã§ããã¡ãªã¿ã«ã¢ã«ã´ãªãºã ã®ç¹æ§ä¸ããããã¨æãã°åæ£å¦çãå¯è½ã¨ããåªãç©ã§ãããã¾ãã
ãã ãç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§ã®ã©ã³ãã ãã©ã¬ã¹ãã®ãã¡ã£ã·ããæ¢ã«ä¸ã§è¦ãããã«æãããªããã§ããã®è¾ºã¯ãã¯ãæ§ã ãªã¢ã«ã´ãªãºã ãçç¥ããä¸ã§ãåã ã®ãã¼ã¿ã«å¯¾ãã¦æé©ãªãã®ãå²ãå½ã¦ã¦ããã¨ãããéå®åãªä½æ¥ããããæ ãå¿ è¦æ§ãä¾ç¶ã¨ãã¦ããã¨ãããã¨ãåèªèãããçµæã«ãªã£ãããã«ãæãã¾ãã
ãããããã®è¾ºã®ã¢ã«ã´ãªãºã é¸æã«çããããããã®ããçãã¼ã¿ãããç¨åº¦è¦ç´ããæç¹ã§ç·å½¢åé¢å¯è½ãä¸å¯è½ãããµã¯ãã¨è¦æ¥µããããããããªã»ã³ã¹ãããã磨ãã¨ãããã¨ãããããããã®æ©æ¢°å¦ç¿ã¢ã«ã´ãªãºã ãæ大éçããããã«å¿
è¦ãªãã¨ã¨è¨ã£ã¦è¯ãã®ããããã¾ããããã
ãã¾ãï¼å¤å¥åæ
å¤å¥åæã¯åºæ¬çã«åã¯å
¨ç¶ä½¿ããªãã®ã§ãã¢ã«ã´ãªãºã ã®èª¬æã¨ãã¯æãã«ãã¦Rã§æ±ºå®å¢çãæããçµæã ãè²¼ã£ã¦ããã¾ãã
ç·å½¢åé¢å¯è½ãã¿ã¼ã³ã§ã®ç·å½¢å¤å¥åæã¨ã
XORã·ã³ãã«ãã¿ã¼ã³ã§ã®äºæ¬¡å¤å¥åæã¨ã
XORè¤éãã¿ã¼ã³ã§ã®äºæ¬¡å¤å¥åæã®çµæããªããRã§ã¯{MASS}ããã±ã¼ã¸ã®lda() / qda()é¢æ°ã§å®è¡ã§ãã¾ãã
追è¨
@TJO_datasci thought you might be interested in a python version of your classifier comparison post, http://t.co/UjFriL5OzO
— Justin Goodwin (@jgbos) January 16, 2014
(@jgbos)ãããä½ã¨åã®è±èªçã¨ã³ããªã«è§¦çºããã¦ãããªãã®ããã£ã¦ããã¾ããã
è¦ãã¾ãã¾ã§ãPython + scikit-learnã§ã»ã¼åãåé¢è¶
å¹³é¢ã»æ±ºå®å¢çã®æ¯è¼ããã£ã¦ã¾ãï¼ãã ããã¥ã¼ã©ã«ãããã¯ã¼ã¯ã®ä»£ããã«GMMã§ç¡çãã決å®å¢çãæãã¦ã¾ãï¼ãæé£ããããã¾ããã¼ã
*1:çµå±Pythonå ¨ç¶ä½¿ããªãã£ãï½ï½ï½
*2:ãã ããã¥ã¼ãã³ã°ãã°ãªãããµã¼ãã§ããç¨åº¦å ¨èªåã§ããã¨ããæ¡ä»¶ä»ãã§
*3:4ã¤ã®è±¡éã«åçã«äºæ¬¡å æ£è¦åå¸ãç½®ããã ã