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:
-
SFH
kas veebilehel olevad vormid suunavad uuele domeenile -
popUpWidnow
kas veebilehel on pop-up aknaid -
SSLfinal_State
kas HTTPS on kasutuses ja kas sertifikaat on usaldusväärne -
Request_URL
kas veebileht laadib pilte ja muid komponente teiselt domeenilt -
URL_of_Anchor
kas veebileht sisaldab palju linke teisele domeenile -
web_traffic
kas veebilehe külastatavus on kõrge, keskmine või madal (Alexa ranking) -
URL_Length
ülipikk, pikk või tavaline URL -
age_of_domain
domeeni on vana või värskelt registreeritud -
having_IP_Address
URL 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