Typer af NoSQL

Column Oriented Database

Fordele ved Column Oriented Database

  • Kompression. Column Oriented Database er meget effektiv til at kompresse data. 
  • Sammenlæggende queries. Grundet deres struktur er Column Oriented Database meget effektiv til at arbejde med sammenlæggende queries (som f.eks. SUM, COUNT, AVG, etc).
  • Scalability. Column Oriented Database er meget Scaleable . De passer perfekt til at udfører massively parallel processing (MPP), Hvilket involverer at have data spredt ud over en masse maskiner, often tusindvis af maskiner
  • Hurtigt til at loade og query. Column Oriented Database kan loade ekstremt hurtigt, en database på mere end 1 million rows kan ofte blive læst på bare et par sekunder. Hvilket gør den ekstremt effektiv hvis der arbejdes med store mængder af data.

Use cases

  • Content management systems
  • Blogging platforms
  • Systems that maintain counters
  • Services that have expiring usage
  • Systems that require heavy write requests (like log aggregators)

Opbygningen af en Column Oriented Database minder meget om ens sædvanlige SQL database. Tabellerne er opbygget på samme måde, med man har en key/id, og derefter følger tabellens attributter. En af fordelene ved Column Oriented Database er her at man i modsætningen til Row Oriented Database, ikke er bundet af de samme regler, Hvor i Row Oriented Database er hver row i ens tabel bundet af de columns der er indsat i tabellen, men i Column Oriented Database kan man indsætte lige de attributter der er relevante for den givne row, ligegyldigt om de er blevet brugt tidligere eller ej.

Nedenunder kan du se et eksempel på forskellen mellem lagring af data i de to former for database

Fordelen ved denne måde at gemme data på, er når man skal søge i den, er det super hurtigt og effektivt

Her er et billed over hvordan der søges i en Row Oriented Database

insert photo

Her er et billed over hvordan der søges i en Column Oriented Database

insert Photo

Dette gør den netop ekstremt effektiv i databaser med store mængder af data, til og med kan den også være god at bruge hvis man arbejder med numeriske værdier hvor man har brug for at finde overblik over ens data, som min værdi, maks værdi og median, da den bare kan nøjes med at læse dataen fra den enkelte kolonne 

Cassandra and Apache Hadoop Hbase (programmer til at lave en Column Oriented Database)

GRAPH NOSQL

  • MONGODB er det documents baseret database
  • Dyrt at anvende relationel database på grund af joints mellem flere datbaser gøre det langsomt og dyrt
  • NOSQL query mere og mere data. Man fjerner ACID. 
  • GRAPH database er relational og mere logisk facon, i en måde der repræsentere den rigtige verden. 

Properties

  • Intiutivbness -> way to create and maintain your data in a logical facon -> less translation
  • speed -> speed of developtment because more intiuativ, and execution result to application ebay used it
  • agility -> how easily and quicxkly can adapt to change in buisness -> a naturally adaptive model
  • Cypher

Use cases

  • Real time recommendations -> recommendation to customers in shops
  • Master data management -> to companys with bigger integrations and bigger systems
  • Fraud detection 
  • Graph vbased search -> 
  • Network and it operations -> sammensætning af f.eks routers osv. 
  • Identy and access management -> en skole eller virksomhed

roperty graph model

NEO4J Crash Course

  • Graph database er en online database management system med CRUD operationer. 
  • Hvad er en graph? Den er baseret på to elementer nodes og relationsships
  • Hver node reepræsentere en entity (person, sted, ting)

Som vi kan se på billedet så har vi 3 noder. De 3 noder har såkaldte “labels” Person og Location. Vi kan se med pilene også kaldt “relationships” og dermed også properties som beskrive relationships eller noderne

Ligheder mellem en relationel database og en NoSQL Graph database:

.

Forskel mellem en Relation og en NoSQL Graph database:

  • Neo4j er en database brug til at sikkert gemme infiormation og finde det senere
  • NEO4JS data model er Graph -> af typen Property Graph
  • Cypher er Neo4js graph query language (sql for graphs)
  • Cyper er et decklarativt query langauge: det beskriver whvad du er intesseret i og ikke hvordan det bliver skaffet
  • CVypher er lavet til at være læseliugt og ekspressivt

Man kan arbejde med Neo4j på 3 forskellige måder:

  • Neo4j dekstop -> inkludere en neo4j database server som har en graph engine og kernel så cypher statements kan blive eksekveret til at få adgang til databse i dit system. Det inkludere en applikation kaldes neo4j browser. Neo4j browser tillader at du får adgang til neo4j databse som bruger cypher. Du kan også kalde “built in” procedures som kommuikere med database serveren. 
  • Neo4j aura -> giver dig mulighed for at oprette en instance af en neo4j datase i cloud. 
  • Neo4j sandbox -> er en en midlertidig løsning anvendes kun til træning osv. Forsvinder efter 7 dage alt bliver slettet. Bliver brugt til tutorials osv. 

Cypher

  • Cypher er en query language man bruger til at hente data fra en Neo4j database, også til at oprette og updatere data
  • Cypher er et deklarativt query sprog som tillader for eksspresiv og effektiv quering og updatering af graph data. 
  • Bruger ASCII og Engelsk. 

Key value database

En key value database er en type af en non relationel database som bruger en simple key og value til at gemme data. En key value datase gemmer data som en collection af key-value pairs hvor en key fungere som en unik identifier. Key og values kan være mange ting, som f.eks simple objekter til komplekse objekter. En key value database er højt skalerebart. 

eksempler på key value database i virkeligheden kan f.eks være en telefonbog hvor navn er en key og værdien er et telefonnummer.

Nøglen / Key

Nøglen i en key value pair SKAL være unik. Det er denne unikke identifier som giver dig adagang til værdien associeret med nøglen.

I teorien kan nøglen være hvad som helst. Men den kan være afhængig af DBMS (Database Management System) som kan have nogle restriktationer på hvad der kan være en nøgle. 

For performance grunde skal nøglen ikke være så stor (i mb) da dette kan give nogle performance issues. 

The value / Værdien

Værdien i en key-value store kan være alt fra text, til et tal, til markup kode som html, eller php eller et billede osv.

Værdien kan også være en liste af informationer, eller endnu en key value indkapslet i et objekt. 

Nogle DBMS tillader dig at specificere en data type for værdien. Et eksempel kan være at man specificere at værdien skal være en integer. 

Nogle af de ting en Key-value database kan blive brugt til er f.eks.:

  • General Web/Computers
    • User profiles (f.eks som facebook en brugerprofil)
    • Article/blog comments 
    • Emails
  • Ecommerce
    • Shopping cart contents
    • Product categories
    • Product details
    • Product reviews
  • Networking Data maintenance
    • Telecom directories
    • Internet Protocol (IP) forwarding tables
    • Data deduplication

Key value databases kan også gemme hele hjemmesider, ved at bruge URL som en key og selve siden som en value

Nogle fordele:

  • Ret hurtigt
  • Meget skalerbart
  • simple model – let forståeligt

Nogle ulemper:

  • Mange datastrukturer (objekter) er svært at modelere som key value pairs
  • Svært at gennemgå hele databasen altså fast read and write but not optimized for look up

Document Database

Use cases

  • E-commerce platforms
  • Content management systems
  • Analytics platforms
  • Blogging platforms

Document Database minder meget om Key-Value Database, i det der er en Key og en Value, data er gemt som value. Den associeret key er en unik identifier for den value. Forskellen ligger så i at i en document database består valueen af struktureret eller semi struktureret data. Den struktureret/semi struktureret value kaldes for et document og kan være i henholdsvis XML, Json eller BSON format.

Document Database enabler Flexible indexing, powerful ad hoc queries og analyse over kollektionen af dokumenter

Hvad er en dokument database?

  • Er bygget omkring JSON-lignende dokumenter, således at databasen er både naturlig og fleksibel for udvikler at arbejde med. Nosql Document database lover højere udviklings produktivitet og hurtig udvikling som programmer / applikationen har brug for. 
  • Man arbejder med intuitive data modeller som er hurtigere og nemmere for udvikler. Hvordan det er sat op, altså det er nemt for os at læse og få overblik. 
  • Fleksible schema: Dynamisk adaption til ændrelse i ens database, da nosql dokument database er dynamisk og selv beskrivende så du har ikke brug for at pre definere det i databasen. Felterne kan varier fra document til document og du kan modificere strukturen til hver en tid, og undelade disprutive schema migrationer. Og man kan i sin dokument database lave nogle JSON schema så man kan frivilligt lave restriktioner omkring dokumenternes struktur. 
  • Universlet! JSON dokumenter er ovarlt! Letvægt, sprog-uafhængig og menneskelig læseligt. JSON er blevet en etableret standard for data behandling og opbevaring. Dokumenter er et supersæt af alle andre data modeller, så man kan strukturere data enhver måde som ens applikation har brug for.
    • Rig objekter, key value pairs, tabeller, geospatial og time series data
  • Meget skalerbart! Da dokumenter i en dokumentdatabase er uafhængig enheder / units gøre det nememre at distribuere det gennem diverse servers samtidig med at vedligholde data lokaliteten. 

NoSQL Graph Database Tutorial

Tutorial til NoSQL Graph Database

  1. Gå ind på https://neo4j.com/download/ og download neo4j desktop client
  2. Derefter når du har client åben skal du oprette et nyt “Project” Ved at klikke på knappen “New”
  1. Når du har oprettet et nyt project skal du oprette en Graph Database for at gå igang. Dette gøre du ved at trykker på “Add Graph). Du har 2 muligheder enten at forbinde dig til en fjern Graph eller oprette en Lokal Graph på din PC. Vi vil gerne oprette en lokal graph. 

Herefter skal du angive et navn og en password til din database. 

Når dette er gjort kan du nu starte din database så den køre. 

  1. Du kan nu klikke på Neo4j Browser. Neo4j Browser er et værktøj som du kan bruge. Det giver dig nemlig adgang til en Neo4j Database og bliver brugt ved at eksekvere Cypher statements til at oprette, updatere, slette og vise data. (HUSK DU SKAL STARTE DIN DATABASE FØR DU KAN BRUGE NEO4JS BROWSER! se step 3)
  1. Du har intet data i din Graph database! Det skal vi have ændret på! I denne tutorial vil vi gerne have en database med film og tilhørende skuespiller! 

Gå ind på https://github.com/musl0074/MoviesTutorialNeo4j/blob/master/MovieData

og kopir hele kodestykket og smid det inde på din Neo4j Browser og køre denne Cypher Statement

Denne Cypher statement opretter alle Noder for vores Movie eksempel. Analysere koden og i kan se et mønster. Når i trykker “køre” så oprettes der vores Movie Graph Database med alle Noder og relationships

  1. Nu skal vi foretage nogle Cypher Statements – Den første Cypher statement vi gerne vil udføre er at vi gerne vil finde skuespilleren “Keanu Reeves”

Sådan gøre vi:

MATCH (keanu {name: “Keanu Reeves”}) RETURN keanu

Ved at skrive denne Cypher Statement får vi tilbage en node med vores skuespiller Keanu Reeves

Men hey! Vi vil også gerne finde Filmen med titlen “A Few Good Men”

MATCH (afew {title: “A Few Good Men”}) RETURN afew

Nu har vi også fundet en film! Fedt!

Hvad med hvis vi gerne vil slette en node, f.eks vi vil gerne slette Tom Hanks noden fra vores Graph Database? Det simpelt!:

MATCH(n:Person{name:”Tom Hanks”}) DETACH DELETE n

Nu vil vi gerne se hele vores Graph Database, hvad gøre vi? Simpelt!:

MATCH (n) RETURN n

Du har nu lært simpelt hvordan man opsætter udviklingsmiljøet til at oprette GRAPH Databaser samt hvordan man udføre simple Cypher Statements. Godt arbejde!

Specifikke læringsmål og læringsplan – 3.Iteration

Specifikke læringsmål og læringsplan – 3.Iteration

MålTeknik/VærktøjKriterierEvaluering
Jeg vil gerne arbejde med et projekt som omhandler princippet i Machine Learning – Supervised Learning Jeg vil finde et projekt som er relevant for princippet:

– Brug af erfagruppen til at diskutere hvilket projekt er bedst at arbejde med.

– Søg efter projekt i DataCamp

Kan jeg redegøre for projektet for min ERFA Gruppe og diskutere relevante emner deromkring. Jeg var kommet bagud og derfor har jeg ikke fået fremlagt mit projekt til erfa gruppen, det skal jeg gøre nu på torsdag 20-04-2020.

Projektet i sin helhed var meget interessant og meget lærigt da jeg skulle anvende den teori jeg havde lært fra kurserne til noget praksis. Jeg fik også hands on arbejdet med et udviklingsværktøj til python kaldes PyCharm og lært at anvende det til det forhold jeg nu havde.
Jeg vil gerne finde ude af at implementere en Supervised Learning Algoritme i mit projekt:

– Brug mine noter i tidligere Machine Learnings Kurser som omhandler supervised learning

– Anvendelse af Linkedin/Google/Youtube

– Netværk / venner / bekendte
Opgaveformulering fra Datacamp
Jeg fik implementeret en supervised learnings algoritme til mit sideprojekt i DataCamp med anvendelsen af PyCharm. Det var lærigt at kunne identificere et problem og så kunne løse det med supervised learnings princippet.
Jeg vil gerne få en foreståelse for GRAPH oriented NoSQL Database, så jeg kan opsætte min egen database. Jeg laver research på hvordan man GRAPH oriented NoSQL database er sammensat:

– Jeg anvender google for at finde artikler omkring emnet

– Bruger netværk herunder ERFA grupper/Bekendte

– Bruger linkedin/Youtube for at finde video omkring emnet

– Anvender litteratur herunder Bøger omkring emnet


Kan jeg fremvise min database for min erfa gruppe?

Kan jeg redegøre for GRAPH oriented NoSQL database?

Jeg fremlagde mit sideprojekt i Graph NOSQL til min ERFA gruppe samt lavet en tutorial som ligger inde på min portefølje. Det var lærigt men ikke særlig relevant for vores produkt og derfor har jeg valgt ikke at grave videre ned i det. Det er med vejledning fra både Allan og Lene
Jeg finder et udviklingsværktøj jeg kan opsætte min database i:

– Jeg anvender google for at finde artikler omkring emnet

– Bruger netværk herunder ERFA grupper/Bekendte

– Bruger linkedin/Youtube for at finde video omkring emnet
På grund af at vi var kommet bagud er vi først gået igang med at finde et udviklingsværktøj til vores produkt. Dette gøre vi sammen i gruppen og har kigget på MongoDB til en NOSQL Document baseret database.


Generelle læringsmål

Viden – Den studerende har viden om
  • Det/de valgte emners teori og praksis
  • Det/de valgte emners relevans i forhold til IT-fagets teori og praksis
Færdigheder – Den studerende kan
  • Udvælge, beskrive og foretage litteratursøgning af en selvvalgt it-faglig pro-blemstilling
  • Diskutere samfundsmæssige aspekter knyttet til det/de valgte emner
  • Vurdere problemstillinger og opstille løsningsmuligheder i forhold til det/de valgte emner
  • Formidle centrale resultater
Kompetencer – Den studerende kan
  • Selvstændigt sætte sig ind i nye emner inden for fagområdets teori og/eller praksis
  • Perspektivere og relatere det/de valgte emner i forhold til uddannelsens øv-rige emneområder

Specifikke læringsmål og læringsplan – 2.Iteration

Specifikke læringsmål og læringsplan – 2.Iteration

MålTeknik/VærktøjKriterierEvaluering
Jeg vil gerne finde ude af om jeg har fundet det rette princip til projektet Jeg redegøre for den viden jeg har opnået i første iteration for at give overblik over mulighederne:

– Interviewe Steffen Mogensen fra tv2 for at diskutere de forskellige principper der findes samt hvad der passer bedst til dette projekt

Er princippet velegnet til dette specifikke projekt Efter samtaler med PO – har vi fundet ude af at PO desværre ikke har nok viden til at kunnne afgrænse det – han siger bare man skal anvende en algoritme, men efter samtaler med erfa gruppen er det for tidligt at beslutte sig til et definitivt princip.
Jeg vil gerne finde ude af at arbejde med relevante datasætJeg researcher for at finde det rigtige datasæt til formålet:

-Interviewe Steffen Mogensen fra tv2 for at undersøge hvilken datasæt der skal anvendes, samt om jeg skal opsamle dataene selv, eller om han havde noget liggende

– Undersøge diverse kilder herunder Kaggle.com som er en database med datasæt

Jeg laver research på hvordan man behandler et datasæt:

– Jeg anvender google for at finde artikler omkring emnet

– Bruger netværk herunder ERFA grupper/Bekendte

– Bruger linkedin/Youtube for at finde video omkring emnet

– Anvender litteratur herunder Bøger omkring emnet


Er Data relevant for dette projekt?

Er der Datasættet stort nok?
Efter samtaler med PO – fandt vi ude af at der ikke var noget datasæt til rådighed og at det var noget vi selv skulle generere, hvilket gøre det svært at bedømme om vi arbejder med relevant datasæt da vi ikke har noget datasæt. Det er for tidligt i processen hvorvidt det opnået. Med brug af erfa og produktvejlednings møder, fandt vi ude af at vi skulle udplukke nogle forskellige datapunkter og prøve at sammensætte et relevant datasæt.
Jeg vil gerne tage et kursus i Supervised og Unsupervised Learning. Jeg researcher kurser på hvordan man opbygger en model i Supervised og Unsupervised Learning:

– Søger kurser Linkedin og i DataCamp.

– Bruge netværk herunder ERFA grupper/bekendte
Kan jeg opbygge en model i Machine Learning på basis af de kurser der er opnået?Opsætning er algoritmen er blevet opnået – dog var der komplikationer på hvordan man optimere ens algoritme. Derfor er det noget jeg vil se på i fremtidige iterationer.


Generelle læringsmål

Viden – Den studerende har viden om
  • Det/de valgte emners teori og praksis
  • Det/de valgte emners relevans i forhold til IT-fagets teori og praksis
Færdigheder – Den studerende kan
  • Udvælge, beskrive og foretage litteratursøgning af en selvvalgt it-faglig pro-blemstilling
  • Diskutere samfundsmæssige aspekter knyttet til det/de valgte emner
  • Vurdere problemstillinger og opstille løsningsmuligheder i forhold til det/de valgte emner
  • Formidle centrale resultater
Kompetencer – Den studerende kan
  • Selvstændigt sætte sig ind i nye emner inden for fagområdets teori og/eller praksis
  • Perspektivere og relatere det/de valgte emner i forhold til uddannelsens øv-rige emneområder

Machine Learning litteraturliste

Dette er sektionen for det litteratur jeg har anvendt til at få en grundlæggende forståelse for Machine Learning og den teori bag:

Machine Learning for Absolute Beginners: A Plain English Introduction (First Edition) af Oliver Theobald (February 18, 2017)

Introduction to Machine Learning with Python – A guide for data scientists af Sarah Guido

https://www.linkedin.com/learning/data-science-foundations-fundamentals-5/machine-learning?u=57075649

https://becominghuman.ai/machine-learning-for-dummies-explained-in-2-mins-e83fbc55ac6d

https://www.techopedia.com/definition/33696/unlabeled-data

http://www.annytab.com/neural-network-classification-in-python/

machinelearningmastery.com/tutorial-first-neural-network-python-keras/

scikit-learn.org/stable/modules/neural_networks_supervised.html

http://www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm/

https://www.linkedin.com/learning/azure-machine-learning-development-1-basic-concepts/welcome?u=57075649

https://learn.datacamp.com/courses/supervised-learning-with-scikit-learn

https://learn.datacamp.com/courses/unsupervised-learning-in-python

https://www.dezyre.com/article/top-10-machine-learning-algorithms/202

Hvor meget data er der behov for?

Setting up your data

  • Efter man har cleanet ens data sæt, skal man splitte dataen til two segmenter -> Testing og Training
  • Man skal ikke teste ens model med samme data som man bruger til training.
  • Ratio 70/30 eller 80/20. Training data 80% og test data 20%
  • Splitte dataen i rækker og ikke kolonner.
  • Randomized ens Data således at man undgår bias i ens model. 
  • Scikit-learn tilbyder en build in fuction til at shuffle og randomize ens data men kun en linje kode
  • Supervised learning -> feed modellen med training data og forventet output(y)
  • Måle hvor god modellen performer -> Mean absolute error, som eksaminer hver forudsigelse i modellen og tilbyder en gennemsnitlig error score for hver forudsigelse.

Cross Validation

  • Hvis ens eksisterende datasæt er for lille til at konstruere en korrekt model eller hvis træning/test partion af data ikke er relevant -> dårlig performance -> Brug cross validation
  • Cross validation metoden -> splitter data i flere kombinationer og tester hver kombination
  • Exhaustive cross validation -> finde og teste alle mulige kombinationer til at dele den orginale sample til trænings sæt og test sæt. 
  • Non exhaustive cross validation -> K-fold validation. 
    • splitte data til k assigned buckets og reservere en af disse buckets til test af trænings modelen hver runde.
    • data bliver først tilfældigt tildelt et k number af equal sized buckets. En bucket er så reserveret som test bucked og bliver brugt til at måle og evaluere performance af de resterende k-1 buckets.
    • Cross validation processen bliver gentaget k number af gange (folds). 
    • Hver fold -> bucket reserveret til test trænings model -> gentager indtil alle buckets kan både blive brugt til træning og test bucket. 
    • Resultatet bliver aggregeret og kombineret til at formulere en enkelt model
    • Når man bruger alt data til både test og trænings formål, vil k-fold validation teknikken minimere potentiel fejl (som overfitting) fundet ved brug af fixed split af træning og test data

How much data do i need?

  • Bedst når ens trænings datasæt inkludere en fuld række af feature kombinationer
  • F.eks Datamatiker datasæt ->
    • University Degree(X)
    • 5+ years professional experience(X)
    • Children(X)
    • Salary(Y)
  • Jo flere kombinationer jo bedre så f.eks hvis man skal finde løn til en Datamatiker, så skal man både have data omkring hvis de har børn og ikke har børn osv. Jo flere kombinationer desto bedre bliver modellen til at identificere hvilke attributter påvirker Y (salary). 
  • Model -> 10 gange flere data points som der er features

Kilder:

Machine Learning For Absolute Beginners

Optimering af Data!

Data Scrubbing

  • Datasæt skal rengøres(cleaning) og human manipulated før det kan tages i brug
  • Scrubbing er den tekniske process af at refinere ens datsæt og gøre det mere arbejdsvenligt.
  • Dette kan involvere at man modificere og somme tider fjerne ufærdigt og inkorrekt formateres irrelevant og duplikeret data. Samt konvertere text basered data til numeriseret værdier. 

Teknikker for Scrubbing

Feature Selection

  • Identificer variabler mest relevant til ens hypotese -> selektiv om de variabler man vælger til at designe ens model
  • f.eks i stedet for oprette et 4-dimensional punktdiagram med 4 features(kolonner) i modellen, så kan man i stedet vælge 2 høj relevante features og bygge en to dimensional punktdiagram som er nemmere at forstå. Faktisk kan data som ikke har stor forhold til hinanden gøre at modellen bliver er unøjagtig

Eksempel 1:

fjerne name in spanish -> ikke relevant og contry code -> redundant til countries

Eksempel 2:

Inddele dem i sub kategorier – ulempe -> forhold mellem specifikke produkter -> generelle produkter.

Row Compression

  • reducering af antallet af rækker og dermed compress total antal af data points
  • Man kan merge to tabeller sammen men så vil feature(kolonne) værdier for begge rækker blive aggregeret og registreret i en single række. Man kan gøre det hvis begge rækker indeholder samme feature værdier. 
  • Numerisk værdier er nemme at aggregere (samle sammen). 

Eksempel:

Tiger og lion bliver til carnivore

One-Hot Encoding

  • Eter at have valgt variabler og rækker du vil gå videre med – skal man kigge efter text baseret features som kan blive konverteret til tal. 
  • One Hot encoding transformere features til binært form, repræsenteret i 0 eller 1. 
  • 0 -> False fortæller at en feature ikke tilhøre en specifik kategori hvor 1 -> true feature høre til en kategori.

Eksempel:

Binning

  • Binning -> Konverter numerisk værdier til en kategori
  • House evaluation example -> den specifikke størrelse på en tennisbane er irrelevant, men at huset har en tennisbane er relevant
  • erstatte numerisk måling af en tennisbane med true/false feature eller kategorisk værdi som “small” eller “medium”.

Missing Data

  • Finder det mest anvendte variable værdi og bruger det til at indsætte i den manglende plads -> Mode 
  • Tager alle tal og divider med antallet af tallene og smider den ind i manglende værdi -> Median

Kilder:

Machine Learning For Absolute Beginners

Machine Learning – Værktøjskassen!

The ML Toolbox

Afdeling 1: Data

  • Data. Data udgør det input variabler der bliver brugt til at forme en forudsigelse (prediction).
  • Struktureret og ikke-struktureret data
  • Struktureret Data -> defineret og labeled i en table
  • Tabular datasæt indeholder data organiseret i rækker og kolonner. I hvert kolonne er en feature. En feature også kendt som en variable, en dimension eller en attribute men de er alle ens
  • Hvert række indeholder en single observation af en given feature/variable. Rows -> case eller value
  • Hvert kolonne er kendt som en “Vector”. Vector gemmer din x og y værdier og mange vectors(columns) er kendt som en matrices. 
  • I Supervised learning, y vil allerede eksistere i dit datasæt og vil blive brugt til at identificere mønstre i relation til uafhængig variabler x. Y værdien er i den sidste kolonne
  • Det næste i den første afdeling af værktøjskassen er en række af punktdiagrammer. 2-D diagram x værdier plotted i x aksen og y værdier i y aksen

Afdeling 2: Infrastruktur

  1. Næste afdeling indeholder infrastruktur. Hvilket indeholder platforms og værktøjer til at processe data
  2. Jupyter og Notebook (web) Python (programmeringssprog). 
  3. Serie af biblioteker -> NumPy, Pandas og Scikit-learn som er kompatible med Python. 
  4. Til datavisualisering -> Seaborn, Matplotlib eller et standalone software program -> Tableu (charts, graphs, maps osv)
  5. C++ og C er godt for avanceret machine learning fordi de kan køre direkte på GPU’en hvorimod python har brug for at blive konveteret først før den kan køres på GPU. 

Så for at redegøre hvad man kan bruge disse biblioteker i Python:

  1. Loade og arbejde med datasæt via NumPy
  2. Clean up og udføre beregninger på data, og ekstrahere data fra CSV filer med Pandas
  3. Implementere algoritmer med Scikit-learn

Afdeling 4: Algoritmer

  • Importere data direkte fra en CSV fil. Man kan finde mange Datasæt fra Kaggle.com
  • Gemmer på algoritmer. Begynder starter med at bruge supervised learning:
    • Supervised -> Linær regression, logistic regression, decision trees og k-nearest
    • Unsupervised -> k-means clustering og descending dimension algorithms
Visualisering
  • Effektivt at kommunikere resultaterne af relevant desicion-makers. 
  • Anvendelse af Tableu eller et Python bilbiotek som seaborn. 

Advanced Toolbox

  • Forskellen mellem en begynder og en avanceret learner er størrelsen af det data de skal håndtere og operer. Hvor begynder arbejder med mindre datasæt som er nem at håndtere

Afdeling 1: Big Data

  • Big Data -> værdi, variation, volume, hastighed
  • umuligt for et menneske at processere uden assistanse af en avanceret maskine. Petabytes kvalificere størrelsen af big data. 
  • Scrubbing er en måde at arbejde med big data -> refinere ens datasæt før man bygger en model

Afdeling 2: Infrastruktur

  • Avanceret machine learners anvender samme værktøjer, sprog og biblioteker som begynderniveau
  • I Stedet for at rely på ens cpu af en personal computer, avanceret studerende typisk vender sig til distribuerede computing og cloud providers som amazon web services (AWS) og køre deres data processing på en GPU.
  • At køre beregninger på ens GPU er meget hurtigere og effektivt! 
  • Man kan anvende C eller C++ til at køre beregniner på ens GPU
  • Hvis man koder i Python kan man dog stadig konverter det til C ved anvendelsen af TensorFlow fra google
  • AWS, Microsoft Azure, Alibaba cloud, google cloud pålatform osv tilbyder pay as you go GPU ressourcer.

Afdeling 3: Avanceret Algoritmer

  • Markov models, support vector machines og Q-learning
  • Neural Networks -> som kommer med en selektion af machine learnings biblioteker
  • Scikit-learn tilbyder en range af populær shallow algoritmer, så er tensorflow det machine learning bibliotek af valg for deep learning/neural networks da det understøtter mange avanceret teknikker herunder automatic calculus for back-propagation/gradient descent.
  • Da TensorFlow har masser ressourcer, dokumentation og arbejde tilængeligt er det det bedste framework at arbejde ude fra.
  • Andre alternativ biblioteker -> Torch, Caffe og fast-growing Keras. Kera er open source deep learning bibliotek som køre ovenpå TensorFlow, Theano og andre frameworks og tillder bruger at performe hurtige eksperimenter med færre linjer kode -> Ligesom WordPress
  • Nogle bruger Keras til at validere deres model før man skifter til TensorFlow til at bygge mere tilrettet model (customized model)

Kilder:

Machine Learning For Absolute Beginners

Machine Learning Kategorier / Principper

Machine Learning Kategorier

Supervised Learning

  • Supervised learning koncentrer sig på at lære mønstre via forbinde forhold mellem variabler og kendte outcomes og arbejde med labeled datasets
  • Feed maskine sample data x og value output af data Y når de er kendt er det labeled
  • Algoritmen decipher mønstre som eksistere i dataen og laver en model der kan reproducere den samme underlæggende regl med ny data. Eksempel: for at forudse market rate for at køber en brugt bil, en supervised algoritme kan formluere forudsigelser ved at analyser forholdet mellem bil attributter(fremstillings dato, bil mærke, kilomettal, etc) og salgs prisen på andre biler solgt baseret på historisk data. Fordi supervised algoritme kender til slut prisen af andre biler som er solgt, kan den arbejde baglæns til at determinere forholdet mellem karateristik af bilen og dens værdi. 
  • Labeled Data -> hvis sample data har adskillige features (år, farve, kilometertal) og korrekt værdi output (2000kr) fordi man kender output og feature værdier er det dataset labeled
  • Derefter oprettes der en model: en algoritmisk ligning for at producere et outcome med ny data baseret på reglerne som kommer fra training data. 
  • Eksempler på supervised learning algoritmer inkludere regression analysis, desicion trees, k-nærest neighbors, neural networks, og support vector machines. 

Unsupervised Learning

  • Finder mønstre kun ved brug af input data. Dette er brugebart hvis man ikke helt ved hvad man leder efter. Bliver brugt i exploratory analysis af rå data. 
  • Mest anvendt Unsupervised learning teknikker er af form af Cluster Analysis
  • Cluster Analysis -> Man grouper data items som har samme mængder af lighed baseret på karakteristisk værdier
  • Clustering Algorithm -> f.eks højde og vægt for at determinere om det en kvinde eller mand. Så ser man på cluster af data. 
  • AutoEncoder -> Artificial neural network. Autoencoder by design reducere data dimensioner ved at lærer hvordan man ignorere støj i data. 
  • Unlabeled data indeholder kun dataen og ikke andet det vil sige f.eks hvis man har en frugt skål og den skal identificere 3 frugter, hvis dataen i det initial trainsing set er labeled vil machine learning programmet arbejde fra det perspektiv. Hvorimod i unlabeled vil programmet nødt til at arbejde ved at evaluere hver enkelte billede og kigge på karakteristik som farve, form og andre karakteristik.

Reinforcement Learning

  • Er den tredje og mest avanceret algoritmisk kategori indenfor MachineLearning
  • Bliver anvendt til spil bl.a. hvor AI’en lærer af erfaring og til sidst kan slå en spiller
  • RL forbedre dens model ved at få feedback fra forrige iterationer og continuous learning
  • performance criterier med rewards (selvkørende biler der ikke køre galt -> reward)
  • f.eks pacman spil -> set of engironement of states S(obstacles, challenges eller pathways i spillet). Sæt af mulige actions til at reagere på de forskellige states er A(up, ned, venstre, højre). Q er starts værdien og har initial 0. Når spillet er igang sker dette:
    • Q falder da negative ting sker efter en given state/action
    • Q stiger da en positiv ting sker efter en given state/action
    • I Q Learning vil maskinen lære ved at matche action for en given state som genere eller vedligholder den højeste level af Q.

Kilder:

https://becominghuman.ai/machine-learning-for-dummies-explained-in-2-mins-e83fbc55ac6d

machine Learning For Absolute Beginners

https://www.techopedia.com/definition/33696/unlabeled-data

Introduktion til Machine Learning

Introduktion

Machine Learning handler om at have metoder og algoritmer som lærer fra data. Som vi kan se i praktisk, f.eks. vaskemaskiner som lærer hvordan du vil have dit tøj vasket, eller smart tandbørster som fortæller dig hvilke tænder, kræver ekstra børstning osv. Et af hovedformålene er at Machine Learning hjælper med at forbedre sig selv over tid. Arthur Samuel var den første som introducerede Machine Learning til et spil af Skak hvor programmet blev programmeret til at lærer at spille bedre end personen som lavede programmet. Dvs at det giver computeren muligheden til at lærer uden at man explicit skal programmere den. 

Samuel observeret at at Maskiner ikke kræver direkte input kommandoer til at udføre sæt af opgaver men derimod bruger Input data.

Eksempel: Data bliver tilføjet til en maskine, en algoritme bliver valgt, hyper parameters (settings) bliver konfigureret og justeret, og maskinen bliver instrueret til at udføre dens analyse. Maskinen fortsætter med at decipher mønstre fundet i det data via en process af trial and error. Maskinens data model, som bliver formet af analysering af data mønstre, kan blive brugt til at forudse fremtidige værdier. 

F.eks. hvis man vil undersøge en Datamatikers youtube vieweing habits så vil en maskine identificere en stærk forhold mellem datamatiker og katte videoer. I dette scenarie vil maskinen analyser hvad datamatiker nyder at se på youtube baseret på user engagement: measured in likes, subscribes, and repeat viewing. Så man giver input data og konfigurere en nominerede algoritme, mens dens finale forudsigelse var determineret af maskines self læring og data modeling. Så machine learning models bliver trænet i at forme valg baseret på gamle erfaring. 

Hvordan mennesker lærer:

  • At memorisere/huske ting er meget svært
  • At identificere mønstre/patterns er nemt
  • Reagere godt til nye situationer

Hvordan Machine Learning lærer:

  • At huske ting er meget nemt – kan huske alle variabler osv
  • Identificere mønstre er svært
  • Nye situationer er svært

Træning og Test Data

  • I Machine learning er data split i Training data og Test Data
  • Den første split af data som er intial reserve af data man bruger til at udvikle ens model giver træning data.
  • F.eks false positives fra paypal auto response (betaling confirmed) ryger i spam mail. 
  • Derfor nye regler og modifikationer skal blive tilføjet så det ikke ryger til spam
  • Efter man successfully udvikler en model baseret på trænings data og er tilfred med dens nøjagtighed, kan du teste modellen på det resterende data, også kendt for test data. 
  • Derefter når begge data er tilfreds kan machine learning modellen filtere emails og genere desicions på hvordan den skal katogirsere de indkommene mails
  • Machine learning popper fra: Computer Science -> Data Science -> AI (Tankeproces og intelligent) -> Machine Learning (Data Mining/MachineLearning)

Kilder:

https://www.linkedin.com/learning/data-science-foundations-fundamentals-5/machine-learning?u=57075649

Machine Learning For Absolute Beginners

Design a site like this with WordPress.com
Get started