Model Data Preparation & Evaluation
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Modeldata voorbereiding is ân belangrike stap in die masjienleer-pyplyn, aangesien dit die transformasie van rou data in ân formaat wat geskik is vir die opleiding van masjienleer-modelle behels. Hierdie proses sluit verskeie sleutelstappe in:
- Data-insameling: Versameling van data uit verskeie bronne, soos databasisse, APIâs of lĂȘers. Die data kan gestruktureerd wees (bv. tabelle) of ongestruktureerd (bv. teks, beelde).
- Data-skoonmaak: Verwydering of regstelling van foute, onvolledige of irrelevante datapunte. Hierdie stap kan die hantering van ontbrekende waardes, die verwydering van duplikate en die filtrering van uitskieters behels.
- Data-transformasie: Om die data in ân geskikte formaat vir modellering te omskep. Dit kan normalisering, skaal, kodering van kategorievariabeles en die skep van nuwe kenmerke deur tegnieke soos kenmerkingenieurswese insluit.
- Data-splitsing: Verdelen van die datastel in opleidings-, validasie- en toetsstelle om te verseker dat die model goed kan generaliseer na ongesiene data.
Data-insameling
Data-insameling behels die versameling van data uit verskeie bronne, wat kan insluit:
- Databasisse: Uittreksel van data uit relationele databasisse (bv. SQL-databasisse) of NoSQL-databasisse (bv. MongoDB).
- APIâs: Onttrekking van data uit web-APIâs, wat regstreekse of historiese data kan verskaf.
- LĂȘers: Lees van data uit lĂȘers in formate soos CSV, JSON of XML.
- Web Scraping: Versameling van data van webwerwe deur middel van web scraping-tegnieke.
Afhangende van die doel van die masjienleerprojek, sal die data uit relevante bronne onttrek en versamel word om te verseker dat dit verteenwoordigend is van die probleemgebied.
Data-skoonmaak
Data-skoonmaak is die proses om foute of inkonsekwentheid in die datastel te identifiseer en reg te stel. Hierdie stap is noodsaaklik om die kwaliteit van die data wat gebruik word vir die opleiding van masjienleer-modelle te verseker. Sleutel take in data-skoonmaak sluit in:
- Hantering van Ontbrekende Waardes: Identifisering en aanspreek van ontbrekende datapunte. Gewone strategieë sluit in:
- Verwydering van rye of kolomme met ontbrekende waardes.
- Imputering van ontbrekende waardes met tegnieke soos gemiddelde, mediaan of modus imputasie.
- Gebruik van gevorderde metodes soos K-nabyste bure (KNN) imputasie of regressie imputasie.
- Verwydering van Duplikate: Identifisering en verwydering van duplikaatrekords om te verseker dat elke datapunt uniek is.
- Filtrering van Uitskieters: Opsporing en verwydering van uitskieters wat die model se prestasie kan beĂŻnvloed. Tegnieke soos Z-score, IQR (Interkwartielreeks), of visualisasies (bv. boksplotte) kan gebruik word om uitskieters te identifiseer.
Voorbeeld van data-skoonmaak
import pandas as pd
# Load the dataset
data = pd.read_csv('data.csv')
# Finding invalid values based on a specific function
def is_valid_possitive_int(num):
try:
num = int(num)
return 1 <= num <= 31
except ValueError:
return False
invalid_days = data[~data['days'].astype(str).apply(is_valid_positive_int)]
## Dropping rows with invalid days
data = data.drop(invalid_days.index, errors='ignore')
# Set "NaN" values to a specific value
## For example, setting NaN values in the 'days' column to 0
data['days'] = pd.to_numeric(data['days'], errors='coerce')
## For example, set "NaN" to not ips
def is_valid_ip(ip):
pattern = re.compile(r'^((25[0-5]|2[0-4][0-9]|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$')
if pd.isna(ip) or not pattern.match(str(ip)):
return np.nan
return ip
df['ip'] = df['ip'].apply(is_valid_ip)
# Filling missing values based on different strategies
numeric_cols = ["days", "hours", "minutes"]
categorical_cols = ["ip", "status"]
## Filling missing values in numeric columns with the median
num_imputer = SimpleImputer(strategy='median')
df[numeric_cols] = num_imputer.fit_transform(df[numeric_cols])
## Filling missing values in categorical columns with the most frequent value
cat_imputer = SimpleImputer(strategy='most_frequent')
df[categorical_cols] = cat_imputer.fit_transform(df[categorical_cols])
## Filling missing values in numeric columns using KNN imputation
knn_imputer = KNNImputer(n_neighbors=5)
df[numeric_cols] = knn_imputer.fit_transform(df[numeric_cols])
# Filling missing values
data.fillna(data.mean(), inplace=True)
# Removing duplicates
data.drop_duplicates(inplace=True)
# Filtering outliers using Z-score
from scipy import stats
z_scores = stats.zscore(data.select_dtypes(include=['float64', 'int64']))
data = data[(z_scores < 3).all(axis=1)]
Data Transformation
Data transformation behels die omskakeling van die data in ân formaat wat geskik is vir modellering. Hierdie stap kan insluit:
-
Normalisering & Standaardisering: Skalering van numeriese kenmerke na ân algemene reeks, tipies [0, 1] of [-1, 1]. Dit help om die konvergensie van optimalisering algoritmes te verbeter.
-
Min-Max Skalering: Her-skalering van kenmerke na ân vaste reeks, gewoonlik [0, 1]. Dit word gedoen met die formule:
X' = (X - X_{min}) / (X_{max} - X_{min}) -
Z-Score Normalisering: Standaardisering van kenmerke deur die gemiddelde af te trek en deur die standaardafwyking te deel, wat ân verspreiding met ân gemiddelde van 0 en ân standaardafwyking van 1 tot gevolg het. Dit word gedoen met die formule:
X' = (X - ÎŒ) / Ï, waar ÎŒ die gemiddelde is en Ï die standaardafwyking. -
Skewness en Kurtosis: Aanpassing van die verspreiding van kenmerke om skewness (asymmetrie) en kurtosis (piekigheid) te verminder. Dit kan gedoen word met transformasies soos logaritmies, vierkantswortel, of Box-Cox transformasies. Byvoorbeeld, as ân kenmerk ân skewed verspreiding het, kan die toepassing van ân logaritmiese transformasie help om dit te normaliseer.
-
String Normalisering: Omskakeling van strings na ân konsekwente formaat, soos:
-
Kleinletters
-
Verwydering van spesiale karakters (die relevante te behou)
-
Verwydering van stopwoorde (gewone woorde wat nie bydra tot die betekenis nie, soos âdieâ, âisâ, âenâ)
-
Verwydering van te gereelde woorde en te seldsame woorde (bv. woorde wat in meer as 90% van die dokumente of minder as 5 keer in die korpus voorkom)
-
Afknip van spasie
-
Stemming/Lemmatization: Vermindering van woorde na hul basis of wortelvorm (bv. âhardloopâ na âhardloopâ).
-
Kodering van Kategoriese Veranderlikes: Omskakeling van kategoriese veranderlikes in numeriese verteenwoordigings. Gewone tegnieke sluit in:
-
One-Hot Kodering: Skep binĂȘre kolomme vir elke kategorie.
-
Byvoorbeeld, as ân kenmerk kategorieĂ« ârooiâ, âgroenâ, en âblouâ het, sal dit in drie binĂȘre kolomme omgeskakel word:
is_rooi(100),is_groen(010), enis_blou(001). -
Label Kodering: Toekenning van ân unieke heelgetal aan elke kategorie.
-
Byvoorbeeld, ârooiâ = 0, âgroenâ = 1, âblouâ = 2.
-
Ordinale Kodering: Toekenning van heelgetalle gebaseer op die volgorde van kategorieë.
-
Byvoorbeeld, as die kategorieĂ« âlaagâ, âmediumâ, en âhoogâ is, kan hulle as 0, 1, en 2 gekodeer word, onderskeidelik.
-
Hashing Kodering: Gebruik van ân hash-funksie om kategorieĂ« in vaste-grootte vektore om te skakel, wat nuttig kan wees vir hoĂ«-kardinaliteit kategoriese veranderlikes.
-
Byvoorbeeld, as ân kenmerk baie unieke kategorieĂ« het, kan hashing die dimensionaliteit verminder terwyl dit ân bietjie inligting oor die kategorieĂ« behou.
-
Bag of Words (BoW): Verteenwoordig teksdata as ân matriks van woordtellings of frekwensies, waar elke ry ooreenstem met ân dokument en elke kolom ooreenstem met ân unieke woord in die korpus.
-
Byvoorbeeld, as die korpus die woorde âkatâ, âhondâ, en âvisâ bevat, sal ân dokument wat âkatâ en âhondâ bevat, verteenwoordig word as [1, 1, 0]. Hierdie spesifieke voorstelling word âunigramâ genoem en vang nie die volgorde van woorde nie, sodat dit semantiese inligting verloor.
-
Bigram/Trigram: Uitbreiding van BoW om woordsekwensies (bigrams of trigrams) te vang om ân bietjie konteks te behou. Byvoorbeeld, âkat en hondâ sal as ân bigram [1, 1] vir âkat enâ en [1, 1] vir âen hondâ verteenwoordig word. In hierdie gevalle word meer semantiese inligting versamel (wat die dimensionaliteit van die voorstelling verhoog) maar slegs vir 2 of 3 woorde op ân slag.
-
TF-IDF (Term Frequency-Inverse Document Frequency): ân Statistiese maatstaf wat die belangrikheid van ân woord in ân dokument ten opsigte van ân versameling dokumente (korpus) evalueer. Dit kombineer termfrekwensie (hoe gereeld ân woord in ân dokument voorkom) en omgekeerde dokumentfrekwensie (hoe skaars ân woord oor alle dokumente is).
-
Byvoorbeeld, as die woord âkatâ gereeld in ân dokument voorkom maar skaars in die hele korpus is, sal dit ân hoĂ« TF-IDF telling hĂȘ, wat die belangrikheid daarvan in daardie dokument aandui.
-
Kenmerk Ingenieurswese: Skep van nuwe kenmerke uit bestaande om die model se voorspellingskrag te verbeter. Dit kan die kombinasie van kenmerke, die onttrekking van datum/tyd komponente, of die toepassing van domein-spesifieke transformasies insluit.
Data Splitting
Data splitting behels die verdeling van die datastel in aparte substelle vir opleiding, validasie, en toetsing. Dit is noodsaaklik om die model se prestasie op ongekende data te evalueer en oorpassing te voorkom. Gewone strategieë sluit in:
- Opleidings-Toets Splitsing: Verdelen van die datastel in ân opleidingsstel (tipies 60-80% van die data), ân validasiestel (10-15% van die data) om hiperparameters te tune, en ân toetsstel (10-15% van die data). Die model word op die opleidingsstel opgelei en op die toetsstel geĂ«valueer.
- Byvoorbeeld, as jy ân datastel van 1000 monsters het, kan jy 700 monsters vir opleiding, 150 vir validasie, en 150 vir toetsing gebruik.
- Gelaagdige Steekproefneming: Verseker dat die verspreiding van klasse in die opleidings- en toetsstelle soortgelyk is aan die algehele datastel. Dit is veral belangrik vir ongebalanseerde datastelle, waar sommige klasse aansienlik minder monsters kan hĂȘ as ander.
- Tydreeks Splitsing: Vir tydreeksdata word die datastel op grond van tyd gesplit, wat verseker dat die opleidingsstel data van vroeë tydperke bevat en die toetsstel data van latere tydperke bevat. Dit help om die model se prestasie op toekomstige data te evalueer.
- K-Vou Kruisvalidering: Die datastel in K substelle (vou) verdeel en die model K keer oplei, elke keer ân ander vou as die toetsstel en die oorblywende voue as die opleidingsstel gebruik. Dit help om te verseker dat die model op verskillende substelle van data geĂ«valueer word, wat ân meer robuuste skatting van sy prestasie bied.
Model Evaluasie
Model evaluasie is die proses om die prestasie van ân masjienleer model op ongekende data te evalueer. Dit behels die gebruik van verskeie metrieke om te kwantifiseer hoe goed die model generaliseer na nuwe data. Gewone evaluasiemetrieke sluit in:
Akkuraatheid
Akkuraatheid is die proporsie van korrek voorspelde voorvalle uit die totale voorvalle. Dit word bereken as:
Accuracy = (Number of Correct Predictions) / (Total Number of Predictions)
Tip
Akkuraatheid is ân eenvoudige en intuĂŻtiewe maatstaf, maar dit mag nie geskik wees vir ongebalanseerde datastelle waar een klas die ander oorheers nie, aangesien dit ân misleidende indruk van modelprestasie kan gee. Byvoorbeeld, as 90% van die data aan klas A behoort en die model alle voorbeelde as klas A voorspel, sal dit 90% akkuraatheid bereik, maar dit sal nie nuttig wees om klas B te voorspel nie.
Presisie
Presisie is die verhouding van werklike positiewe voorspellings uit alle positiewe voorspellings wat deur die model gemaak is. Dit word bereken as:
Precision = (True Positives) / (True Positives + False Positives)
Tip
Presisie is veral belangrik in scenarioâs waar vals positiewe kostelik of ongewenst is, soos in mediese diagnoses of bedrogdetectie. Byvoorbeeld, as ân model 100 voorbeelde as positief voorspel, maar slegs 80 daarvan werklik positief is, sal die presisie 0.8 (80%) wees.
Herinnering (Sensitiwiteit)
Herinnering, ook bekend as sensitiwiteit of werklike positiewe koers, is die verhouding van werklike positiewe voorspellings uit alle werklike positiewe voorbeelde. Dit word bereken as:
Recall = (True Positives) / (True Positives + False Negatives)
Tip
Herroeping is van kardinale belang in scenarioâs waar valse negatiewe kostelik of ongewenst is, soos in siekte-opsporing of spamfiltering. Byvoorbeeld, as ân model 80 uit 100 werklike positiewe voorbeelde identifiseer, sal die herroeping 0.8 (80%) wees.
F1 Score
Die F1-telling is die harmoniese gemiddelde van presisie en herroeping, wat ân balans tussen die twee metrieks bied. Dit word bereken as:
F1 Score = 2 * (Precision * Recall) / (Precision + Recall)
Tip
Die F1-telling is veral nuttig wanneer daar met ongebalanseerde datastelle gewerk word, aangesien dit beide vals positiewe en vals negatiewe in ag neem. Dit bied ân enkele maatstaf wat die afruil tussen presisie en herroeping vasvang. Byvoorbeeld, as ân model ân presisie van 0.8 en ân herroeping van 0.6 het, sal die F1-telling ongeveer 0.69 wees.
ROC-AUC (Ontvanger Operasionele Kenmerk - Gebied Onder die Kromme)
Die ROC-AUC maatstaf evalueer die model se vermoĂ« om tussen klasse te onderskei deur die werklike positiewe koers (sensitiwiteit) teen die vals positiewe koers by verskillende drempelinstellings te plot. Die gebied onder die ROC-kromme (AUC) kwantifiseer die model se prestasie, met ân waarde van 1 wat perfekte klassifikasie aandui en ân waarde van 0.5 wat ewekansige raai aandui.
Tip
ROC-AUC is veral nuttig vir binĂȘre klassifikasieprobleme en bied ân omvattende oorsig van die model se prestasie oor verskillende drempels. Dit is minder sensitief vir klasongelykheid in vergelyking met akkuraatheid. Byvoorbeeld, ân model met ân AUC van 0.9 dui aan dat dit ân hoĂ« vermoĂ« het om tussen positiewe en negatiewe voorvalle te onderskei.
Spesifisiteit
Spesifisiteit, ook bekend as werklike negatiewe koers, is die proporsie van werklike negatiewe voorspellings uit alle werklike negatiewe voorvalle. Dit word bereken as:
Specificity = (True Negatives) / (True Negatives + False Positives)
Tip
Spesifisiteit is belangrik in scenarioâs waar vals positiewe kostelik of ongewenst is, soos in mediese toetse of bedrogdetectie. Dit help om te evalueer hoe goed die model negatiewe voorbeelde identifiseer. Byvoorbeeld, as ân model korrek 90 uit 100 werklike negatiewe voorbeelde identifiseer, sal die spesifisiteit 0.9 (90%) wees.
Matthews Korrelasie Koeffisiënt (MCC)
Die Matthews Korrelasie KoeffisiĂ«nt (MCC) is ân maatstaf van die kwaliteit van binĂȘre klassifikasies. Dit hou rekening met ware en vals positiewe en negatiewe, en bied ân gebalanseerde oorsig van die model se prestasie. Die MCC word bereken as:
MCC = (TP * TN - FP * FN) / sqrt((TP + FP) * (TP + FN) * (TN + FP) * (TN + FN))
waar:
- TP: Ware Positiewe
- TN: Ware Negatiewe
- FP: Valse Positiewe
- FN: Valse Negatiewe
Tip
Die MCC wissel van -1 tot 1, waar 1 perfekte klassifikasie aandui, 0 willekeurige raai aandui, en -1 totale onenigheid tussen voorspelling en waarneming aandui. Dit is veral nuttig vir ongebalanseerde datastelle, aangesien dit al vier komponenten van die verwarring matriks oorweeg.
Gemiddelde Absolute Fout (MAE)
Gemiddelde Absolute Fout (MAE) is ân regressiemetriek wat die gemiddelde absolute verskil tussen voorspelde en werklike waardes meet. Dit word bereken as:
MAE = (1/n) * ÎŁ|y_i - Ć·_i|
waar:
- n: Aantal instansies
- y_i: Werklike waarde vir instansie i
- Ć·_i: Voorspelde waarde vir instansie i
Tip
MAE bied ân eenvoudige interpretasie van die gemiddelde fout in voorspellings, wat dit maklik maak om te verstaan. Dit is minder sensitief vir uitskieters in vergelyking met ander metrieks soos Mean Squared Error (MSE). Byvoorbeeld, as ân model ân MAE van 5 het, beteken dit dat die model se voorspellings gemiddeld 5 eenhede van die werklike waardes afwyk.
Verwarringsmatriks
Die verwarringsmatriks is ân tabel wat die prestasie van ân klassifikasiemodel opsom deur die tellings van werklike positiewe, werklike negatiewe, vals positiewe en vals negatiewe voorspellings te toon. Dit bied ân gedetailleerde oorsig van hoe goed die model op elke klas presteer.
| Voorspelde Positief | Voorspelde Negatief | |
|---|---|---|
| Werklike Positief | Ware Positief (TP) | Vals Negatief (FN) |
| Werklike Negatief | Vals Positief (FP) | Ware Negatief (TN) |
- Ware Positief (TP): Die model het die positiewe klas korrek voorspel.
- Ware Negatief (TN): Die model het die negatiewe klas korrek voorspel.
- Vals Positief (FP): Die model het die positiewe klas verkeerdelik voorspel (Tipe I fout).
- Vals Negatief (FN): Die model het die negatiewe klas verkeerdelik voorspel (Tipe II fout).
Die verwarringsmatriks kan gebruik word om verskeie evaluasiemetriks te bereken, soos akkuraatheid, presisie, terugroep en F1-telling.
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

