Machine learning

Strojové učenie (machine learning) je podoblasť umelej inteligencie, zaoberajúca sa metódami a algoritmami, ktoré umožňujú programu učiť sa a následne adekvátne reagovať na rôzne vstupné hodnoty bez toho, aby bol na ne explicitne naprogramovaný, iba na základe informácií, ktoré sa naučil. Algoritmy strojového učenia využívajú matematickú štatistiku, metódy štatistickej analýzy a hĺbkovú analýzu dát (data mining) a riešia tri základné problémy: klasifikáciu, regresiu alebo zhlukovanie. Podľa spôsobu učenia sa ich môžeme rozdeliť na učenie s učiteľom (supervised learning), učenie bez učiteľa (unsupervised learning), učenie s posilňovaním (reinforcement learning) a mix učenia s učiteľom a bez učiteľa (semi supervised learning). Ak stroju oznámime pri tréningu aj tzv. labels (známe hodnoty outputu), jedná sa učenie s učiteľom. Pri klasifikačných problémoch stroju oznamujeme pri tréningových vzorkách kategórie, teda stroj vie do akých kategórií patria tréningové vzorky. Populárny SVM (Support Vector Machine) patrí do učenia sa s učiteľom, nakoľko pracuje pri hľadaní maximálnej hranice medzi kategóriami so známymi labels. SVM je populárny hlavne preto, že si vie poradiť aj s lineárne neseparovateľnými dátami. Na obrázku nižšie je použitý SVC (Support Vector Classifier) s RBF kernelom.

svm

Pri regresných problémoch sa stroj učí tiež zo známych labels a preto regresie patria do učenia sa s učiteľom. Ak si tieto kategórie má nájsť stroj sám, tak sa jedná o učenie bez učiteľa. Napr. známy k-means algoritmus patrí do učenia sa bez učiteľa a v tomto prípade sa jedná o zhlukovanie (clustering), kde má algoritmus za úlohu nájsť k centroidov ako reprezentantov k skupín/kategórií.

Jednou z najpopulárnejších knižníc v pythone je scikit-learn, pomocou ktorej je možné veľmi rýchlo v programe použiť také techniky/algoritmy ako: najbližší susedia (nearest neighbors), random forests, PCA (Principal Component Analysis), rozhodovacie stromy (decision trees), naive bayes, cross-entropy metódu (patrí do reinforcement learning), neurónové siete, SVM a mnohé ďalšie. Prehľad týchto metód aj s návodom na použitie je na stránke Python DataMining. Súčasťou machine learning sú aj jednoduché a hlboké neurónové siete, ktoré sú hlavným predmetom nášho záujmu.