Python - Maskinlæring
Hva er maskinlæring
Maskinlæring (ML) er et felt som har sitt utspring fra studier innen mønstergjenkjenning og datalæring innen kunstig inteligens (AI).
I 1959 definerte Arthur Samuel maskinlæring som: "Field of study that gives computers the ability to learn without being explicitly programmed". ML involverer bruk av statistiske metoder for å lage programmer som utvikler seg over tid, eller som kjenner igjen mønstre i store mengder data.
Kort oppsummert er ML en samling av algoritmer og teknikker for å lage systemer / programmer som lærer fra data.
Noen eksempler på daglig bruk av slike systemer er: recommendation systems, spam detection, prospect customer identification systems.
Siden ML er en underkategori innenfor AI så la oss se raskt på hva AI er:
- Observer: indentifiser mønstre v.h.a data.
- Planlegg: finn alle mulige løsninger.
- Optimaliser: finn optimal løsning blant alle mulige.
- Utfør: utfør den optimale løsningen.
- Lær og tilpass: gir utføringen forventet resultat? om ikke tilpass.
Stegene over utføres igjen-og-igjen v.h.a en eller flere agenter.
Forskjellige typer maskinlæring
Når vi snakker om ML er det endel andre begreper som kan være nyttig å plassere:
- Statistikk: innsamling, analysering, tolking, presentasjon og organisering av data.
- Datamining: prosessen for å utforske mønstre i store datasett.
- Dataanalyse: prosessen for å inspisere, rydde, omforme og modellere data med det som formål å finne informasjon,
foreslå konklusjoner og understøtte beslutninger. Også kjent som Business Analytics (BA).
- Datascience: vitenskapen om å trekke ut kunnskap eller innsikt fra ulike typer data.
Statistikk
Den tyske lærde Gottfried Achenwall introduserte ordet statistikk på midten av 1700 tallet (1749). På denne tiden ble ordet brukt om den administrative tilstanden i et land eller fylke. På starten av 1800 tallet ble statistikk knyttet mer og mer til det å samle og klassifisere data. I 1791 ble ordet introdusert i England i boken "Statistical account of Scotland" og hovedformålet med statistikk var at regjeringer skulle kunne samle og klassifisere data om innbyggerene.
Frekvensstatistikk
En av de første siterte arbeider innen deskriptiv statistikk ble gjort av John Graunt på "Bills of mortality" under pesten. Han introduserte konseptet med at relative tall kan være like insiktsfulle som de hele tallene. For eksempel at 70% av dødsfallene i 1625 var pestrelaterte, istedenfor å skrive 35.417 av 51.758. Det å anta basert på dataenes spredning eller frekvens er også kjent som "frekvens statistikk". Statistisk hypotesetesting er basert på interferens-rammeverk hvor vi antar at det vi observerer kommer av en ukjent, men fast påvirkning.
Bayesisk statistikk
I den andre enden har vi det vi kaller bayesisk statistikk som beksriver sanylingheten for en hendelse, basert på betingelser som kan være relatert til hendelsen. Om en gitt sykdom er relatert til alder og livsstil, så vil Bayes teorem kunne gi oss en mer detaljert sansynlighet for at en gitt person har denne sykdomen ved at vi bruker alder og livsstil som parametere når vi skal beregne sansynligheten.
Regresjon
Regresjonsanalyse er en statistisk prosess for å estimere sammenhengen mellom flere faktorer / variabler. Gjerne en avhengig faktor og flere uavhengige faktorer. Regresjon brukes i modellering med tidsserier, for å forutsi noe basert på tidligere data og for å finne sammheng mellom flere variabler. Vi har flere typer regresjon hvor de to mest brukte er lineær og logisk -regresjon.
Et eksempel: Vi har historisk prisutvikling på eiendom i et område over tid. Denne informasjonen kan vi plotte i en kurve og så bruke kurven for å si noe om hvordan prisen blir fremover i tid.
Datamining
Datamining er rett og slett innhenting og lagring av enorme mengder data. "riktige data" på "rett tidspunkt" for å understøtte "riktige beslutninger". Om vi bruker det engelske uttrykket "Knowledge discovery in databases" (KDD) får vi en viss pekepinn hva dette feltet handler om.
Dataanalyse
Vi har fire hovedkategorier dataanylse:
- Descriptive analytics - hva har skjedd (rapporter, alarmer) - tilbakeblikk
- Diagnostic analytics - hvorfor har det skjedd (adhoc analyser) - innsikt
- Predictive analytics - hva kommer til å skje (prognose, prediktive modeller, maskinlæring) - forutse
- Prescriptive analytics - hvordan få det beste utfall til å skje (optimalisering)
Descriptive analysis: Beskriver fortiden og forteller oss "hva har skjedd". Dette er viktig fordi vi kan lære av fortiden og prøve å forstå hvordan dette påvirker fremtiden. Statistiske metoder som count, min, max, sum, average, pecentage og percent change, etc. faller inn i denne kategorien.
Diagnostic analysis: Ser på data for å prøve å finne ut "hvorfor har det skjedd" og er kjennetegnet med funksjoner som drill-down, data discovery, data mining, correlations og causation. Gir ofte et godt innblikk i en liten del av det problemet du prøver å løse. Det er ofte arbeidskrevende fordi man må manuelt gå inn i drill-down eller datamining for å få finne meningsfulle resultater.
Predictive analytics: Er muligheten til å gjøre prognoser eller estimater av ukjente fremtidige hendelser basert på tidligere og historiske mønstre. Vi snakker her om "hva kommer til å skje". Denne typen analyse inkluderer teknikker fra datamining, statistikk, modellering, maskinlæring og kunstig inteligens. Prediktiv analyse lener seg tungt på sansynligheter og kvaliteten på analysene er avhengig av kvaliteten på dataene. Vi bruker prediktiv analyse i maskinlæring, og noen eksempler på bruksområder er værprognoser, e-post spam, svindel deteksjon med mer.
Prescriptive analysis: Prøver å si noe om hvordan "vi skal få det beste til å skje". Preskriptiv analyse er knyttet til alle de tre foregående formene. Her skal vi ikke bare forutse hva som kommer til å skje, men gjerne også hvorfor det kommer til å skje.
Datavitenskap
Enda et av disse utrykkene som er vanskelig å oversette til norsk. I 1960 ble uttrykket datascience brukt av Peter Naur i publikasjonen "Concise survey of computer methods" som handlet om prosessering av data for flere bruksområder. I 2008 ble det prosessert 9.57 zeta-bytes med data, eller ca 12GB per person om dagen ifølge rapporten "How much information 2010".
Det er på bakgrunn av dette at vi har fått uttrykket stordata (big data) som kan ha følgende karakteristikker:
- volume: vi ser en eksponentiel økning i datamengde blant annet som følge av at vi ikke lenger kun har tekstdata.
- velocity: økt datamengde og sosiale medier har endret hvordan vi ser på data. Data kan være utdatert iløpet av få
sekunder og kun data i sanntid er godt nok i noen sammenhenger.
- variety: databaser, lyd, video, sms, tekst, pdf er kun noen av variasjonen vi har i type data.
Maskinlæring brukes som verktøy innen datavitenskap, men som vi har nevnt så stammer det opprinnelig fra kunstig inteligens.
Datavitenskap og datavitenskapsmenn har blitt et buzzword siste årene, men krever følgende egenskaper:
- programmering
- mattematikk og statistikk
- domeneekspertise
Om vi setter dette opp på en tidslinje ser det noenlunde slik ut:
1662 -> 1740 -> 1805 -> 1959/1960 -> 1990 -> 2008
Frequentist -> Bayesian -> Regression -> ML / Datamining -> Dataanalyse -> Datavitenskap
Da har vi sett litt på de forskjellige begrepene som leder opp til ML og plassert de på en tidslinje.
Maskinlæring kategorier
På et overorndet nivå kan vi kategorisere ML i tre grupper basert på forventet resultat, og hvilken type input som kreves for å få resultatet.
Supervised learning
Algoritmen forsynes med store mengder data, gjerne forberedt på forhånd. Målet til algoritmen er å lære seg mønstre i datasettet og bygge seg opp regler for å mappe inndata til klasse eller hendelse.
Regression
Resultatet som skal predikeres er et antall sett i kontekst med inndataene. For eksempel kan man predikere salg, antall personer på et vaktskift, nødvendig antall parkeringsplasser, kredittscore for en kunde med mer.
Classification
Resultatet som skal predikeres er sansynligheten for at inndata er en klasse eller hendelse, og antallet klasser / hendelse er to eller flere. Algoritmen skal lære se mønstre fra historiske data og være istand til å predikere ukjente klaaser / hendelser frem i tid. Et eksempel her er e-post filtrering hvor forventet resultat er klassifisering i "spam" eller "ikke spam".
Bygge supervised ML-modeller består av tre steg:
1 - Trening: Algoritmen får historiske data og vil lære å kjenne igjen mønstre inndata <-> utdata. Resultatet blir representert som en statistisk modell.
2 - Testing / Validering: I denne fasen blir effektiviteten av den opptrente modellen evaluert. Ofte ved å teste den på et datasett som ikke var en del av den initielle treningen.
3 - Prediksjon: Modellen blir brukt på datasett som ikke var endel av treningen eller testingen. Resultatet blir brukt til å ta avgjørelser.
Unsupervised learning
Det kan være situasjoner hvor ønsket resultat klasser / hendelser ikke er kjent i historiske dataene. I disse tilfellene vil målet være å finne mønstre i inndataene som kan grupperes (kobles) til spesifikke klasser / hendelser. Denne type algoritmer krever ikke noe innspill på forhånd eller underveis så derfor kalles det unsupervised learning.
Clustering
Om vi ikke kjenner til klassene på forhånd så er målet å gruppere inndataene i logiske grupper. For eksempel kan det være å gruppere like nyhetsartikler, like kunder basert på kjøpshistorikk osv.
Dimension reduction
Her er målet å forenkle et stort inndata sett ved å mappe det til et sett med lavere dimension. Dette kan gjøres ved å finne nøkkelvariabler som inneholder en signifikant del (f.eks 95%) av informasjonen og så kun bruke de for videre analysering. Dette gjør vi for å spare oss kostnader knyttet til beregning.
Anomaly detection
Også kjent som outlier deteksjon, og er når vi identifiserer observasjoner som ikke passer inn i et forventet mønster sammen med reseten av datasettet. Eksempler kan være systemovervåkning, fraudovervåkning og lignende.
Reinforcement learning
Hovedformålet for disse algoritmene er å koble situasjoner til handlinger som gir best mulig resultat. Når en hendelse skal mappes så er det ikke bare det første resultatet som taes i betraktning, men også det neste og alle som kommer etter. Eksempler på reinforcement teknikker er: Markiv Decision Process, Q-learning, Temporal Difference methods og Monte-Carlo methods.
Rammeverk for å bygge maskinlæringssystemer
For å sikre at utviklingen av maskinlæring og behandling av innsamlede data blir gjort på en effektiv og måte har man kommet frem til tre forskjellige rammeverk for arbeidsflyt for denne type utvikling.
Knowledge Discovery Databases (KDD)
Dette er det eldste (1996) av de tre rammeverkene og de to andre kan ofte sees på som en praktisk implementering av KDD. KDD består av 5 steg:
- Selection
- Preprocessing
- Transformation
- Data mining
- Evaluation
Cross Industrial Standard Process for Data Mining (CRISP - DM)
Dette rammeverket er mer komplett da det har en veldefinert flyt mellom de forskjellige stegene. Det har og fokus på å ivareta domeneforståelsen. CRISP-DM betår av 6 steg:
- Business understanding
- Data understanding
- Data preparation
- Modelling
- Evaulation
- Deployment
Sample, Explore, Modify, Model and Assess (SEMMA)
SEMMA er modellen som brukes i SAS Enterprise Miner, fra SAS, en av de største leverandørene av kommersiell programvare for statistikk og BI. SEMMA består av 5 steg: * Sample * Explore * Modify * Model * Assess
Maskinlæringspakker i python
Vi kan dele maskinlæringspakker inn i to kategorier:
- Dataanalyse: Dette er de pakkene som gir oss de nødvendige matematiske verktøyene og funksjonene for å pre-prosessere og klargjøre data.
- Maskinlæring: Dette er de pakkene som gir oss de nødvendige maskinlæringsalgoritmene og funksjonene som vi kan bruke på datasettene våre.
Dataanalysepakker i python
Vi har fire pakker som brukes innenfor dataanalyse i Python:
- NumPy: arrays and matrices, mathematical functions.
- SciPy: optimization, linear algebra, integration, interpolation, signal and image processing, FFT, special functions.
- Matplotlib: 2D plotting library.
- Pandas: datasturctures and operations for manipulating numerical tables and time series.
Pandas, NumPy og Matplotlib brukes i nesten alle former for dataanalyse. SciPy på sin side supplerer NumPy og inneholder flere spesialiserte science og engineering moduler.
Maskinlæringsbiblioteker
Det finnes et hav av opensource ML biblioteker for Python:
- SciKit Learn: "is a flexible, easy to use machine library that focuses on data modeling. It boasts easy integration with different machine learning libraries like Pandas and NumPy. Scikit-learn is also ideal for data analysis and data mining, making it the perfect tool for Machine Learning beginners."
- Tensorflow: "is an open-source library created by Google and considered one of the best Python machine learning libraries available today, making model building easy for newbies and experts alike."
- Keras: "is a machine learning library with a big following. It’s a high-level neural networks application programming interface (API) that can run on top of TensorFlow, CNTK, or Theano. Keras can run seamlessly on either CPU or GPU. Keras is the perfect tool for beginners to build and design neural networks. Keras also allows easy and fast prototyping."
- NLTK: "stands for Natural Learning Tool Kit and emphasizes natural language processing. It is considered one of the most widespread human language data libraries to work with. NLTK provides engineers with simple interfaces and a vast selection of lexical resources like FrameNet, WordNet, and Word2Vec."
ref:https://www.simplilearn.com/python-machine-learning-libraries-article
Oppsummering
Dette var en rask oversikt over historikken og de forskjellige delene som til sammen utgjør det vi kaller maskinlæring.