Introduktion til Machine Learning
Machine learning (ML) er et underområde af kunstig intelligens (AI), der fokuserer på skabelsen af computersystemer, der kan lære, tilpasse, forudsige og korrelere, alt sammen uden at følge eksplicitte instruktioner.
Målet med maskinlæring er at forstå og behandle en stor mængde data ved at udnytte algoritmer og lave generaliserede modeller, der kan producere brugervenlige output.
Maskinlæring fungerer normalt ved at følge nedenstående trin:
- Indsamling af data fra forskellige kilder
- Rengøringsdata for at have homogenitet
- Opbygning af en model ved hjælp af en ML-algoritme
- Få indsigt fra modellens resultater
- Datavisualisering og transformation af resultater til visuelle grafer
1. Indsamling af data fra forskellige kilder
Machine learning kræver en masse data for at lave en produktionsklar model.
Dataindsamling til ML foregår på to måder: automatiseret og manuel.
- Automatiseret dataindsamling bruger programmer og scripts, der skraber data fra nettet.
- Manuel dataindsamling er en proces, hvor man manuelt indsamler data og forbereder dem homogent.
Automatiseret dataindsamling ved hjælp af web-skrabning med Python:
import requests
from bs4 import BeautifulSoup
# Scrape data from a website
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# Extract relevant information from the website
data = soup.find('div', class_='data-container').text
# Store the gathered data
with open('data.txt', 'w') as file:
file.write(data)
2. Rengøringsdata for at have homogenitet
At sikre datahomogenitet er et afgørende skridt for at få maskinlæring til at fungere og generere resultater.
Datarensning for ML udføres enten manuelt eller automatisk ved hjælp af algoritmer og består i at rette og/eller fjerne forkerte, korrupte, forkert formaterede, duplikerede og ufuldstændige data i datasættet.
Rensning af data ved hjælp af Python og pandaer:
import pandas as pd
# Read data from a CSV file
data = pd.read_csv('data.csv')
# Remove duplicates
data = data.drop_duplicates()
# Fix missing values by filling with mean
data['column_name'].fillna(data['column_name'].mean(), inplace=True)
# Remove incorrect or corrupted data
data = data[data['column_name'] > 0]
# Save cleaned data to a new file
data.to_csv('cleaned_data.csv', index=False)
3. Opbygning af en model ved hjælp af en ML-algoritme
En ML (machine learning) model er en fil, der indeholder resultaterne af maskinlæringsalgoritmer og bruges til at ræsonnere over dynamisk input.
En ML-model (machine learning) fungerer ved at indeholde en liste over mønstre, der matches mod realtidsinput, og derefter producere output i henhold til det matchede mønster.
ML-modeller kan have forskellige strukturtyper, hvor de mest almindelige typer er: binær klassifikation, multiklasseklassifikation, og regression.
- Den binære klassifikationsmodel forudsiger et binært udfald, hvilket betyder et af to mulige udfald.
- Multiklasse klassifikationsmodellen forudsiger et af mere end to udfald.
- Regressionsmodellen forudsiger numeriske værdier.
Processen med at bygge en maskinlæringsmodel kaldes træning.
Maskinlæringstræning udføres ved hjælp af algoritmer og er opdelt i to kategorier: supervised learning og unsupervised learning.
- Supervised learning (SL) er, når ML-modellen trænes ved hjælp af mærkede data, hvilket betyder de data, der har både input- og outputværdier.
- Uovervåget læring (UL) er, når ML-modellen trænes ved hjælp af umærkede data, hvilket betyder de data, der ikke har nogen tags eller kendte resultater.
Neurale netværk (NN'er) er kernen i uovervåget læring og består af kortlægning mellem dataene i datasættet, hvilket gør det muligt at lave korrelationer.
Oprettelse af en binær klassifikationsmodel ved hjælp af Pythons scikit-learn-bibliotek:
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load the dataset
X, y = load_dataset()
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Create a Logistic Regression model
model = LogisticRegression()
# Train the model
model.fit(X_train, y_train)
# Make predictions on the test set
y_pred = model.predict(X_test)
# Evaluate the model's accuracy
accuracy = accuracy_score(y_test, y_pred)
4. Få indsigt fra modellens resultater
At få indsigt fra ML-modellerne betyder at forstå de hidtil ukendte mønstre og teste modellens evne til at lave forudsigelser og konklusioner.
At få indsigt er meget vigtigt for at verificere modellens validitet og afgøre, om der skal foretages ændringer i læringsalgoritmen/-algoritmerne.
Analyse af funktions betydning i en trænet model med Python:
import matplotlib.pyplot as plt
# Get the feature importance scores
importances = model.coef_[0]
# Sort feature importance in descending order
sorted_indices = importances.argsort()[::-1]
sorted_importances = importances[sorted_indices]
# Plot the feature importance
plt.bar(range(len(sorted_importances)), sorted_importances)
plt.xticks(range(len(sorted_importances)), sorted_indices)
plt.xlabel('Feature Index')
plt.ylabel('Importance Score')
plt.title('Feature Importance')
plt.show()
5. Datavisualisering og transformation af resultater til visuelle grafer
Datavisualisering af ML-modellen består i at sætte outputdataene på en graf og levere den interaktive API.
Oprettelse af et scatterplot af forudsagte værdier med Python:
import matplotlib.pyplot as plt
# Get the predicted values
y_pred = model.predict(X)
# Create a scatter plot
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Predicted Values')
plt.show()
Konklusion
Ovenstående kodeeksempler viser praktiske implementeringer for hvert trin i maskinlæring, fra dataindsamling og -rensning til modelbygning, indsigt og datavisualisering.