Συσταδοποίηση Δεδομένων Κρασιού

Περιγραφή Dataset

To dataset περιέχει δεδομένα τα οποία είναι αποτελέσματα μιας χημικής ανάλυσης οίνων που καλλιεργούνται στην ίδια περιοχή στην Ιταλία, αλλά προέρχονται από τρεις διαφορετικές ποικιλίες.

Η ανάλυση προσδιόρισε τις ποσότητες 13 συστατικών που βρέθηκαν σε καθέναν από τους τρεις τύπους οίνων.

Παρόλα αυτά, έχουν αφαιρεθεί οι πληροφορίες σχετικά με την κατηγοριοποίηση των κρασιών για να μπορεί να χρησιμοποιηθεί σε περιπτώσεις unsupervised learning.

Αρχική Επεξεργασία

Εισαγωγή δεδομένων

library(readr)
wines <- read_csv("C:/Users/maria/Downloads/archive (2)/wine-clustering.csv")
## Rows: 178 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (13): Alcohol, Malic_Acid, Ash, Ash_Alcanity, Magnesium, Total_Phenols, ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(wines)
## # A tibble: 6 × 13
##   Alcohol Malic_Acid   Ash Ash_Alcanity Magnesium Total_Phenols Flavanoids
##     <dbl>      <dbl> <dbl>        <dbl>     <dbl>         <dbl>      <dbl>
## 1    14.2       1.71  2.43         15.6       127          2.8        3.06
## 2    13.2       1.78  2.14         11.2       100          2.65       2.76
## 3    13.2       2.36  2.67         18.6       101          2.8        3.24
## 4    14.4       1.95  2.5          16.8       113          3.85       3.49
## 5    13.2       2.59  2.87         21         118          2.8        2.69
## 6    14.2       1.76  2.45         15.2       112          3.27       3.39
## # ℹ 6 more variables: Nonflavanoid_Phenols <dbl>, Proanthocyanins <dbl>,
## #   Color_Intensity <dbl>, Hue <dbl>, OD280 <dbl>, Proline <dbl>

Το dataset περιλαμβάνει:

  • 178 καταγραφές
  • 13 μεταβλητές
  • χημικά χαρακτηριστικά κρασιού

Οι μεταβλητές του dataset αφορούν χημικά χαρακτηριστικά των κρασιών, όπως alcohol, malic acid, flavonoids κ.ά. Ορισμένες από αυτές αναμένεται να επηρεάζουν περισσότερο τον διαχωρισμό των ομάδων, καθώς σχετίζονται με τη σύσταση και την ποιότητα του κρασιού.

Κανονικοποίηση δεδομένων

Η συσταδοποίηση βασίζεται στις ευκλείδειες αποστάσεις και διαφορετικά εύρη τιμών θα επηρέαζαν δυσανάλογα τα αποτελέσματα. Για αυτό, κάνουμε κανονικοποίηση των δεδομένων ώστε όλες οι μεταβλητές να βρίσκονται στην ίδια κλίμακα.

wines_scaled <- scale(wines)

Ιεραρχική συσταδοποίηση

Υπολογίζουμε τις ευκλείδιες αποστάσεις μεταξύ όλων των παρατηρήσεων στο dataset.

distances = dist(wines_scaled, method = "euclidean")

Κάνουμε Ιεραρχική συσταδοποίηση

clusterWines = hclust(distances, method = "ward.D2")

Η μέθοδος ward χρησιμοποιείται για να υπολογίσουμε απόσταση μεταξύ των κέντρων των συστάδων.

Δενδρόγραμμα

plot(clusterWines)
rect.hclust(clusterWines, k = 3, border = "red")

Από το δενδρόγραμμα φαίνεται ότι τα δεδομένα μπορούν να χωριστούν σε τρεις βασικές ομάδες. Οι ομάδες αυτές ενώνονται σε μεγαλύτερο ύψος, κάτι που δείχνει ότι είναι αρκετά διαφορετικές μεταξύ τους. Αυτό σημαίνει ότι τα δεδομένα έχουν ξεκάθαρη δομή και μπορούν να ομαδοποιηθούν εύκολα.

Clustering με k-means

Χρησιμοποιούμε την εντολή set.seed(), καθώς ο αλγόριθμος K-means περιλαμβάνει τυχαία αρχικοποίηση και χωρίς αυτήν κάθε φορά που θα τρέχαμε τον κώδικα, τα αποτελέσματα θα ήταν διαφορετικά.

set.seed(003)

Ο αλγόριθμος K-means ξεκινά με τυχαία κέντρα και στη συνέχεια μετακινεί τα σημεία στις πιο κοντινές ομάδες, μέχρι να μην αλλάζουν τα αποτελέσματα. Η τιμή του k (3) επιλέχθηκε δοκιμαστικά, με βάση και την ομαδοποίηση που φάνηκε στο δενδρόγραμμα, ώστε οι ομάδες που προκύπτουν να έχουν νόημα.

clusterGroups = cutree(clusterWines, k = 3)
kmeans_result <- kmeans(wines_scaled, centers = 3)
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.5.3
## Loading required package: ggplot2
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
fviz_cluster(kmeans_result, data = wines_scaled)

Το διάγραμμα δείχνει τα δεδομένα χωρισμένα σε 3 ομάδες, όπως προέκυψαν από τον αλγόριθμο K-means. Τα περισσότερα σημεία βρίσκονται κοντά στην ομάδα τους και οι ομάδες φαίνονται σχετικά ξεχωριστές μεταξύ τους, κάτι που δείχνει ότι η συσταδοποίηση είναι ικανοποιητική.

Συμπεράσματα Ανάλυσης

Η ανάλυση έδειξε ότι τα δεδομένα κρασιών παρουσιάζουν σαφή ομαδοποίηση με βάση τα χημικά τους χαρακτηριστικά. Τόσο η ιεραρχική συσταδοποίηση όσο και η μέθοδος K-means παρήγαγαν παρόμοια αποτελέσματα, υποδεικνύοντας ότι υπάρχουν φυσικές ομάδες στα δεδομένα.