394 αναγνώσεις
394 αναγνώσεις

Μουσική & ML: Συγκεντρώνοντας στο Spotify Audio Features

με Aidar Gain7m2025/04/01
Read on Terminal Reader

Πολύ μακρύ; Να διαβασω

Εξερεύνησα πώς να χρησιμοποιήσω τη μηχανική εκμάθηση χωρίς επίβλεψη για να ομαδοποιήσω 5.000 τραγούδια σε λίστες αναπαραγωγής με νόημα χρησιμοποιώντας λειτουργίες ήχου Spotify. Συνδυάζοντας τεχνικές ομαδοποίησης όπως K-Means, PCA και εξωτερική επικύρωση από τα είδη Last.fm, αξιολόγησα την ποιότητα ομαδοποίησης με μετρήσεις όπως το Silhouette Score και το NMI—εξισορροπώντας τη στατιστική ευρωστία με τη μουσική αίσθηση.
featured image - Μουσική & ML: Συγκεντρώνοντας στο Spotify Audio Features
Aidar Gain HackerNoon profile picture
0-item


Εισαγωγή

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


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

Διακήρυξη προβλήματος

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


Για να αντιμετωπίσω αυτό, χρησιμοποίησα ένα σύνολο δεδομένων ~5.000 τραγουδιών με δυνατότητες ήχου του Spotify, όπως η χορευτικότητα, ο ρυθμός και η ενέργεια. Επιπλέον, ενσωμάτωσα δεδομένα API του Last.fm για να ανακτήσω πληροφορίες είδους, επιτρέποντας την εξωτερική επικύρωση της ποιότητας ομαδοποίησης.


Η αποστολή μας:

  • Συγκεντρώστε τραγούδια σε συνεκτικές λίστες αναπαραγωγής με βάση τα χαρακτηριστικά του ήχου.
  • Επιβεβαιώστε αυτές τις ομάδες έναντι των ειδών Last.fm για να εξασφαλίσετε την ποιότητα.
  • Συγκεντρώστε τραγούδια σε συνεκτικές λίστες αναπαραγωγής με βάση τα χαρακτηριστικά ήχου.
  • Επιβεβαιώστε αυτές τις ομάδες έναντι των ειδών Last.fm για να εξασφαλίσετε την ποιότητα.
  • Αρχική ματιά στα δεδομένα

    Πριν βυθιστώ στη μηχανική μάθηση, οραματίστηκα το σύνολο δεδομένων χρησιμοποιώντας βασικά χαρακτηριστικά. Παρακάτω είναι μια διασπορά τραγουδιών με βάση το tempo και το danceability:

    ΧρόνοςΔανεισμός

    Για παράδειγμα, το Lullaby του Brahms είναι εύκολα αναγνωρίσιμο στην περιοχή χαμηλού ρυθμού, χαμηλής χορευτικότητας, ενώ το The Real Slim Shady του Eminem εμφανίζεται στην περιοχή μεσαίου ρυθμού, υψηλής χορευτικότητας.


    Μεγάλη ΒουλήΤο πραγματικό Slim Shady (The Real Slim Shady)


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

    Get Track’s Audio Features API response sample

    Get Track’s Audio Features API response sample

    Μη εποπτευόμενη Ομαδοποίηση

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

    Σύγκλιση

    Ανταπόκριση

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


    Το παρακάτω είναι ένα παράδειγμα προβολής των δεδομένων μας σε δύο χαρακτηριστικά: duration_ms και tempo. Η αριστερή πλοκή εμφανίζει τα αρχικά δεδομένα. το δεξί δείχνει το αποτέλεσμα μετά την εφαρμογή δύο κλιμάκων - PowerTransformer και MinMaxScaler:


    Κωδικός duration_msΚωδικός > Κωδικός > Κωδικός

    Η κλίμακα κάνει τα χαρακτηριστικά συγκρίσιμα - τώρα η συσσώρευση κάνει περισσότερο νόημα

    Η κλίμακα καθιστά τα χαρακτηριστικά συγκρίσιμα - τώρα η συσσώρευση έχει περισσότερη σημασία


    Μείωση διαστάσεων με PCA

    Μείωση διαστάσεων με PCA

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


    Στην εικόνα, το PCA βρίσκει προβολές – όπως η ανάφλεξη ενός φλας σε ένα αντικείμενο 3D για να δημιουργηθεί μια σκιά 2D. Το φλας τοποθετείται έτσι ώστε η σκιά (προβολή) να διατηρεί όσο το δυνατόν περισσότερες λεπτομέρειες για το αρχικό αντικείμενο.


    Θα δοκιμάσουμε διαφορετικούς αριθμούς συστατικών και θα συγκρίνουμε τα αποτελέσματα.Στην περίπτωσή μας, θα δοκιμάσουμε 10 επιλογές.

    PCA projection

    PCA projection


    K-Με άλλα λόγια Συγκεντρώσεις

    K-Means είναι ένας δημοφιλής αλγόριθμος ομαδοποίησης που ομαδοποιεί δεδομένα σε έναν προκαθορισμένο αριθμό ομαδοποιήσεων (k).

    Μερικές φορές έχουμε επιχειρηματικούς περιορισμούς. Το σύνολο δεδομένων μας περιλαμβάνει περίπου 5.000 τραγούδια. Συνήθως, οι λίστες αναπαραγωγής στις υπηρεσίες streaming περιέχουν μεταξύ 20 και 250 τραγούδια.


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

    Καλύτερος συνδυασμός παραμέτρων

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

    Αυτή η πλοκή δείχνει βαθμολογίες σιλουέτας (x-άξονας) για διαφορετικούς συνδυασμούς συστατικών PCA (που αντιπροσωπεύονται από το μέγεθος του κύκλου), κλίμακες (χρώμα), και τον αριθμό των ομίλων (y-άξονας).Για να απλοποιήσουμε την επιλογή, θα πρέπει να επικεντρωθούμε στις επιλογές στην επάνω δεξιά περιοχή, όπως αυτό:

    Ο πρώτος ουσιαστικός συνδυασμός με την υψηλότερη βαθμολογία σιλουέτας χρησιμοποιεί την κλίμακα MinMax, 2 κύρια συστατικά και 6 συμπλέγματα. Ενώ 6 συμπλέγματα δεν ανταποκρίνονται στην επιχειρηματική μας απαίτηση να έχουμε περισσότερα από 20 συμπλέγματα, εξακολουθεί να αξίζει να εξεταστεί προσεκτικά.

    Αρχικό αποτέλεσμα ομαδοποίησης

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


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

    Αν θυμάστε, ανέφερα στη δήλωση προβλήματος ότι ένας από τους στόχους μου ήταν να διακρίνω ανάμεσα στο θανάσιμο μέταλλο και την κλασική μουσική – ειλικρινά, αυτό ήταν ένα τυχαίο παράδειγμα. Αλλά εκπληκτικά, αυτό το κριτήριο λειτουργεί αρκετά καλά για αυτή τη συγκεκριμένη ρύθμιση ομαδοποίησης. Ρίξτε μια πιο προσεκτική ματιά: οι ομάδες 0 και 4 αποτελούνται από περίπου το ήμισυ της κλασικής μουσικής, χωρίς σχεδόν κανένα θανάσιμο μέταλλο, ενώ οι ομάδες 2 και 3 είναι το αντίθετο, αντιπροσωπεύοντας σε μεγάλο βαθμό το θανάσιμο μέταλλο.


    Αυτό που είπε, παρατηρούμε ακόμα ένα μείγμα ειδών σε πολλούς ομίλους, μερικοί από τους οποίους δεν είναι μουσικά συμβατοί.


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

    Συγκεντρώσεις με εξωτερική επικύρωση

    Σε αυτή την ενότητα, θα χρησιμοποιήσουμε τις πληροφορίες για το είδος πιο εκτενώς. Αυτά τα δεδομένα λειτουργούν ως οι «ιδανικές ετικέτες» μας για την επικύρωση της ποιότητας συσσωμάτωσης. Φυσικά, δεν είναι το τέλειο κριτήριο ή η πιο εξελιγμένη προσέγγιση για τη δημιουργία λίστας αναπαραγωγής - αλλά για μένα προσωπικά, ως λάτρης της μουσικής, λειτουργεί καλά. Για παράδειγμα, συχνά προτιμώ να ακούω μουσική ειδικά για το είδος: hip-hop για κίνητρο, rock σε πάρτι ή κλασική κατά την εργασία.


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

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

    Κανονικοποιημένη αμοιβαία πληροφόρηση (NMI)

    Ομαλοποιημένη αμοιβαία πληροφόρηση (NMI)

    Η κανονικοποιημένη αμοιβαία πληροφόρηση (NMI) μετρά την ομοιότητα μεταξύ δύο ομαδοποιήσεων και βαθμολογεί μεταξύ 0 και 1, όπου:

    • 0 σημαίνει ότι δεν υπάρχει αλληλεπικάλυψη μεταξύ των αναθέσεων ομίλου και των αληθινών ετικετών.
    • 1 σημαίνει μια τέλεια αντιστοιχία με την πραγματική αλήθεια.
  • 0 σημαίνει ότι δεν υπάρχει επικάλυψη μεταξύ των αναθέσεων ομάδας και των αληθινών ετικετών.
  • 0 0
  • 1 σημαίνει μια τέλεια αντιστοιχία με τη γήινη αλήθεια.
  • 1


    Πριν προχωρήσουμε στην εύρεση της καλύτερης ρύθμισης ομαδοποίησης χρησιμοποιώντας το NMI, ας το αξιολογήσουμε σε μια γνωστή διαμόρφωση - εκείνη που προσδιορίσαμε νωρίτερα: MinMaxScaler, 2 συστατικά PCA και 6 ομαδοποιήσεις.

    Βλέπουμε ότι η βαθμολογία NMI για το n=6 είναι σημαντικά υψηλότερη από ό, τι για το n=2 (0,29 έναντι 0,18).n=6 Επόμενο άρθροn = 2

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


    Για αναφορά, παρακάτω είναι μια σύγκριση των βαθμών NMI σε διάφορες διαμορφώσεις συσσωμάτωσης:

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

    Συμπέρασμα

    Σε αυτό το έργο, διερεύνησα πώς η μηχανική μάθηση μπορεί να βοηθήσει στην ομαδοποίηση μουσικών κομμάτων σε ουσιαστικές ομάδες χρησιμοποιώντας μόνο λειτουργίες ήχου.Αρχίζοντας από βασικές τεχνικές μη εποπτευόμενης μάθησης όπως η κλιμάκωση, η PCA και τα K-Means, επικύρωσα τα αποτελέσματα χρησιμοποιώντας δεδομένα είδους πραγματικού κόσμου από το Last.fm.


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



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


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

    Trending Topics

    blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks