Sari la conținutul principal

Ghid de cazuri de utilizare în Data Science

Află despre cazurile de utilizare în data science și descoperă cum poate fi implementată în diverse industrii pentru a impulsiona creșterea și luarea deciziilor.
Actualizat 31 aug. 2026  · 15 min. citire

Explorează cu AI

ChatGPTClaudePerplexity

Artă conceptuală despre inteligența artificială

Data Science: definiție și aplicații practice

Data science este un domeniu relativ recent, dar aflat în plină expansiune, cu multiple fațete, folosit în multe sfere. Utilizează diverse tehnici avansate de analiză și algoritmi de modelare predictivă pentru a extrage perspective relevante din date, ajutând la răspunsul unor întrebări strategice de business sau științifice. Data science combină o gamă largă de abilități, de la cele tehnice (programare, algebră liniară, statistici și modelare) la cele non-tehnice (reprezentarea eficientă și comunicarea rezultatelor). În plus, în funcție de industria în care este aplicată, este necesară o cunoaștere solidă a domeniului pentru a interpreta corect informațiile disponibile și insight-urile obținute.

Algoritmii de data science pot fi aplicați cu succes în contexte diverse în care se colectează sau se pot colecta multe date: finanțe, comerț, marketing, management de proiect, asigurări, medicină, educație, producție, HR, lingvistică, sociologie etc. Practic, orice industrie sau știință poate beneficia semnificativ de pe urma colectării, analizării și modelării datelor.

Ce este un caz de utilizare în Data Science?

Un caz de utilizare în data science este o sarcină concretă din lumea reală, de rezolvat folosind datele disponibile. În cadrul unei companii anume, multe variabile sunt analizate cu tehnici de data science în contextul industriei specifice a companiei. Cazurile de utilizare pot fi o problemă de rezolvat, o ipoteză de verificat sau o întrebare la care să se răspundă. În esență, a face data science înseamnă a rezolva cazuri reale de utilizare.

Deși conținutul fiecărui caz va fi probabil foarte diferit, există câteva aspecte comune de avut mereu în vedere:

  • Planificarea unui caz de utilizare în data science înseamnă: definirea unui obiectiv clar și a rezultatelor așteptate, înțelegerea ariei de lucru, evaluarea resurselor disponibile, furnizarea datelor necesare, evaluarea riscurilor și definirea KPI ca măsură a succesului.
  • Cele mai comune abordări pentru rezolvarea cazurilor de utilizare sunt: prognoza, clasificarea, detectarea tiparelor și a anomaliilor, recomandările și recunoașterea imaginilor.
  • Unele cazuri de utilizare reprezintă sarcini tipice în diverse domenii și te poți baza pe abordări similare pentru a le rezolva, cum ar fi predicția churn-ului clienților, segmentarea clienților, detectarea fraudei, sistemele de recomandare și optimizarea prețurilor.

Cum rezolv un studiu de caz în Data Science?

Răspunsul este foarte specific cazului, determinat de strategia de business a companiei și dependent de miezul studiului de caz. Totuși, e util să schițăm un parcurs general aplicabil oricărui caz de utilizare:

  1. Formularea întrebării corecte. Acest prim pas este foarte important și include revizuirea literaturii și a studiilor de caz existente, trecerea în revistă a bunelor practici, elaborarea teoriilor relevante și a ipotezelor de lucru și completarea eventualelor lacune de expertiză de domeniu. Rezultatul ar trebui să fie o întrebare clară la care studiul de caz să răspundă.
  2. Colectarea datelor. În acest pas, facem un inventar și un proces de agregare a datelor. În viața reală, deseori avem date nereprezentative, incomplete, cu erori și nestructurate, adică departe de a fi un tabel complet, ușor de citit și gata de analizat. Prin urmare, trebuie să căutăm și să identificăm toate sursele posibile de date utile pentru subiectul nostru. Datele necesare pot fi găsite în arhivele companiei, obținute prin web scraping sau furnizate de un sponsor etc.
  3. Data wrangling. De regulă, aceasta este partea care consumă cel mai mult timp și resurse într-un proiect de data science. Se evaluează calitatea și reprezentativitatea datelor colectate și se face o explorare inițială. Datele sunt curățate, preprocesate, transformate, manipulate și mapate din forma brută într-un format mai potrivit.
  4. Analiza și modelarea datelor. Datele curățate sunt analizate din perspectiva stării lor actuale, apoi sunt încadrate într-un model predictiv statistic selectat. Se evaluează acuratețea modelului și, dacă nu este satisfăcătoare, se încearcă alte abordări de modelare. Procesul se repetă până se obține modelul cu cea mai mare precizie în prezicerea scenariilor viitoare. Așadar, acest proces, ca și cele anterioare, poate fi destul de iterativ.
  5. Comunicarea rezultatelor. În comparație cu pașii anteriori, acesta cere mai mult abilități de comunicare și soft skills, mai degrabă decât programare și expertiză tehnică. Include împărtășirea celor mai importante constatări și concluzii finale cu managementul, acționarii și alte părți implicate. Insight-urile sunt de obicei prezentate în rapoarte, articole și prezentări, conturând posibilele direcții de acțiune.

Cazuri de utilizare în Data Science pe industrii

Cazurile de utilizare în data science pot fi legate practic de orice industrie în care se acumulează sau se pot acumula volume mari de date. În acest capitol, discutăm câteva cazuri tipice din cele mai căutate domenii: logistică, sănătate și telecomunicații. Unele dintre cazurile analizate sunt interdisciplinare și se întâlnesc ușor și în multe alte sfere. Asta le face mai universale și aplicabile, deci merită cunoscută abordarea generală de rezolvare. În plus, pentru fiecare industrie selectată, vom evidenția și alte subiecte care pot fi modelate cu metode de data science.

Data Science în sănătate

În capitolele anterioare, am discutat cum metodele de data science pot ajuta companiile din diferite industrii să-și crească veniturile. În sănătate, nu doar marketerii pot beneficia de utilizarea și interpretarea corectă a datelor, ci și diagnosticul la timp al unor boli grave poate fi îmbunătățit, ajutând chiar la salvarea de vieți.

Furnizorii de servicii medicale și medicina, în general, colectează un volum uriaș de date din numeroase surse: sisteme de dosar electronic de sănătate (EHR), date din dispozitive purtabile, studii de cercetare medicală și documente de facturare. Valorificarea tehnicilor inovatoare de data science și analiză a datelor revoluționează treptat întreaga industrie a sănătății, oferind cele mai promițătoare și impactante soluții pentru dezvoltarea ei viitoare. În special, unele domenii foarte specializate, cum ar fi genetica, medicina reproductivă, oncologia, biotehnologia, radiografia, diagnosticul predictiv și farmaceutica, au trecut la un nivel cu totul nou datorită valorificării întregului potențial al datelor.

Pentru a înțelege mai bine cum poate fi utilă data science în medicină, să ne concentrăm pe unul dintre cazurile clasice.

Caz de utilizare în sănătate: predicția cancerului de sân

Conform World Cancer Research Fund International, cancerul de sân este cel mai frecvent tip de cancer la femei și al doilea cel mai frecvent per total. Diagnosticarea la timp a unei patologii mamare, fie benignă, fie malignă, este extrem de importantă deoarece crește semnificativ șansele de tratament reușit și rata de supraviețuire. Aici intervine data science.

Progresul metodelor de data mining, în combinație cu algoritmi de machine learning, a făcut posibilă prezicerea riscului de cancer de sân, detectarea oricărei anomalii în stadii incipiente, estimarea dinamicii acesteia și, astfel, dezvoltarea unui plan optim de combatere a bolii. În esență, este o problemă tipică de clasificare în învățarea automată. Partea bună este că, deoarece acest tip de oncologie este destul de răspândit, s-au realizat multe investigații minuțioase în întreaga lume și, ca urmare, s-au acumulat tone de date de la paciente din toată lumea.

Principala problemă la utilizarea unor astfel de seturi de date în clasificatori este că pot fi puternic dezechilibrate. De exemplu, în cazul în care rezultatul este reprezentat ca „cancer / fără cancer”, probabilitatea unei patologii (înregistrările ce aparțin clasei minoritare) este considerabil mai mică decât probabilitatea de a nu avea patologie (înregistrările ce aparțin clasei majoritare). Drept urmare, algoritmul tinde să clasifice cazurile noi ca nepatologice. Așadar, pentru a evalua mai eficient acuratețea unor astfel de modele, are sens folosirea scorului F1 ca metrică, deoarece estimează pozitivele false (eroarea de tip I) și negativele false (eroarea de tip II), mai degrabă decât cazurile clasificate corect.

Să aruncăm o privire la un set de date real despre cancerul de sân dintr-un stat al SUA. Caracteristicile sunt descrise detaliat în documentație, dar, pe scurt, reprezintă media, eroarea standard și cele mai mari valori ale atributelor din fiecare imagine digitalizată ce afișează nucleii celulari dintr-o masă mamară. Fiecare intrare corespunde unei femei cu o tumoră malignă sau benignă (adică toate femeile în cauză au un anumit tip de tumoră). Atributele includ raza celulei, textura, netezimea, compactitatea, concavitatea, simetria etc.

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 

Hai să eliminăm ultima coloană, care conține doar valori lipsă:

cancer_data = cancer_data.drop('Unnamed: 32', axis=1)

Câte femei, în %, au un cancer confirmat (o tumoră mamară malignă)?

round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B    63
M    37
Name: diagnosis, dtype: Int64

37% dintre respondente au cancer de sân, deci setul de date este de fapt destul de echilibrat.

Deoarece valorile variabilei diagnosis sunt categorice, trebuie să le codificăm numeric pentru folosirea ulterioară în machine learning. Înainte de asta, să împărțim datele în caracteristicile predictori și variabila țintă 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)

Acum, să creăm seturile de antrenare și test, apoi să scalăm caracteristicile:

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)

Pentru a modela datele, să aplicăm următorii algoritmi cu parametrii lor prestabiliți: cei mai apropiați k vecini (KNN) și regresia logistică:

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)

Am văzut mai devreme că setul nostru de date este destul de echilibrat, așa că putem folosi acuratețea ca metrică de evaluare pentru a identifica modelul cel mai precis:

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

Pe baza datelor noastre, regresia logistică are performanța cea mai bună în prezicerea unei tumori mamare maligne/benigne pentru o femeie cu o patologie mamară detectată de orice natură.

Ca direcții de continuare, având în vedere că algoritmul de regresie logistică nu are parametri critici de ajustat, putem experimenta cu diferite abordări de împărțire train/test și/sau diverse tehnici de modelare predictivă.

Alte cazuri comune de utilizare în sănătate:

  • monitorizarea în timp real a datelor din wearables
  • analitică predictivă
  • analiza imaginilor medicale
  • descoperirea de medicamente
  • cercetare în genetică
  • asistenți virtuali
  • managementul datelor clienților

Data Science în transport și logistică

Logistica înseamnă organizarea procesului de livrare a produselor dintr-un punct în altul, în timp ce transportul presupune deplasarea clienților sau a mărfurilor. În funcție de profilul activității unei companii (de ex., livrare de prânz, servicii poștale, transport internațional, companii aeriene, servicii de taxi sau autobuz), sursele de date pot fi reprezentate de programe, fișe de pontaj, detalii despre rute, inventarul depozitelor, rapoarte, contracte, acorduri, documente legale și feedback-ul clienților. Datele pot fi structurate sau nestructurate și includ informații despre timp, itinerarii, rute, coordonate, date ale clienților, detalii despre mărfuri, costuri și prețuri.

Eficiența businessului în lanțul de aprovizionare și în transport nu este întotdeauna simplu de evaluat și depinde de numeroși factori: probleme neprevăzute de trafic, calitatea rutelor, condiții meteo, urgențe, fluctuații ale prețului combustibilului, lipsuri în stocurile depozitelor, defecțiuni tehnice, întârzieri de livrare din motive de securitate, reglementări și sancțiuni guvernamentale și multe altele. În plus, în ultimii ani au apărut multe companii noi pe piață, iar concurența a devenit destul de acerbă. Prin urmare, pentru a ține pasul cu competiția și a crește productivitatea operațională, a devenit obligatoriu pentru fiecare companie de logistică/transport să analizeze big data și să o transforme în insight-uri relevante.

Cum poate ajuta concret data science în transport și logistică? Iată o listă, departe de a fi completă, a aplicațiilor potențiale:

  • urmărirea întregului proces de transport cap-coadă,
  • automatizarea și transparentizarea completă a activităților,
  • livrare la timp,
  • optimizarea rutelor,
  • prețuri dinamice,
  • menținerea stocurilor de aprovizionare,
  • protejarea bunurilor perisabile,
  • monitorizarea stării vehiculelor,
  • îmbunătățirea rețelelor de producție,
  • îmbunătățirea serviciului pentru clienți.

Caz de utilizare în transport și logistică: identificarea poziționării optime a vehiculelor de taxi

Uber Technologies Inc., sau Uber, este o companie americană care oferă diverse servicii de logistică și transport. În acest studiu de caz, vom grupa datele GPS ale curselor Uber pentru a identifica poziționarea optimă a vehiculelor de taxi. În special, poate fi util pentru următoarele scopuri:

  • Fiecărei cereri noi de cursă i se asociază cel mai apropiat cluster, astfel încât Uber trimite mașina cea mai apropiată din acel cluster la locația clientului.
  • Analizând clusterele identificate din perspectiva încărcării lor, opțional pe oră sau pe zi a săptămânii, Uber poate redistribui mașinile în avans și le poate trimite în locațiile strategice cu cerere mai mare.
  • În funcție de raportul cerere/ofertă din diferite clustere, compania poate ajusta dinamic tarifele.

Vom folosi un set de date de la FiveThirtyEight despre curse Uber în New York în aprilie 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

Hai să vizualizăm schematic toate punctele de preluare, ținând cont că longitudinea corespunde axei x, iar latitudinea axei y:

import matplotlib.pyplot as plt

plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()

Grafic cu datele curselor Uber

Pentru a grupa aceste date, vom folosi un algoritm nesupravegheat de învățare automată numit k-means. Ideea este să împartă toate eșantioanele în câteva grupuri cu varianță similară. Practic, primește un număr de clustere n_clusters (8 implicit) și separă datele corespunzător. Pentru a găsi numărul optim de clustere, se folosește metoda grafică „cotul” (elbow). Aceasta include următorii pași:

  • Antrenarea mai multor modele cu un număr diferit de clustere și colectarea valorilor WCSS (Within Cluster Sum of Squares) pentru fiecare, adică suma distanțelor pătrate ale observațiilor față de cel mai apropiat centroid al clusterului.
  • Reprezentarea valorilor WCSS în funcție de numărul de clustere.
  • Selectarea celui mai mic număr de clustere unde are loc o scădere semnificativă a WCSS.
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()

Grafic al numărului de clustere

În cazul nostru, numărul cel mai potrivit de clustere pare a fi 7. Să folosim această valoare pentru a antrena un model și a prezice numărul clusterului pentru fiecare punct de preluare. De asemenea, vom ilustra din nou datele grafic, de data aceasta adăugând locațiile celor șapte centroizi:

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()

Grafic cu cei șapte centroizi de cluster

Acum, vom extrage coordonatele exacte pentru toți centroizii și le vom afișa separat, fără datele propriu-zise:

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

Coordonatele trasate pentru toți centroizii

Ar fi mai ilustrativ să arătăm acești centroizi pe o hartă a orașului New York:

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

Harta NYC

Folosind modelul nostru, putem prezice cel mai apropiat cluster pentru orice locație din New York exprimată în coordonate geografice. În termeni practici, înseamnă că Uber va trimite un taxi disponibil din locația cea mai apropiată și va servi clientul mai rapid.

Hai să găsim cel mai apropiat cluster pentru Lincoln Center for the Performing Arts din cartierul Manhattan:

lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])

Și pentru Howard Beach din cartierul Queens:

howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])

Ca direcții de continuare, putem lua în calcul aplicarea altor algoritmi de clustering, analizarea diferitelor secțiuni de date (pe oră/zi a săptămânii/lună), identificarea clusterelor cele mai și cel mai puțin încărcate sau investigarea relațiilor dintre clusterele identificate și variabila Base din dataframe.

Alte cazuri comune de utilizare în transport și logistică:

  • prețuri dinamice în funcție de cerere-ofertă
  • prognoza cererii
  • automatizarea operațiunilor manuale
  • vehicule autonome
  • vizibilitate în lanțul de aprovizionare
  • detectarea daunelor
  • managementul depozitelor
  • analiza sentimentului clienților
  • chatboți pentru suport clienți

Data Science în telecom

În ultimele două decenii, tehnologiile de telecomunicații au evoluat într-un ritm incredibil și au intrat într-o nouă etapă de dezvoltare. Astăzi suntem înconjurați de dispozitive electronice de tot felul, iar mulți oameni au devenit literalmente dependenți de Internet, în special de rețele sociale și aplicații de mesagerie. Uneori, această dependență de dispozitive este criticată pentru înlocuirea comunicării față în față. Totuși, trebuie să recunoaștem că telecomul ne-a făcut viața semnificativ mai ușoară, permițându-ne să ne conectăm cu oameni din întreaga lume în doar câteva secunde.

Acest lucru a fost cu atât mai adevărat în perioada pandemiei de COVID-19, când multe companii și școli au adoptat scheme de lucru sau învățare la distanță. Într-o astfel de realitate în schimbare rapidă, calitatea și fluiditatea conectivității digitale au căpătat o importanță fără precedent în toate sferele. Perioadele de lockdown i-au făcut pe oameni să sune și să trimită mesaje colegilor, rudelor și prietenilor mult mai des decât înainte. Toate aceste tendințe au dus la o creștere imensă a volumelor de telecomunicații, ceea ce, la rândul său, a generat cantități vaste de date în această industrie.

Utilizarea metodelor de data science pentru a procesa datele acumulate poate ajuta industria telecom în multe feluri:

  • raționalizarea operațiunilor,
  • optimizarea rețelei,
  • filtrarea spamului,
  • îmbunătățirea transmisiilor de date,
  • analitică în timp real,
  • dezvoltarea de strategii de business eficiente,
  • crearea de campanii de marketing reușite,
  • creșterea veniturilor.

Să explorăm mai detaliat o sarcină comună din telecom, legată de detectarea și filtrarea mesajelor nedorite.

Caz de utilizare în telecom: construirea unui filtru de spam

Filtrarea spamului este o funcție vitală a tuturor canalelor moderne de comunicare scrisă, deoarece ne protejează de bombardamentul zilnic cu emailuri care încearcă să ne înșele de bani. Tehnic, este un alt exemplu de problemă de clasificare: pe baza datelor istorice, fiecare mesaj nou este etichetat ca ham (adică mesaj normal), caz în care ajunge direct la destinatar, sau ca spam, caz în care este blocat sau ajunge în folderul de spam.

Un algoritm popular de învățare automată supravegheată pentru acest scop este clasificatorul Naive Bayes. Se bazează pe teorema omonimă din teoria probabilităților, iar „naiv” provine din presupunerea de bază că toate cuvintele din fiecare mesaj sunt independente între ele. Această presupunere nu este exact corectă, deoarece ignoră existența inevitabilă a embedding-urilor naturale ale cuvintelor și a contextului. Totuși, în majoritatea sarcinilor de clasificare a textului cu puține date, această abordare funcționează bine și face predicții precise.

Există mai multe versiuni ale clasificatorului Naive Bayes, fiecare cu cazuri proprii de aplicabilitate: multinomial, Bernoulli, gaussian și flexible Bayes. Tipul cel mai potrivit pentru cazul nostru (detectarea spamului) este clasificatorul Naive Bayes multinomial. Se bazează pe numărări discrete ale frecvențelor pentru caracteristici categorice sau continue, reprezentând numărul de apariții ale cuvintelor în fiecare mesaj.

Să aplicăm filtrarea spamului cu Naive Bayes multinomial pe SMS Spam Collection Data Set din 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...

Sunt 5.572 de mesaje clasificate de oameni. Câte dintre ele (în %) sunt spam?

round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham     87
spam    13
Name: Label, dtype: Int64

13% dintre SMS-uri au fost identificate manual ca spam.

Pentru a pregăti datele pentru clasificarea Naive Bayes multinomială, trebuie mai întâi să parcurgem următorii pași:

  1. Codificarea etichetelor din format text în format numeric. În cazul nostru, etichetele sunt binare, așadar le vom codifica 0/1.
  2. Extrage predictorii și variabila țintă.
  3. Împarte datele în seturi de antrenare și test.
  4. Vectorizează șirurile din coloana SMS a seturilor de antrenare și test pentru predictori pentru a obține matrici CSR (compressed sparse row).

Pasul 4 necesită o explicație mai detaliată. Aici creăm un obiect matrice, îl potrivim cu dicționarul de vocabular (toate cuvintele unice din toate mesajele setului de antrenare al predictorilor, cu frecvențele corespunzătoare), apoi transformăm seturile de antrenare și test în matrici. Rezultatul va fi două matrici pentru seturile de antrenare și test ale predictorilor, în care coloanele corespund fiecărui cuvânt unic din toate mesajele setului de antrenare al predictorilor, rândurile mesajelor propriu-zise, iar valorile din celule frecvenței cuvintelor pentru fiecare mesaj.

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)

În continuare vom construi un clasificator Naive Bayes multinomial cu parametrii prestabiliți și îi vom verifica acuratețea:

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

Rezultatul este un filtru de spam cu acuratețe ridicată.

Ca direcții de continuare, putem încerca alte metode de împărțire train/test, îmbunătăți procesul de vectorizare ajustând unii dintre numeroșii săi parametri (de ex., pragul pentru cuvinte prea frecvente atât în spam, cât și în ham) și verifica acele cazuri foarte rare în care clasificatorul a etichetat greșit un mesaj, încercând să înțelegem de ce s-a întâmplat. În plus, putem vizualiza cele mai frecvente cuvinte în mesajele de tip spam și ham folosind, de exemplu, un word cloud (după curățarea preliminară a datelor și excluderea stopword-urilor sau a cuvintelor puțin informative). În cele din urmă, putem aplica alți algoritmi de machine sau deep learning (mașini cu vectori de suport, arbori de decizie, rețele neuronale) și compara rezultatele cu abordarea Naive Bayes.

Alte cazuri comune de utilizare în telecom:

  • segmentarea clienților
  • dezvoltarea de produse
  • analiza înregistrărilor detaliate ale apelurilor
  • sisteme de recomandare
  • predicția ratei de churn
  • marketing targetat
  • detectarea fraudei
  • management și optimizare de rețea
  • securitate sporită a rețelei
  • optimizarea prețurilor
  • predicția valorii pe viață a clientului

Studii de caz în Data Science: cursuri

Am parcurs deja un drum lung și am explorat în detaliu numeroase aplicații ale data science în diferite domenii. Dacă acum te simți inspirat să afli mai multe cazuri de utilizare bazate pe seturi de date reale și să poți aplica noile cunoștințe și abilități tehnice pentru a rezolva sarcini practice în propriul tău domeniu, îți pot fi utile următoarele cursuri scurte, pentru începători, pe diverse studii de caz:

  1. Studiu de caz: bugetarea școlară cu machine learning în Python. În acest curs bazat pe un studiu de caz dintr-o competiție de machine learning pe DrivenData, vei explora o problemă legată de bugetarea districtelor școlare și cum poate fi făcută mai ușoară și mai rapidă compararea cheltuielilor între școli. Aplicând tehnici de procesare a limbajului natural, vei pregăti bugetele școlare și vei construi un model care să clasifice automat elementele acestora, începând cu o versiune simplă și avansând treptat la una mai complexă. În plus, vei putea vedea și analiza soluția câștigătorului competiției, precum și vizualiza trimiterile celorlalți participanți.
  2. Analiza campaniilor de marketing cu pandas. Pandas este cea mai populară bibliotecă Python, iar dezvoltarea unor abilități solide cu acest toolkit este esențială pentru orice data scientist. În acest curs foarte practic, vei aprofunda elementele de bază Python și pandas (adăugare de coloane noi, îmbinare/segmentare de seturi de date, lucrul cu coloane de tip dată, vizualizarea rezultatelor în matplotlib) folosind un set de date fictiv de marketing pentru un business de abonamente online. Vei exersa traducerea întrebărilor tipice de marketing în valori măsurabile. Unele întrebări la care vei răspunde sunt: „Cum a performat această campanie?”, „De ce un anumit canal are performanțe slabe?”, „Care canal aduce cei mai mulți abonați?” etc.
  3. Analiza datelor recensământului SUA în Python. În acest curs, vei învăța cum să navighezi cu ușurință prin Recensământul decenal și sondajul anual American Community Survey și să extragi din ele diverse date demografice și socioeconomice, precum venitul gospodăriilor, naveta, rasa și structura familiei. Vei folosi Python pentru a solicita date pentru diferite zone geografice din API-ul Census și biblioteca pandas pentru a manipula datele colectate și a obține insight-uri relevante. În plus, vei exersa cartografierea cu biblioteca geopandas.
  4. Studiu de caz: analiză exploratorie a datelor în R. Acest curs scurt este ideal dacă ai deja cunoștințe de bază despre instrumente de manipulare și vizualizare a datelor în R. Parcurgând materialele, îți vei testa abilitățile pe un set de date real pentru a explora datele istorice privind voturile Adunării Generale a ONU. În special, vei analiza tendințe de vot între țări, în timp și pe teme internaționale. Acest studiu de caz îți va permite să realizezi o analiză exploratorie cap-coadă, să câștigi mai multă practică cu pachetele dplyr și ggplot2 și să înveți abilități noi.
  5. Analitică HR: explorarea datelor angajaților în R. R este cunoscut ca fiind mai bine adaptat pentru analiza statistică decât Python. În acest curs, vei valorifica acest avantaj al lui R pentru a manipula, vizualiza și efectua teste statistice într-o serie de studii de caz de analitică HR. Tehnicile de data science au apărut relativ recent în resurse umane. Totuși, astăzi reprezintă o direcție foarte promițătoare, deoarece multe companii se bazează tot mai mult pe departamentele HR pentru a furniza insight-uri acționabile și recomandări folosind baza de date a angajaților.
  6. Luarea deciziilor pe baza datelor în SQL. În acest curs, vei învăța cum să folosești SQL pentru a sprijini luarea deciziilor și a raporta rezultate către management. Studiul de caz se concentrează pe o companie de închiriere de filme online, cu o bază de date despre clienți, evaluări de filme, informații despre actori etc. Unele sarcini vor fi aplicarea interogărilor SQL pentru a studia preferințele clienților, implicarea acestora și evoluția vânzărilor. Vei învăța despre extensii SQL pentru procesare analitică online, care ajută la obținerea insight-urilor cheie din date multidimensionale complexe.

Indiferent dacă vrei să devii un expert de top în data science sau vrei doar să înveți abilități utile de programare pentru a extrage insight-uri valoroase bazate pe date în propriul domeniu de studiu, resursele de mai sus sunt un loc excelent de pornire.

Concluzie

Pe scurt, în acest articol am investigat ce este data science din mai multe unghiuri, cum diferă de data analytics, în ce sfere este aplicabilă, ce este un caz de utilizare și un parcurs general pentru a-l rezolva cu succes. Am discutat exact cum poate fi utilă data science pentru sarcini reale în câteva industrii cu cerere mare. În timp ce am conturat multe aplicații existente și potențiale, ne-am concentrat pe cele mai comune cazuri de utilizare în fiecare dintre aceste domenii populare și am demonstrat cum să le rezolvăm folosind algoritmi de data science și data analytics. Dacă vrei să afli mai multe despre cazuri de utilizare în alte industrii, aruncă o privire la articolele noastre despre cazuri de utilizare în bănci, marketing și vânzări. În cele din urmă, am trecut în revistă câteva cursuri online utile pentru a aprofunda alte studii de caz în data science.

O ultimă observație interesantă: niciunul dintre sectoarele pe care le-am analizat nu este cu adevărat nou. Unele, precum medicina și vânzările, există de secole. De-a lungul întregii lor istorii, cu mult înainte de noua noastră eră a digitalizării globale, datele din aceste industrii au fost de asemenea colectate într-o formă sau alta; scrise în cărți și documente și păstrate în arhive și biblioteci. Ceea ce s-a schimbat cu adevărat, dramatic, în ultimii ani, odată cu apariția noilor tehnologii, este înțelegerea fundamentală a potențialului imens ascuns în orice date și importanța vitală a înregistrării, colectării și stocării lor adecvate. Aplicarea acestor eforturi și îmbunătățirea constantă a sistemelor de management al datelor au făcut posibilă acumularea de big data în toate industriile pentru analize și prognoze ulterioare.

Subiecte
Data Science
Alfabetizare în date