
Data science: definition och praktiska tillämpningar
Data science är ett relativt nytt men snabbt växande och mångfacetterat område som används inom många områden. Det använder olika avancerade analysmetoder och prediktiva modelleringsalgoritmer för att utvinna meningsfulla insikter ur data som hjälper till att besvara strategiska affärs- eller vetenskapliga frågor. Data science kombinerar en bred uppsättning färdigheter, från tekniska (programmering, linjär algebra, statistik och modellering) till icke-tekniska (tydlig visualisering och kommunikation av resultat). Dessutom krävs, beroende på vilken bransch data science tillämpas i, god domänkunskap för att kunna tolka tillgänglig information och erhållna insikter på rätt sätt.
Algoritmer inom data science kan framgångsrikt tillämpas i många sammanhang där mycket data finns eller kan samlas in: finans, handel, marknadsföring, projektledning, försäkring, medicin, utbildning, tillverkning, HR, lingvistik, sociologi med mera. I praktiken kan i stort sett varje bransch eller vetenskap dra stor nytta av att samla in, bearbeta, analysera och modellera sin data.
Vad är ett användningsfall för data science?
Ett användningsfall för data science är en konkret uppgift i verkligheten som ska lösas med hjälp av tillgänglig data. Inom ramen för ett specifikt företag analyseras många variabler med metoder från data science i kontexten av just den bransch företaget verkar i. Användningsfall kan vara ett problem som ska lösas, en hypotes som ska testas eller en fråga som ska besvaras. I grunden innebär data science att lösa verkliga användningsfall.
Även om innehållet i varje användningsfall sannolikt skiljer sig åt, finns det några gemensamma saker att alltid ha i åtanke:
- Planering av användningsfall i data science innebär: att definiera ett tydligt mål och förväntade resultat, förstå omfattningen av arbetet, bedöma tillgängliga resurser, tillhandahålla nödvändig data, utvärdera risker och fastställa KPI:er som mått på framgång.
- De vanligaste angreppssätten för att lösa användningsfall är: prognostisering, klassificering, mönster- och anomalidetektering, rekommendationer och igenkänning av bilder.
- Vissa användningsfall är typiska uppgifter tvärs över olika områden och kan lösas med liknande metoder, såsom prognos av kundbortfall, kundsegmentering, bedrägeriupptäckt, rekommendationssystem och prisoptimering.
Hur löser jag en fallstudie inom data science?
Svaret är mycket fallspecifikt, styrt av företagets affärsstrategi och beroende av själva fallstudiens kärna. Det kan ändå vara hjälpsamt att skissa en generell färdplan att följa för alla användningsfall:
- Formulera rätt fråga. Det första steget är mycket viktigt och innefattar att gå igenom tillgänglig litteratur och befintliga fallstudier, se över beprövade metoder, utveckla relevanta teorier och arbetshypoteser samt fylla eventuella kunskapsluckor i domänen. Resultatet ska vara en tydlig fråga att besvara i den aktuella fallstudien.
- Datainsamling. I detta steg görs en inventering och insamling av data. I verkligheten har vi ofta icke-representativ, ofullständig, bristfällig och ostrukturerad data, långt ifrån en komplett och lättläst tabell redo att analyseras. Därför måste vi söka efter och identifiera alla möjliga datakällor som kan vara användbara för ämnet. Nödvändig data kan finnas i företagets arkiv, webbscrapas eller erhållas från en sponsor, med mera.
- Databerarbetning (wrangling). Detta är vanligtvis den mest tids- och resurskrävande delen av ett data science-projekt. Datakvalitet och representativitet bedöms och en initial utforskande analys genomförs. Datan rensas, förbehandlas, transformeras, manipuleras och mappas från råform till ett mer ändamålsenligt format.
- Dataanalys och modellering. Den rensade datan analyseras utifrån dess nuläge och passas sedan in i en vald prediktiv statistisk modell. Modellens noggrannhet utvärderas och om den inte är tillfredsställande prövas andra modelleringsmetoder. Detta upprepas tills vi får den modell som med högst precision förutsäger framtida scenarier. Processen kan därför, liksom de tidigare stegen, vara ganska iterativ.
- Kommunikation av resultat. Jämfört med de tidigare stegen kräver detta mer kommunikation och mjuka färdigheter än programmering och teknisk expertis. Det omfattar att dela de viktigaste fynden och slutsatserna med ledning, aktieägare och andra berörda parter. Insikterna presenteras ofta som rapporter, artiklar och presentationsbilder som skissar möjliga nästa steg.
Användningsfall för data science per bransch
Användningsfall kan finnas i princip i alla branscher där stora mängder data finns eller kan ackumuleras. I detta kapitel diskuterar vi några typiska användningsfall från följande mest efterfrågade områden: logistik, sjukvård och telekom. Vissa av användningsfallen vi tar upp är tvärvetenskapliga och kan lätt påträffas i många andra sfärer. Det gör dem mer universella och tillämpbara, så det är värt att känna till ett övergripande angreppssätt för att lösa dem. Dessutom skisserar vi för varje utvald bransch några andra möjliga ämnen som kan modelleras med metoder från data science.
Data science inom sjukvården
I de tre föregående kapitlen har vi diskuterat hur metoder från data science kan hjälpa företag i olika branscher att öka sina intäkter. När det gäller sjukvården kan korrekt användning och tolkning av tillgänglig data inte bara gynna marknadsförare i sektorn, utan också bidra till snabb diagnos av allvarliga sjukdomar och i förlängningen rädda liv.
Medicinen och vårdgivare samlar in enorma mängder data från många källor: journalsystem (EHR), data från wearables, medicinska forskningsstudier och fakturaunderlag. Att dra nytta av innovativa tekniker inom data science och dataanalys håller gradvis på att revolutionera hela hälso- och sjukvården och erbjuder de mest lovande och effektfulla lösningarna för dess framtida utveckling. Särskilt vissa högt specialiserade områden som genetik, reproduktionsmedicin, onkologi, bioteknik, radiografi, prediktiv diagnostik och läkemedel har lyfts till en helt ny nivå genom att frigöra den fulla potentialen i sin data.
För att bättre förstå hur data science kan vara värdefull inom medicinen fokuserar vi på ett av de mest klassiska användningsfallen.
Användningsfall i sjukvård: Förutsägelse av bröstcancer
Enligt World Cancer Research Fund International är bröstcancer den vanligaste cancerformen bland kvinnor och den näst vanligaste totalt sett. Att diagnostisera en bröstpatologi i tid, godartad eller elakartad, är extremt viktigt eftersom det markant ökar chanserna till lyckad behandling och överlevnad. Här kommer data science in i bilden.
Framsteg inom datautvinning i kombination med maskininlärningsalgoritmer har gjort det möjligt att förutsäga risken för bröstcancer, upptäcka potentiella avvikelser i tidiga stadier, bedöma utvecklingen och därmed utforma en optimal behandlingsplan. I grunden är detta ett typiskt klassificeringsproblem inom maskininlärning. Eftersom denna cancerform är relativt vanlig har många grundliga studier genomförts runt om i världen och därmed har stora datamängder ackumulerats från patienter globalt.
Huvudproblemet med att använda sådana dataset i klassificerare är att de kan vara kraftigt obalanserade. Till exempel, om utfallet representeras som cancer/ingen cancer, är sannolikheten för patologi (poster som tillhör minoritetsklassen) avsevärt lägre än sannolikheten för ingen patologi (poster i majoritetsklassen). Som en följd tenderar algoritmen att klassificera nya fall som icke-patologiska. För att bedöma noggrannheten mer effektivt är det därför rimligt att använda F1-poäng som utvärderingsmått, eftersom det uppskattar falskt positiva (typ I-fel) och falskt negativa (typ II-fel) snarare än enbart korrekt klassificerade fall.
Låt oss titta på ett verkligt dataset om bröstcancer från en av delstaterna i USA. Funktionerna beskrivs i detalj i dokumentationen, men i korthet är de medelvärde, standardfel och största värden för attribut från varje digitaliserad bild som visar cellkärnor från en kvinnas bröstmassa. Varje post motsvarar en kvinna med antingen elakartad eller godartad tumör (dvs. alla kvinnor i datasetet har någon typ av tumör). Attributen inkluderar cellradie, textur, släthet, kompakthet, konkavitet, symmetri osv.
import pandas as pd
cancer_data = pd.read_csv('data.csv')
pd.options.display.max_columns = len(cancer_data)
print(f'Number of entries: {cancer_data.shape[0]:,}\n'
f'Number of features: {cancer_data.shape[1]:,}\n\n'
f'Number of missing values: {cancer_data.isnull().sum().sum()}\n\n'
f'{cancer_data.head(2)}')
Number of entries: 569
Number of features: 33
Number of missing values: 569
id diagnosis radius_mean texture_mean perimeter_mean area_mean \
0 842302 M 17.99 10.38 122.8 1001.0
1 842517 M 20.57 17.77 132.9 1326.0
smoothness_mean compactness_mean concavity_mean concave points_mean \
0 0.11840 0.27760 0.3001 0.14710
1 0.08474 0.07864 0.0869 0.07017
symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se \
0 0.2419 0.07871 1.0950 0.9053 8.589
1 0.1812 0.05667 0.5435 0.7339 3.398
area_se smoothness_se compactness_se concavity_se concave points_se \
0 153.40 0.006399 0.04904 0.05373 0.01587
1 74.08 0.005225 0.01308 0.01860 0.01340
symmetry_se fractal_dimension_se radius_worst texture_worst \
0 0.03003 0.006193 25.38 17.33
1 0.01389 0.003532 24.99 23.41
perimeter_worst area_worst smoothness_worst compactness_worst \
0 184.6 2019.0 0.1622 0.6656
1 158.8 1956.0 0.1238 0.1866
concavity_worst concave points_worst symmetry_worst \
0 0.7119 0.2654 0.4601
1 0.2416 0.1860 0.2750
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
Låt oss ta bort den sista kolumnen som bara innehåller saknade värden:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
Hur stor andel, i %, av kvinnorna har bekräftad cancer (en elakartad brösttumör)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
37% av alla svarande har bröstcancer, så datasetet är faktiskt ganska balanserat.
Eftersom värdena i variabeln diagnosis är kategoriska måste vi koda dem till numerisk form för vidare användning i maskininlärning. Innan vi gör det delar vi datan i prediktorvariabler och målvariabeln diagnosis:
X = cancer_data.iloc[:, 2:32].values
y = cancer_data.iloc[:, 1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
Nu skapar vi tränings- och testmängder och skalar därefter funktionerna:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
För att modellera datan använder vi följande algoritmer med standardparametrar: k-närmaste grannar (KNN) och logistisk regression:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# KNN
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_predictions = knn.predict(X_test)
# Logistic regression
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_predictions = lr.predict(X_test)
Vi såg tidigare att datasetet är ganska balanserat, så vi kan använda måttet accuracy för att identifiera den mest träffsäkra modellen:
from sklearn.metrics import accuracy_score
print(f'Accuracy scores:\n'
f'KNN model:\t\t {accuracy_score(y_test, knn_predictions):.3f}\n'
f'Logistic regression model: {accuracy_score(y_test, lr_predictions):.3f}')
Accuracy scores:
KNN model: 0.956
Logistic regression model: 0.974
Baserat på vår data presterar den logistiska regressionsmodellen bäst när den förutsäger elakartad/godartad brösttumör för en kvinna med påvisad bröstpatologi av något slag.
Som möjliga nästa steg, eftersom logistisk regression inte har några kritiska parametrar att justera, kan vi experimentera med olika metoder för train/test-uppdelning och/eller andra prediktiva modeller.
Andra vanliga användningsfall i sjukvården:
- övervakning av realtidsdata från wearables
- prediktiv analys
- medicinsk bildanalys
- läkemedelsutveckling
- genetisk forskning
- virtuella assistenter
- hantering av kunddata
Data science inom transport och logistik
Logistik är organiseringen av leveransprocessen från en punkt till en annan, medan transport avser själva förflyttningen av kunder eller varor. Beroende på företagets verksamhetsprofil (t.ex. lunchleverans, postservice, internationella frakter, flygbolag samt taxi- eller busstjänster) kan datakällorna utgöras av tidtabeller, tidrapporter, ruttuppgifter, lagerförteckningar, rapporter, kontrakt, avtal, juridiska dokument och kundfeedback. Datan kan vara strukturerad eller ostrukturerad och innehålla information om tider, färdvägar, rutter, koordinater, kunddata, varuinformation, kostnader och priser.
Affärseffektiviteten i leverans- och transportkedjor är inte alltid självklar och beror på många faktorer: oförutsedda trafikproblem, rutternas kvalitet, väderförhållanden, nödsituationer, bränsleprisfluktuationer, lagerbrister, tekniska fel, säkerhetsrelaterade förseningar, statliga regleringar och sanktioner, med flera. Dessutom har många nya företag tillkommit på senare år, och konkurrensen i branschen har blivit hård. För att hänga med och öka den operativa produktiviteten har det därför blivit nödvändigt för varje logistik-/transportföretag att analysera stora datamängder och omvandla dem till meningsfulla insikter.
Hur kan data science konkret hjälpa transport- och logistiksektorn? Här är en långt ifrån komplett lista över möjliga tillämpningar:
- spåra hela transportflödet från början till slut,
- göra alla aktiviteter helt automatiserade och transparenta,
- leverera i tid,
- ruttoptimering,
- dynamisk prissättning,
- upprätthålla lager av förnödenheter,
- skydda lättfördärvliga varor,
- övervaka fordonens skick,
- förbättra produktionsnätverk,
- förbättra kundservice.
Användningsfall i transport och logistik: Identifiera optimal positionering av taxibilar
Uber Technologies Inc., eller Uber, är ett amerikanskt företag som erbjuder olika logistik- och transporttjänster. I denna fallstudie ska vi klustra Ubers GPS-data från samåkning för att identifiera optimal positionering av taxibilar. Det kan särskilt vara användbart för följande syften:
- Varje ny reseförfrågan tilldelas det närmaste klustret, så Uber skickar den närmaste bilen från det klustret till kundens plats.
- Genom att analysera identifierade kluster utifrån deras arbetsbelastning, eventuellt per timme eller veckodag, kan Uber i förväg omfördela bilarna och flytta dem till de mest strategiska platserna där efterfrågan är högst.
- Beroende på förhållandet mellan efterfrågan och utbud i olika kluster kan företaget justera prisnivåerna dynamiskt.
Vi kommer att använda ett dataset från FiveThirtyEight om Uber-resor i New York i april 2014:
import pandas as pd
uber_data = pd.read_csv('uber-raw-data-apr14.csv')
print(f'Number of trips: {uber_data.shape[0]:,}\n\n'
f'{uber_data.head()}')
Number of trips: 564,516
Date/Time Lat Lon Base
0 4/1/2014 0:11:00 40.7690 -73.9549 B02512
1 4/1/2014 0:17:00 40.7267 -74.0345 B02512
2 4/1/2014 0:21:00 40.7316 -73.9873 B02512
3 4/1/2014 0:28:00 40.7588 -73.9776 B02512
4 4/1/2014 0:33:00 40.7594 -73.9722 B02512
Låt oss schematiskt visualisera alla upphämtningspunkter, där longitud motsvarar x-axeln och latitud y-axeln:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
För att klustra denna data använder vi en oövervakad maskininlärningsalgoritm kallad k-means-klustring. Grundidén är att dela in alla datapunkter i flera grupper med likartad varians. I praktiken tar den in antalet kluster n_clusters (8 som standard) och delar upp datan därefter. För att hitta det optimala antalet kluster används den grafiska "elbow"-metoden. Den innefattar följande steg:
- Träna flera modeller med olika antal kluster och samla WCSS-värden (Within Cluster Sum of Squares) för varje, dvs. summan av kvadrerade avstånd från observationerna till närmaste klustercentroid.
- Plotta WCSS-värden mot motsvarande antal kluster.
- Välja det lägsta antalet kluster där en tydlig minskning av WCSS sker.
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=1)
kmeans.fit(uber_data[['Lat', 'Lon']])
wcss.append(kmeans.inertia_)
plt.figure(figsize=(12, 5))
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method', fontsize=25)
plt.xlabel('Number of clusters', fontsize=18)
plt.ylabel('WCSS', fontsize=18)
plt.xticks(ticks=list(range(1, 11)),
labels=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
plt.show()

I vårt fall verkar 7 kluster vara mest lämpligt. Vi använder detta värde för att träna en modell och förutsäga klusternummer för varje upphämtningspunkt. Vi illustrerar också datapunkterna grafiskt igen, denna gång med de sju klustercentroidernas positioner:
kmeans = KMeans(n_clusters=7, random_state=1)
kmeans.fit_predict(df[['Lat', 'Lon']])
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 0], s=100, c='lime')
plt.show()
Nu extraherar vi de exakta koordinaterna för alla centroider och visar dem separat, utan själva datan:
centroids = pd.DataFrame(kmeans.cluster_centers_)
centroids.columns = ['Lat', 'Lon']
print(centroids)
plt.scatter(centroids['Lon'], centroids['Lat'])
plt.show()
Lat Lon
0 40.688588 -73.965694
1 40.765423 -73.973165
2 40.788001 -73.879858
3 40.656997 -73.780035
4 40.731074 -73.998644
5 40.700541 -74.201673
6 40.971229 -73.611288
Det vore mer illustrativt att visa dessa centroider på en karta över New York City:
import folium
centroids_values = centroids.values.tolist()
nyc_map = folium.Map(location=[40.79659011772687, -73.87341741832425], zoom_start=50000)
for point in range(0, len(centroids_values)):
folium.Marker(centroids_values[point], popup=centroids_values[point]).add_to(nyc_map)
nyc_map

Med vår modell kan vi förutsäga närmaste kluster för vilken plats som helst i New York uttryckt i geografiska koordinater. I praktiken innebär det att Uber skickar en tillgänglig taxi från närmaste plats och kan betjäna kunden snabbare.
Låt oss hitta närmaste kluster för Lincoln Center for the Performing Arts på Manhattan:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
Och för Howard Beach i Queens:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
Som möjliga fortsättningar kan vi överväga att använda andra klustringsalgoritmer inom maskininlärning, analysera olika dataskivor (per timme/veckodag/månad), hitta de mest och minst belastade klustren, eller undersöka relationerna mellan de identifierade klustren och variabeln Base i dataframen.
Andra vanliga användningsfall i transport och logistik:
- dynamisk prissättning som matchar utbud och efterfrågan
- prognostisering av efterfrågan
- automatisering av manuella operationer
- självkörande fordon
- synlighet i leveranskedjan
- skadedetektering
- lagerhantering
- analys av kundsentiment
- kundtjänstchatbotar
Data science inom telekom
Under de senaste decennierna har telekommunikationsteknik vuxit i rasande takt och gått in i en ny fas. Idag är vi omgivna av elektroniska enheter av alla slag, och många är bokstavligen beroende av internet, särskilt sociala nätverk och meddelandetjänster. Ibland kritiseras detta beroende för att ersätta verklig ansikte-mot-ansikte-kommunikation. Men vi måste medge att telekom gjort våra liv avsevärt enklare genom att låta oss koppla upp oss mot människor över hela världen på några sekunder.
Detta blev särskilt tydligt under covid-19-pandemin när många företag och skolor införde distansarbete eller distansundervisning. I en så snabbt föränderlig verklighet fick kvaliteten och smidigheten i digital uppkoppling en aldrig tidigare skådad betydelse i alla sfärer. Nedstängningar gjorde det nödvändigt för människor att ringa och skriva till kollegor, släktingar och vänner mycket oftare än tidigare. Alla dessa nya tendenser ledde till en enorm ökning av telekommunikationens volymer, vilket i sin tur genererade stora datamängder i branschen.
Att använda metoder från data science för att bearbeta den ackumulerade datan kan hjälpa telekombranschen på många sätt:
- effektivisera verksamheten,
- optimera nätverket,
- filtrera bort skräppost,
- förbättra dataöverföringar,
- genomföra realtidsanalys,
- utveckla effektiva affärsstrategier,
- skapa lyckade marknadsföringskampanjer,
- öka intäkterna.
Låt oss titta närmare på en vanlig uppgift inom telekom, som handlar om att upptäcka och filtrera bort oönskade meddelanden.
Användningsfall i telekom: Bygga ett spamfilter
Spamfilter är en grundläggande funktion i all modern skriftlig kommunikation eftersom det skyddar oss från att bombarderas med dagliga mejl som försöker lura av oss pengar. Tekniskt sett är det ytterligare ett exempel på ett klassificeringsproblem: baserat på historisk data märks varje nytt inkommande meddelande som ham (dvs. ett normalt meddelande) och går då direkt till mottagaren, eller som spam och blockeras eller hamnar i skräppostmappen.
En populär övervakad maskininlärningsalgoritm för detta syfte är Naive Bayes-klassificeraren. Den bygger på den homonyma satsen i sannolikhetsteorin, medan "naive" syftar på antagandet att alla ord i varje meddelande är ömsesidigt oberoende. Detta antagande stämmer inte riktigt, eftersom det ignorerar naturliga ordbäddar och kontext. Men i de flesta textklassificeringsuppgifter med lite data fungerar detta angreppssätt ofta väl och ger träffsäkra förutsägelser.
Det finns flera varianter av Naive Bayes-klassificeraren, var och en med sina tillämpningar: multinomial, Bernoulli, Gaussisk och flexibel Bayes. Den bästa typen för vårt fall (spamdetektion) är den multinomiala Naive Bayes-klassificeraren. Den bygger på diskreta frekvensräkningar av kategoriska eller kontinuerliga funktioner som representerar antal ord i varje meddelande.
Låt oss tillämpa multinomialt Naive Bayes-spamfilter på SMS Spam Collection Data Set från UCI Machine Learning Repository.
import pandas as pd
sms_data = pd.read_csv('SMSSpamCollection', sep='\t', header=None, names=['Label', 'SMS'])
print(f'Number of messages: {sms_data.shape[0]:,}\n\n'
f'{sms_data.head()}')
Number of messages: 5,572
Label SMS
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...
Det finns 5 572 manuellt klassificerade meddelanden. Hur många av dem (i %) är spam?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
13% av SMS:en identifierades manuellt som spam.
För att förbereda datan för multinomial Naive Bayes-klassificering behöver vi först göra följande steg:
- Koda etiketter från sträng till numeriskt format. I vårt fall är etiketterna binära, så vi kodar dem som 0/1.
- Extrahera prediktor- och målvariabler.
- Dela upp datan i tränings- och testmängder.
- Vektorisera strängarna i SMS-kolumnen för tränings- och testmängden till CSR-matriser (compressed sparse row).
Det fjärde steget kräver lite mer förklaring. Här skapar vi ett matrisobjekt, anpassar det med ett ordförrådslexikon (alla unika ord från alla meddelanden i prediktorns träningsmängd med tillhörande frekvenser) och transformerar sedan tränings- och testmängden till matriser. Resultatet blir två matriser för prediktorns tränings- och testmängder, där kolumnerna motsvarar varje unikt ord från alla meddelanden i träningsmängden, raderna motsvarar själva meddelandena och cellvärdena anger ordfrekvensen i varje meddelande.
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
# Encoding labels
sms_data = sms_data.replace('ham', 0).replace('spam', 1)
X = sms_data['SMS'].values
y = sms_data['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Vectorizing strings from the 'SMS' column
cv = CountVectorizer(max_df=0.95)
cv.fit(X_train)
X_train_csr_matrix = cv.transform(X_train)
X_test_csr_matrix = cv.transform(X_test)
Därefter bygger vi en multinomial Naive Bayes-klassificerare med standardparametrar och kontrollerar dess noggrannhet:
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, f1_score
clf = MultinomialNB()
clf.fit(X_train_csr_matrix, y_train)
predictions = clf.predict(X_test_csr_matrix)
print(f'Model accuracy:\n'
f'Accuracy score: {accuracy_score(y_test, predictions):.3f}\n'
f'F1-score: {f1_score(y_test, predictions):.3f}\n')
Model accuracy:
Accuracy score: 0.990
F1-score: 0.962
Resultatet blev ett mycket träffsäkert spamfilter.
Möjliga fortsatta steg är att pröva andra metoder för train/test-uppdelning, förbättra vektoriseringen genom att justera några av dess många parametrar (t.ex. avskärning för alltför frekventa ord i både spam- och ham-meddelanden), samt att granska de mycket sällsynta fall där klassificeraren bedömde fel och försöka förstå varför. Dessutom kan vi visualisera de mest frekventa orden i spam- respektive ham-meddelanden med till exempel ordmoln (efter förhandsrensning och borttagning av stoppord eller låginformativa ord). Slutligen kan vi tillämpa andra maskin- eller djupinlärningsalgoritmer (support vector machines, beslutsträd, neurala nätverk) och jämföra resultaten med Naive Bayes.
Andra vanliga användningsfall i telekom:
- kundsegmentering
- produktutveckling
- analys av samtalsdetaljer (CDR)
- rekommendationssystem
- prognos av kundbortfall
- riktad marknadsföring
- bedrägeriupptäckt
- nätverkshantering och optimering
- ökad nätverkssäkerhet
- prisoptimering
- prognos av kundens livstidsvärde
Fallstudier inom data science: kurser
Vi har kommit långt och gått igenom många tillämpningar av data science inom olika områden. Om du nu känner dig inspirerad att lära dig fler användningsfall baserade på verkliga dataset och kunna tillämpa dina nya kunskaper och tekniska färdigheter för att lösa praktiska uppgifter i din egen sfär, kan följande nybörjarvänliga kortkurser om olika fallstudier vara till hjälp:
- Case Study: School Budgeting with Machine Learning in Python. I denna kurs, baserad på en fallstudie från en maskininlärningstävling på DrivenData, utforskar du ett problem relaterat till skolbudgetering och hur man kan göra det enklare och snabbare för skolor att jämföra sina utgifter med andras. Genom att tillämpa vissa tekniker inom naturlig språkbehandling förbereder du skolbudgetar och bygger en modell för att automatiskt klassificera deras poster, med en enkel version först och sedan en mer avancerad. Dessutom får du se och analysera vinnarens lösning samt ta del av andra deltagares bidrag.
- Analyzing Marketing Campaigns with pandas. Pandas är Pythons mest populära bibliotek och att utveckla solida färdigheter med dess verktyg är ett måste för varje data scientist. I denna mycket praktiska kurs bygger du vidare på grunder i Python och pandas (lägga till nya kolumner, slå ihop/skiva dataset, arbeta med datumkolumner, visualisera resultat i matplotlib) med ett fiktivt marknadsföringsdataset för en onlinesubskriptionstjänst. Du övar på att översätta typiska marknadsföringsfrågor till mätbara värden. Några frågor du besvarar är: "Hur presterade denna kampanj?", "Varför underpresterar en viss kanal?", "Vilken kanal hänvisar flest prenumeranter?" etc.
- Analyzing US Census Data in Python. I denna kurs lär du dig att enkelt navigera Decennial Census och den årliga American Community Survey och extrahera olika demografiska och socioekonomiska data, såsom hushållsinkomst, pendlingsmönster, ras och familjestruktur. Du använder Python för att hämta data för olika geografier från Census API och pandas-biblioteket för att manipulera den insamlade datan och få fram meningsfulla insikter. Dessutom övar du kartläggning med geopandas.
- Case Study: Exploratory Data Analysis in R. Denna kortkurs passar dig som redan har grundläggande kunskaper i datamanipulering och visualisering i R. Du får omsätta dina färdigheter i praktiken på ett riktigt dataset för att utforska historisk omröstningsdata från FN:s generalförsamling. Särskilt analyserar du röstningsmönster mellan länder, över tid och mellan internationella frågor. Fallstudien ger dig möjlighet att genomföra en utforskande dataanalys från början till slut, få mer praktik med dplyr och ggplot2 samt lära dig nya färdigheter.
- Human Resources Analytics: Exploring Employee Data in R. R är känt för att vara bättre anpassat för statistisk analys än Python. I denna kurs utnyttjar du den fördelen för att manipulera, visualisera och utföra statistiska tester i en serie HR-analytiska fallstudier. Tekniker från data science dök upp relativt nyligen inom HR, men idag är de ett mycket lovande spår eftersom många företag i allt högre grad förlitar sig på sina HR-avdelningar för att ta fram handlingsbara insikter och rekommendationer baserade på medarbetardata.
- Data-Driven Decision Making in SQL. I denna kurs lär du dig använda SQL för att stödja beslutsfattande och rapportera resultat till ledningen. Fallstudien fokuserar på ett onlineföretag för filmuthyrning med en databas över kunddata, betyg, bakgrundsinformation om skådespelare med mera. Några uppgifter blir att använda SQL-frågor för att studera kundpreferenser, kundengagemang och försäljningsutveckling. Du lär dig om SQL-tillägg för onlineanalytisk bearbetning som hjälper till att få fram nyckelinsikter från komplex flerdimensionell data.
Oavsett om du vill bli expert på hög nivå inom data science eller bara lära dig användbara kodningsfärdigheter för att få värdefulla datadrivna insikter i ditt eget ämnesområde, är resurserna ovan en bra start.
Slutsats
Sammanfattningsvis har vi i denna artikel undersökt vad data science är ur flera vinklar, hur det skiljer sig från dataanalys, inom vilka områden det är tillämpbart, vad ett användningsfall är och en generell färdplan för att lyckas lösa det. Vi diskuterade exakt hur data science kan vara användbart för verkliga uppgifter i några efterfrågade branscher. Samtidigt som vi beskrev många befintliga och potentiella tillämpningar fokuserade vi på de vanligaste användningsfallen i var och en av dessa populära sfärer och visade hur man löser dem med algoritmer för data science och dataanalys. Vill du lära dig mer om användningsfall i andra branscher, läs våra artiklar om bank, marknadsföring och försäljning. Slutligen gick vi igenom flera användbara onlinekurser för att fördjupa sig i andra fallstudier inom data science.
En sista intressant iakttagelse: Ingen av sektorerna vi har betraktat här är helt nya. Några av dem, som medicin och försäljning, har funnits i århundraden. Under hela deras historia, långt innan vår nya era av global digitalisering startade, samlades data från dessa branscher in i en eller annan form; nedskriven i böcker och dokument och bevarad i arkiv och bibliotek. Det som verkligen har förändrats dramatiskt under senare år med nya tekniker är den grundläggande förståelsen av den enorma potential som döljer sig i all data och den avgörande vikten av att registrera, samla in och lagra den på rätt sätt. Genom dessa insatser och ständiga förbättringar av datahanteringssystem har det blivit möjligt att ackumulera big data i alla branscher för vidare analys och prognostisering.


