Skip to content
Snippets Groups Projects
README.md 4.25 KiB
Newer Older
alhamdam94's avatar
alhamdam94 committed
# Empfehlungsalgorithmen durch Matrixfaktorisierung

alhamdam94's avatar
alhamdam94 committed
## Beschreibung
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
Dieses Projekt ist Teil einer Bachelorarbeit und implementiert eine Datenanalyse. Es verwendet verschiedene Python-Bibliotheken zur Verarbeitung von Daten, zur Erstellung von Visualisierungen und zur Modellierung von Empfehlungsalgorithmen.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
Die Ziele des Projekts umfassen:
- Verarbeitung und Bereinigung von Datensätzen
- Analyse der Daten mit statistischen und visuellen Methoden
alhamdam94's avatar
alhamdam94 committed
- Implementierung von Modellen zur Vorhersage
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
## Voraussetzungen
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
Um dieses Projekt auszuführen, benötigen Sie:
- Python 3.9 oder höher
- Zugriff auf die in `requirements.txt` definierten Python-Bibliotheken
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
### Abhängigkeiten
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
Die folgenden Pakete werden verwendet:
- `numpy==1.24.3`: Numerische Berechnungen
- `pandas==1.5.3`: Datenverarbeitung und Manipulation
- `matplotlib==3.7.1`: Erstellung von Diagrammen und Visualisierungen
- `seaborn==0.12.2`: Erweiterte Datenvisualisierung
- `scikit-learn==1.2.2`: Machine-Learning-Bibliothek
- `kagglehub==0.1.4`: Zugriff auf Kaggle-Daten
alhamdam94's avatar
alhamdam94 committed

## Installation

alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
1. Klonen Sie das Repository:
   ```bash
alhamdam94's avatar
alhamdam94 committed
   git clone https://git.imp.fu-berlin.de/alhamdam94/empfehlungsalgorithmen-durch-matrixfaktorisierung.git
   cd Empfehlungsalgorithmen durch Matrixfaktorisierung
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
## Verwendung

alhamdam94's avatar
alhamdam94 committed
1. **Daten herunterladen**:
   - Das Skript lädt den MovieLens 1M-Datensatz automatisch aus dem Internet herunter und bereitet ihn für die Analyse vor. Dafür wird die Datei `ratings.dat` extrahiert und in einen DataFrame konvertiert.

2. **Matrix vorbereiten**:
   - Die ursprüngliche Bewertungsmatrix wird erstellt und NaN-Werte werden behandelt:
     - Für ALS (Alternating Least Squares) bleiben NaN-Werte erhalten, um fehlende Daten zu modellieren.
     - Für SVD (Singular Value Decomposition) werden NaN-Werte durch den Spaltenmittelwert ersetzt.

3. **Rekonstruktionsalgorithmen**:
   - **Alternating Least Squares (ALS)**:
     - Es wird ein einfacher ALS-Algorithmus implementiert, der latente Benutzer- und Item-Features optimiert.
   - **Singular Value Decomposition (SVD)**:
     - Es wird eine klassische SVD durchgeführt, um die Matrix zu rekonstruieren.

4. **Bewertungsmessung**:
   - Die Güte der rekonstruierten Matrix wird anhand von MAE (Mean Absolute Error) und RMSE (Root Mean Squared Error) auf einem Testdatensatz gemessen.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
5. **Visualisierungen**:
   - Es werden verschiedene Diagramme und Analysen erstellt:
     - Vergleich von MAE und RMSE zwischen ALS und SVD.
     - Scatterplots der tatsächlichen Bewertungen vs. vorhergesagten Bewertungen.
     - Verteilungen der vorhergesagten Bewertungen und Residuenanalyse.
     - Heatmaps der Differenzen zwischen Original- und rekonstruierten Bewertungen.
     - Korrektheit der Vorhersagen in einer binären Heatmap.
     - Beliebtheit von Filmen und Bewertungen pro Benutzer.
     - Zeitverlauf der abgegebenen Bewertungen pro Monat.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
6. **Zusätzliche Analysen**:
   - Rekonstruktion mit variierenden latenten Dimensionen (z. B. k=5, 10, 15, ...).
   - Untersuchung des Speicherverbrauchs und der Laufzeit für SVD.
   - Visualisierung latenter Dimensionen in 2D-Scatterplots.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
7. **3D-Visualisierung**:
   - Ein 3D-Plot zeigt den Zusammenhang zwischen latenten Dimensionen, Iterationen und RMSE.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
8. **Konfusionsmatrix**:
   - Es werden Konfusionsmatrizen erstellt, um die Vorhersagegenauigkeit für jede Bewertung (1–5) zu visualisieren.
alhamdam94's avatar
alhamdam94 committed

alhamdam94's avatar
alhamdam94 committed
9. **Long-Tail-Analyse**:
   - Untersuchung der Popularität von Filmen und des Bewertungsverhaltens von Benutzern, einschließlich einer Zeitreihenanalyse.

### Ausführung

- Führen Sie das Skript direkt aus:
  ```bash
  python bachelorarbeit_1.py
alhamdam94's avatar
alhamdam94 committed

## Funktionen

- **Datenbereinigung**:
  - Entfernen von Ausreißern
  - Umgang mit fehlenden Werten (z. B. Imputation)
  - Normalisierung oder Standardisierung von Daten

- **Explorative Datenanalyse (EDA)**:
  - Erstellung von Histogrammen, Boxplots und Korrelationsmatrizen
  - Identifikation von Datenmustern und Anomalien

- **Ergebnisvisualisierung**:
  - Diagramme zur Darstellung von Modellmetriken
  - Visualisierung der Vorhersagen

## Hinweise

alhamdam94's avatar
alhamdam94 committed
- **Datenquellen**: Stellen Sie sicher, dass die Daten korrekt formatiert sind.
alhamdam94's avatar
alhamdam94 committed
- **Leistungsoptimierung**: Für größere Datensätze können Sie parallele Verarbeitung oder GPU-Beschleunigung verwenden, falls erforderlich.
alhamdam94's avatar
alhamdam94 committed