Κ-μέσα Clustering στο R με Παράδειγμα

Τι είναι Cluster ανάλυση?

Cluster η ανάλυση είναι μέρος του μη εποπτευόμενη μάθηση. Ένα σύμπλεγμα είναι μια ομάδα δεδομένων που μοιράζονται παρόμοια χαρακτηριστικά. Μπορούμε να πούμε ότι η ανάλυση ομαδοποίησης αφορά περισσότερο την ανακάλυψη παρά μια πρόβλεψη. Το μηχάνημα αναζητά ομοιότητα στα δεδομένα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε ανάλυση συμπλέγματος για την ακόλουθη εφαρμογή:

  • Τμηματοποίηση πελατών: Ψάχνει για ομοιότητα μεταξύ ομάδων πελατών
  • Ομαδοποίηση Χρηματιστηρίου: Μετοχές του Ομίλου με βάση τις αποδόσεις
  • Μειώστε τη διάσταση ενός συνόλου δεδομένων ομαδοποιώντας παρατηρήσεις με παρόμοιες τιμές

ClusterΗ ανάλυση δεν είναι πολύ δύσκολο να εφαρμοστεί και έχει νόημα και είναι χρήσιμη για τις επιχειρήσεις.

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

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

Στο παρακάτω γράφημα, σχεδιάζετε τη συνολική δαπάνη και την ηλικία των πελατών.

library(ggplot2)
df <- data.frame(age = c(18, 21, 22, 24, 26, 26, 27, 30, 31, 35, 39, 40, 41, 42, 44, 46, 47, 48, 49, 54),
    spend = c(10, 11, 22, 15, 12, 13, 14, 33, 39, 37, 44, 27, 29, 20, 28, 21, 30, 31, 23, 24)
)
ggplot(df, aes(x = age, y = spend)) +
    geom_point()

Cluster Ανάλυση

Ένα μοτίβο είναι ορατό σε αυτό το σημείο

  1. Κάτω αριστερά, μπορείτε να δείτε νέους με χαμηλότερη αγοραστική δύναμη
  2. Το ανώτερο-μεσαίο αντικατοπτρίζει άτομα με δουλειά που μπορούν να αντέξουν οικονομικά να ξοδέψουν περισσότερα
  3. Τέλος, άτομα μεγαλύτερης ηλικίας με χαμηλότερο προϋπολογισμό.

Cluster Ανάλυση

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

Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε το k-μέσα αλγόριθμος.

Αλγόριθμος K-means

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

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

K-means Αλγόριθμος

Ο αλγόριθμος λειτουργεί ως εξής:

  • Βήμα 1: Επιλέξτε ομάδες στο σχέδιο δυνατοτήτων τυχαία
  • Βήμα 2: Ελαχιστοποιήστε την απόσταση μεταξύ του κέντρου του συμπλέγματος και των διαφορετικών παρατηρήσεων (κεντροειδές). Καταλήγει σε ομάδες με παρατηρήσεις
  • Βήμα 3: Shift το αρχικό κέντρο στο μέσο όρο των συντεταγμένων μέσα σε μια ομάδα.
  • Βήμα 4: Ελαχιστοποιήστε την απόσταση σύμφωνα με τα νέα centroids. Δημιουργούνται νέα όρια. Έτσι, οι παρατηρήσεις θα μετακινούνται από τη μια ομάδα στην άλλη
  • Επαναλάβετε έως ότου καμία παρατήρηση δεν αλλάζει ομάδες

Το K-means παίρνει συνήθως την Ευκλείδεια απόσταση μεταξύ του χαρακτηριστικού και του χαρακτηριστικού:

K-means Αλγόριθμος

Διατίθενται διαφορετικά μέτρα, όπως η απόσταση του Μανχάταν ή η απόσταση Minlowski. Σημειώστε ότι, το K-mean επιστρέφει διαφορετικές ομάδες κάθε φορά που εκτελείτε τον αλγόριθμο. Θυμηθείτε ότι οι πρώτες αρχικές εικασίες είναι τυχαίες και υπολογίστε τις αποστάσεις έως ότου ο αλγόριθμος φτάσει σε ομοιογένεια εντός των ομάδων. Δηλαδή, το k-mean είναι πολύ ευαίσθητο στην πρώτη επιλογή, και εκτός εάν ο αριθμός των παρατηρήσεων και των ομάδων είναι μικρός, είναι σχεδόν αδύνατο να ληφθεί η ίδια ομαδοποίηση.

Επιλέξτε τον αριθμό των συμπλεγμάτων

Μια άλλη δυσκολία που βρέθηκε με το k-mean είναι η επιλογή του αριθμού των συστάδων. Μπορείτε να ορίσετε υψηλή τιμή , δηλαδή μεγάλο αριθμό ομάδων, για να βελτιώσετε τη σταθερότητα, αλλά μπορεί να καταλήξετε υπερπροσαρμογή των δεδομένων. Υπερπροσαρμογή σημαίνει ότι η απόδοση του μοντέλου μειώνεται σημαντικά για νέα δεδομένα που έρχονται. Το μηχάνημα έμαθε τις μικρές λεπτομέρειες του συνόλου δεδομένων και αγωνίζεται να γενικεύσει το συνολικό μοτίβο.

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

Επιλέξτε τον αριθμό των Clusters

με ίσο με τον αριθμό των παρατηρήσεων στο σύνολο δεδομένων.

Σε γενικές γραμμές, είναι ενδιαφέρον να ξοδεύετε χρόνο για να αναζητήσετε την καλύτερη αξία για να ταιριάζει με τις επιχειρηματικές ανάγκες.

Θα χρησιμοποιήσουμε το σύνολο δεδομένων Prices of Personal Computers για να εκτελέσουμε την ανάλυση ομαδοποίησης. Αυτό το σύνολο δεδομένων περιέχει 6259 παρατηρήσεις και 10 χαρακτηριστικά. Το σύνολο δεδομένων παρατηρεί την τιμή από το 1993 έως το 1995 486 προσωπικών υπολογιστών στις ΗΠΑ. Οι μεταβλητές είναι τιμή, ταχύτητα, ram, οθόνη, cd μεταξύ άλλων.

Θα προχωρήσετε ως εξής:

  • Εισαγωγή δεδομένων
  • Εκπαιδεύστε το μοντέλο
  • Αξιολογήστε το μοντέλο

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

Ο μέσος όρος K δεν είναι κατάλληλος για μεταβλητές παραγόντων επειδή βασίζεται στην απόσταση και οι διακριτές τιμές δεν επιστρέφουν σημαντικές τιμές. Μπορείτε να διαγράψετε τις τρεις κατηγορικές μεταβλητές στο σύνολο δεδομένων μας. Επιπλέον, δεν λείπουν τιμές σε αυτό το σύνολο δεδομένων.

library(dplyr)
PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/computers.csv"
df <- read.csv(PATH) %>%
select(-c(X, cd, multi, premium))
glimpse(df)

Παραγωγή

## Observations: 6, 259
## Variables: 7
## $ price < int > 1499, 1795, 1595, 1849, 3295, 3695, 1720, 1995, 2225, 2...
##$ speed < int > 25, 33, 25, 25, 33, 66, 25, 50, 50, 50, 33, 66, 50, 25, ...
##$ hd < int > 80, 85, 170, 170, 340, 340, 170, 85, 210, 210, 170, 210...
##$ ram < int > 4, 2, 4, 8, 16, 16, 4, 2, 8, 4, 8, 8, 4, 8, 8, 4, 2, 4, ...
##$ screen < int > 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, ...
##$ ads < int > 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, ...
## $ trend  <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...

Από τα συνοπτικά στατιστικά, μπορείτε να δείτε ότι τα δεδομένα έχουν μεγάλες τιμές. Μια καλή πρακτική με τον υπολογισμό του k μέσου όρου και της απόστασης είναι η επανακλιμάκωση των δεδομένων έτσι ώστε ο μέσος όρος να είναι ίσος με ένα και η τυπική απόκλιση ίση με μηδέν.

summary(df)

Παραγωγή:

##      price          speed              hd              ram        
##  Min.   : 949   Min.   : 25.00   Min.   :  80.0   Min.   : 2.000  
##  1st Qu.:1794   1st Qu.: 33.00   1st Qu.: 214.0   1st Qu.: 4.000  `
##  Median :2144   Median : 50.00   Median : 340.0   Median : 8.000  
##  Mean   :2220   Mean   : 52.01   Mean   : 416.6   Mean   : 8.287  
##  3rd Qu.:2595   3rd Qu.: 66.00   3rd Qu.: 528.0   3rd Qu.: 8.000  
##  Max.   :5399   Max.   :100.00   Max.   :2100.0   Max.   :32.000  
##      screen           ads            trend      
##  Min.   :14.00   Min.   : 39.0   Min.   : 1.00  
##  1st Qu.:14.00   1st Qu.:162.5   1st Qu.:10.00  
##  Median :14.00   Median :246.0   Median :16.00  
##  Mean   :14.61   Mean   :221.3   Mean   :15.93  
##  3rd Qu.:15.00   3rd Qu.:275.0   3rd Qu.:21.50  
##  Max.   :17.00   Max.   :339.0   Max.   :35.00

Επανακλιμακώνετε τις μεταβλητές με τη συνάρτηση scale() της βιβλιοθήκης dplyr. Ο μετασχηματισμός μειώνει τον αντίκτυπο των ακραίων τιμών και επιτρέπει τη σύγκριση μιας μοναδικής παρατήρησης έναντι του μέσου όρου. Εάν μια τυποποιημένη τιμή (ή Ζ-σκορ) είναι υψηλό, μπορείτε να είστε βέβαιοι ότι αυτή η παρατήρηση είναι όντως πάνω από τον μέσο όρο (μια μεγάλη βαθμολογία z σημαίνει ότι αυτό το σημείο απέχει πολύ από το μέσο όρο της τυπικής απόκλισης. Μια βαθμολογία z δύο υποδηλώνει ότι η τιμή είναι 2 τυπική Σημειώστε ότι η βαθμολογία z ακολουθεί μια κατανομή Gauss και είναι συμμετρική γύρω από τη μέση τιμή.

rescale_df <- df % > %
mutate(price_scal = scale(price),
    hd_scal = scale(hd),
    ram_scal = scale(ram),
    screen_scal = scale(screen),
    ads_scal = scale(ads),
    trend_scal = scale(trend)) % > %
select(-c(price, speed, hd, ram, screen, ads, trend))

Η βάση R έχει μια συνάρτηση για την εκτέλεση του k mean αλγόριθμου. Η βασική συνάρτηση του k mean είναι:

kmeans(df, k)
arguments:
-df: dataset used to run the algorithm
-k: Number of clusters

Εκπαιδεύστε το μοντέλο

Στο σχήμα τρία, αναφέρατε λεπτομερώς πώς λειτουργεί ο αλγόριθμος. Μπορείτε να δείτε κάθε βήμα γραφικά με το υπέροχο πακέτο κατασκευής από τον Yi Hui (επίσης δημιουργό του Knit για Rmarkdown). Το κινούμενο σχέδιο του πακέτου δεν είναι διαθέσιμο στη βιβλιοθήκη conda. Μπορείτε να χρησιμοποιήσετε τον άλλο τρόπο για να εγκαταστήσετε το πακέτο με install.packages ("animation"). Μπορείτε να ελέγξετε εάν το πακέτο είναι εγκατεστημένο στον φάκελο Anaconda.

install.packages("animation")

Αφού φορτώσετε τη βιβλιοθήκη, προσθέτετε .ani μετά το kmeans και R θα σχεδιάσει όλα τα βήματα. Για λόγους επεξήγησης, εκτελείτε τον αλγόριθμο μόνο με τις αναβαθμισμένες μεταβλητές hd και ram με τρία συμπλέγματα.

set.seed(2345)
library(animation)
kmeans.ani(rescale_df[2:3], 3)

Επεξήγηση κώδικα

  • kmeans.ani(rescale_df[2:3], 3): Επιλέξτε τις στήλες 2 και 3 του συνόλου δεδομένων rescale_df και εκτελέστε τον αλγόριθμο με k σετ στο 3. Σχεδιάστε την κινούμενη εικόνα.

Εκπαιδεύστε το μοντέλο

Εκπαιδεύστε το μοντέλο

Μπορείτε να ερμηνεύσετε το κινούμενο σχέδιο ως εξής:

  • Βήμα 1: Ο R επιλέγει τυχαία τρία σημεία
  • Βήμα 2: Υπολογίστε την Ευκλείδεια απόσταση και σχεδιάστε τα συμπλέγματα. Έχετε ένα σύμπλεγμα σε πράσινο χρώμα κάτω αριστερά, ένα μεγάλο σύμπλεγμα με μαύρο χρώμα στα δεξιά και ένα κόκκινο ανάμεσά τους.
  • Βήμα 3: Υπολογίστε το κέντρο, δηλαδή τον μέσο όρο των συστάδων
  • Επαναλάβετε μέχρι να μην αλλάξουν δεδομένα στο σύμπλεγμα

Ο αλγόριθμος συνέκλινε μετά από επτά επαναλήψεις. Μπορείτε να εκτελέσετε τον αλγόριθμο k-mean στο σύνολο δεδομένων μας με πέντε συμπλέγματα και να τον ονομάσετε pc_cluster.

pc_cluster <-kmeans(rescale_df, 5)
  • Η λίστα pc_cluster περιέχει επτά ενδιαφέροντα στοιχεία:
  • pc_cluster$cluster: Υποδεικνύει το σύμπλεγμα κάθε παρατήρησης
  • pc_cluster$centers: Τα κέντρα συμπλέγματος
  • pc_cluster$totss: Το συνολικό άθροισμα των τετραγώνων
  • pc_cluster$withinss: Μέσα στο άθροισμα του τετραγώνου. Ο αριθμός των στοιχείων που επιστρέφονται είναι ίσος με «k».
  • pc_cluster$tot.withinss: Άθροισμα των inss
  • pc_clusterbetweenss: Συνολικό άθροισμα τετραγώνου μείον Εντός αθροίσματος τετραγώνου
  • pc_cluster$size: Αριθμός παρατήρησης σε κάθε σύμπλεγμα

Θα χρησιμοποιήσετε το άθροισμα του εντός αθροίσματος του τετραγώνου (δηλ. tot.withinss) για να υπολογίσετε τον βέλτιστο αριθμό συστάδων k. Η εύρεση του k είναι πράγματι μια ουσιαστική εργασία.

Βέλτιστο k

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

Σε αυτό το σεμινάριο, βρίσκουμε αυτό το σημείο χρησιμοποιώντας το μέτρο ετερογένειας. Το Σύνολο εντός συστάδων άθροισμα τετραγώνων είναι το σύνολο των τετραγώνων στη λίστα απόδοση με kmean().

Μπορείτε να κατασκευάσετε το γράφημα του αγκώνα και να βρείτε το βέλτιστο k ως εξής:

  • Βήμα 1: Κατασκευάστε μια συνάρτηση για να υπολογίσετε το άθροισμα τετραγώνων εντός των συστάδων
  • Βήμα 2: Εκτελέστε τους χρόνους αλγορίθμου
  • Βήμα 3: Δημιουργήστε ένα πλαίσιο δεδομένων με τα αποτελέσματα του αλγορίθμου
  • Βήμα 4: Σχεδιάστε τα αποτελέσματα

Βήμα 1) Κατασκευάστε μια συνάρτηση για να υπολογίσετε το συνολικό άθροισμα τετραγώνων εντός των συστάδων

Δημιουργείτε τη συνάρτηση που εκτελεί τον αλγόριθμο k-mean και αποθηκεύετε το σύνολο μέσα σε συμπλέγματα άθροισμα τετραγώνων

kmean_withinss <- function(k) {
    cluster <- kmeans(rescale_df, k)
    return (cluster$tot.withinss)
}

Επεξήγηση κώδικα

  • function(k): Ορισμός του αριθμού των ορισμάτων στη συνάρτηση
  • kmeans(rescale_df, k): Εκτελέστε τον αλγόριθμο k φορές
  • return(cluster$tot.withinss): Αποθηκεύστε το συνολικό άθροισμα τετραγώνων εντός των συστάδων

Μπορείτε να δοκιμάσετε τη συνάρτηση με 2.

Παραγωγή:

## Try with 2 cluster
kmean_withinss(2)

Παραγωγή:

## [1] 27087.07

Βήμα 2) Εκτελέστε τον αλγόριθμο n φορές

Θα χρησιμοποιήσετε τη συνάρτηση sapply() για να εκτελέσετε τον αλγόριθμο σε μια περιοχή k. Αυτή η τεχνική είναι πιο γρήγορη από τη δημιουργία βρόχου και αποθήκευση της τιμής.

# Set maximum cluster 
max_k <-20 
# Run algorithm over a range of k 
wss <- sapply(2:max_k, kmean_withinss)

Επεξήγηση κώδικα

  • max_k <-20: Ορίστε έναν μέγιστο αριθμό σε 20
  • sapply(2:max_k, kmean_withinss): Εκτελέστε τη συνάρτηση kmean_withinss() σε ένα εύρος 2:max_k, δηλαδή 2 έως 20.

Βήμα 3) Δημιουργήστε ένα πλαίσιο δεδομένων με τα αποτελέσματα του αλγορίθμου

Μετά τη δημιουργία και τη δοκιμή της λειτουργίας μας, μπορείτε να εκτελέσετε τον αλγόριθμο k-mean σε ένα εύρος από 2 έως 20, να αποθηκεύσετε τις τιμές tot.withinss.

# Create a data frame to plot the graph
elbow <-data.frame(2:max_k, wss)

Επεξήγηση κώδικα

  • data.frame(2:max_k, wss): Δημιουργήστε ένα πλαίσιο δεδομένων με την έξοδο του αποθηκευτικού αλγορίθμου στο wss

Βήμα 4) Σχεδιάστε τα αποτελέσματα

Σχεδιάζετε το γράφημα για να οπτικοποιήσετε πού βρίσκεται το σημείο του αγκώνα

# Plot the graph with gglop
ggplot(elbow, aes(x = X2.max_k, y = wss)) +
    geom_point() +
    geom_line() +
    scale_x_continuous(breaks = seq(1, 20, by = 1))

Βέλτιστο k

Από το γράφημα, μπορείτε να δείτε το βέλτιστο k είναι επτά, όπου η καμπύλη αρχίζει να έχει φθίνουσα απόδοση.

Μόλις έχετε το βέλτιστο k, εκτελείτε ξανά τον αλγόριθμο με k ίσο με 7 και αξιολογείτε τα συμπλέγματα.

Εξετάζοντας το σύμπλεγμα

pc_cluster_2 <-kmeans(rescale_df, 7)

Όπως αναφέρθηκε προηγουμένως, μπορείτε να έχετε πρόσβαση στις υπόλοιπες ενδιαφέρουσες πληροφορίες στη λίστα που επιστρέφεται από την kmean().

pc_cluster_2$cluster
pc_cluster_2$centers
pc_cluster_2$size

Το μέρος της αξιολόγησης είναι υποκειμενικό και βασίζεται στη χρήση του αλγορίθμου. Στόχος μας εδώ είναι να συγκεντρώσουμε υπολογιστή με παρόμοια χαρακτηριστικά. Ένας υπολογιστής μπορεί να κάνει τη δουλειά με το χέρι και να ομαδοποιήσει τον υπολογιστή με βάση την τεχνογνωσία του. Ωστόσο, η διαδικασία θα πάρει πολύ χρόνο και θα είναι επιρρεπής σε σφάλματα. Ο αλγόριθμος K-mean μπορεί να προετοιμάσει το πεδίο για αυτόν/αυτήν προτείνοντας συμπλέγματα.

Ως προηγούμενη αξιολόγηση, μπορείτε να εξετάσετε το μέγεθος των συμπλεγμάτων.

pc_cluster_2$size

Παραγωγή:

## [1] 608 1596 1231  580 1003  699  542

Το πρώτο σύμπλεγμα αποτελείται από 608 παρατηρήσεις, ενώ το μικρότερο σύμπλεγμα, το νούμερο 4, έχει μόνο 580 υπολογιστές. Ίσως είναι καλό να υπάρχει ομοιογένεια μεταξύ των συστάδων, εάν όχι, μπορεί να απαιτείται πιο λεπτή προετοιμασία δεδομένων.

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

center <-pc_cluster_2$centers
center

Παραγωγή:

##   price_scal    hd_scal     ram_scal screen_scal   ads_scal trend_scal
## 1 -0.6372457 -0.7097995 -0.691520682  -0.4401632  0.6780366 -0.3379751
## 2 -0.1323863  0.6299541  0.004786730   2.6419582 -0.8894946  1.2673184
## 3  0.8745816  0.2574164  0.513105797  -0.2003237  0.6734261 -0.3300536
## 4  1.0912296 -0.2401936  0.006526723   2.6419582  0.4704301 -0.4132057
## 5 -0.8155183  0.2814882 -0.307621003  -0.3205176 -0.9052979  1.2177279
## 6  0.8830191  2.1019454  2.168706085   0.4492922 -0.9035248  1.2069855
## 7  0.2215678 -0.7132577 -0.318050275  -0.3878782 -1.3206229 -1.5490909

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

Τα προεπιλεγμένα χρώματα του ggplot πρέπει να αλλάξουν με τη βιβλιοθήκη RColorBrewer. Μπορείτε να χρησιμοποιήσετε το conda βιβλιοθήκη και τον κωδικό για εκκίνηση στο τερματικό:

conda install -cr r-rcolorbrewer

Για να δημιουργήσετε έναν χάρτη θερμότητας, ακολουθήστε τρία βήματα:

  • Δημιουργήστε ένα πλαίσιο δεδομένων με τις τιμές του κέντρου και δημιουργήστε μια μεταβλητή με τον αριθμό του συμπλέγματος
  • Αναδιαμορφώστε τα δεδομένα με τη συνάρτηση collect() της βιβλιοθήκης tidyr. Θέλετε να μετατρέψετε δεδομένα από ευρεία σε μεγάλη.
  • Δημιουργήστε την παλέτα των χρωμάτων με χρώμαRampΛειτουργία Palette().

Βήμα 1) Δημιουργήστε ένα πλαίσιο δεδομένων

Ας δημιουργήσουμε το σύνολο δεδομένων ανασχηματισμού

library(tidyr)

# create dataset with the cluster number

cluster <- c(1: 7)
center_df <- data.frame(cluster, center)

# Reshape the data

center_reshape <- gather(center_df, features, values, price_scal: trend_scal)
head(center_reshape)

Παραγωγή:

##   cluster   features     values
## 1       1 price_scal -0.6372457
## 2       2 price_scal -0.1323863
## 3       3 price_scal  0.8745816
## 4       4 price_scal  1.0912296
## 5       5 price_scal -0.8155183
## 6       6 price_scal  0.8830191		

Βήμα 2) Αναδιαμορφώστε τα δεδομένα

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

library(RColorBrewer)
# Create the palette
hm.palette <-colorRampPalette(rev(brewer.pal(10, 'RdYlGn')),space='Lab')

Βήμα 3) Οραματιστείτε

Μπορείτε να σχεδιάσετε το γράφημα και να δείτε πώς μοιάζουν τα συμπλέγματα.

# Plot the heat map
ggplot(data = center_reshape, aes(x = features, y = cluster, fill = values)) +
    scale_y_continuous(breaks = seq(1, 7, by = 1)) +
    geom_tile() +
    coord_equal() +
    scale_fill_gradientn(colours = hm.palette(90)) +
    theme_classic()

Εξετάζοντας το Cluster

Περίληψη

Μπορούμε να συνοψίσουμε τον αλγόριθμο k-mean στον παρακάτω πίνακα

Πακέτο Σκοπός Λειτουργία Διαφωνία
βάση Τρένο k-μέσο kmeans () df, k
Σύμπλεγμα πρόσβασης kmeans()$cluster
Cluster κέντρα kmeans()$centers
Συστάδα μεγεθών kmeans()$μέγεθος