Iti0210lab11
Sisukord
Otsustuspuu: phishing linkide tuvastamine
Sissejuhatus
Kodutöö teemaks on e-mailides pahatahtlike (i.k. phishing) linkide ära tundmine. Selleks on kasutada andmed [1], kus e-mailidest on lingid juba eraldatud ja need omakorda huvipakkuvateks atribuutideks teisendatud. Kodutöös tuleb langetada atribuutide väärtuste pealt lõppotsus - kas link on pahatahtlik, kahtlane või ohutu.
Vali masinõppeks sobiv tarkvarapakett ning katseta otsustuspuud. Kasuta treenimise efektiivsuse mõõtmiseks krossvalideerimist. Proovi saavutada võimalikult suur täpsus, kasutades klassifikaatorina otsustuspuud.
Soovitatud masinõppe teegid (vali üks):
- http://scikit-learn.org/stable/index.html - Python; juhend eeldab, et kasutatakse seda
- http://www.cs.waikato.ac.nz/ml/weka/ - Java
Ettevalmistus
Kõigepealt tuleb andmed sisse lugeda. Käsitsi ei ole seda keeruline teha, aga Anacondaga tuleb kaasa pandas pakett, millega see käib nii:
import pandas
blah = pandas.read_csv("IFI6057_hw2017_data.txt")
Tulemuseks on DataFrame tüüpi objekt
Andmete kirjeldus
Kõik atribuudid (ja lõplik klassifikatsioon) omavad järgnevaid väärtusi:
- 1 - Legitiimne
- 0 - kahtlane
- -1 - Pahatahtlik või iseloomulik pahatahtlikule URL-ile
Atribuudid:
-
SFHkas veebilehel olevad vormid suunavad uuele domeenile -
popUpWidnowkas veebilehel on pop-up aknaid -
SSLfinal_Statekas HTTPS on kasutuses ja kas sertifikaat on usaldusväärne -
Request_URLkas veebileht laadib pilte ja muid komponente teiselt domeenilt -
URL_of_Anchorkas veebileht sisaldab palju linke teisele domeenile -
web_traffickas veebilehe külastatavus on kõrge, keskmine või madal (Alexa ranking) -
URL_Lengthülipikk, pikk või tavaline URL -
age_of_domaindomeeni on vana või värskelt registreeritud -
having_IP_AddressURL sisaldab IP aadressi
Väli Result sisaldab lõplikku klassifikatsiooni treenimiseks ja testimiseks.
Näide:
... 1,-1,1,0,-1,-1,0,1,0,-1 1,-1,0,-1,-1,-1,0,1,0,1 1,0,1,1,1,-1,1,1,0,-1 1,1,1,-1,1,1,-1,-1,0,-1 ...
Otsustuspuu
Treeni otsustuspuu esialgu kõigi andmetega: näited.
Proovi suvaliste treeningandmete ridadega klassifitseerimist. Tulemus peaks vastama treeningandmetele, muidu on midagi väga valesti :-)
Krossvalideerimine
Nüüd huvitab meid, kui hästi meie otsustuspuu töötab. Kasuta selleks krossvalideerimist ja leia keskmine täpsus ja hinnangu viga, nagu siin näidetes.
Märkus: näites on kasutatud klassifikaatorina tugivektormasinat (SVM). Meie ülesandes tuleb selle asemel võtta otsustuspuu.
Krossvalideerimise korral jäetakse osa andmeid puu treenimisest välja ning kasutatakse neid hoopis täpsuse testimiseks. Seejuures korratakse seda niiviisi, et kõiki sisendandmete ridu oleks lõpuks kasutatud nii treenimiseks kui testimiseks.
Tulemuse parandamine
See on kõige keerulisem ja võib olla ka mahukam osa ülesandest.
Loe läbi otsustuspuu kasutamise nõuanded. Proovi sealt midagi implementeerida ja vaata, kuidas see mõjutab krossvalideerimise tulemust.
Huvi võiks pakkuda:
- dimensionaalsuse vähendamine, s.h. atribuutide valik või kombineerimine
- puu parameetrite, eriti sügavuse muutmine
- treeningandmete balanseerimine klasside järgi
Seda osa võib teha nii pikalt ja põhjalikult, kui huvi on. Mingi üritus tulemuse kvaliteeti parandada peaks siiski olema tehtud.
Artiklis [1] saavutati täpsus üle 94% (mitte otsustuspuudega).
Viited
1. Abdelhamid et al., Phishing Detection based Associative Classification Data Mining. Expert Systems With Applications (ESWA), 41 (2014) 5948-5959