Makine Öğrenmesi

Kendi Spotify verilerinizi kullanan makine öğrenimi ve tavsiye sistemleri

Veri bilimiyle Spotify önerileri oluşturma

Giriş

Spotify’ı günlük olarak kullanan biri olarak kendi müzik verilerinizle hangi analizleri yapabileceğinizi merak ediyor olabilirsiniz. Spotify, hem günlük miksler hem de parça radyoları yoluyla parçalar önermekte harika bir iş çıkarıyor, ancak buna benzer bir şeyi kendimiz nasıl oluşturabiliriz? Buradaki amaç, favori çalma listelerindeki parçalara göre yeni parçalar önermek için makine öğrenimi ve tavsiye sistemi tekniklerini kullanmaktır.
Bu makale, bu projeye daha yüksek düzeyde bir genel bakış sağlayacaktır.

Spotify Verisi

Spotify API’ye erişim

Müzik verilerimizi kullanmaya başlamak için önce Spotify API’ye erişmemiz gerekiyor:

  1. Geliştiriciler için Spotify hesabı oluşturun (developer.spotify.com)
  2.  Kontrol panelinden bir proje oluşturun (API erişimi için gereklidir)
  3. İstemci kimliğini, istemci sırrını alın ve yeniden yönlendirme URI’sini ayarlayın
  4. API belgelerini inceleyin (developer.spotify.com/documentation/general/guides)

Müzik Verisi

Geliştirici hesabı kurulduktan sonra, müzik verilerini almak için API’ye erişebiliriz. Bunun için spotipy Python paketini kullanabiliriz.

 

 

with open("spotify/spotify_details.yml", 'r') as stream:  
    spotify_details = yaml.safe_load(stream)# https://developer.spotify.com/web-api/using-scopes/
scope = "user-library-read user-follow-read user-top-read playlist-read-private" sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
    client_id=spotify_details['client_id'],
    client_secret=spotify_details['client_secret'],
    redirect_uri=spotify_details['redirect_uri'],    
    scope=scope,)
)

 

Artık Spotify kitaplığımızdaki çeşitli kaynaklardan veri çekebiliriz. Sp sınıfı bunu kapsayan sp.current_user_playlists () ve sp.current_user_top_tracks () gibi fonksiyınlara sahiptir. Bu API çağrılarından benzersiz kimlik, ad, süre ve türlerin yanı sıra ilişkili sanatçı, albüm ve çalma listesi özellikleri gibi parça ayrıntılarını almamız gerekir. Analiz kolaylığı için bunları pandas veri çerçeveleri olarak kaydedebilirsiniz.
Spotify, bir parça için ses özelliklerini de sağlayabilir. Bunlar, analiz için yararlı olan, ancak özellikle geleneksel makine öğrenimi yöntemleri için özellikler olarak kullanılan sayısal değerlerdir (çoğunlukla 0 ile 1 arasında normalleştirilmiştir).

 

Öneri Sistemleri

Makine öğrenmesi

Yukarıdaki tablo veri setiyle eğitim setindeki şarkıları 1-10 arasında derecelendirerek klasik bir regresyon problemi olarak veya en sevdiğimiz şarkılara benzer parçalar önermeye çalışarak bir sınıflandırma problemi olarak formüle etmek oldukça basittir. Burada veri sızıntısını önlemek için trenden yinelenen yol kimliklerini kaldırmayı ve veri kümelerini test etmeyi unutmamak gerekiyor.

Bununla birlikte, yukarıdaki yaklaşım, etiketlemeyi sağlamak için hem özellik mühendisliğine hem de kullanıcılara büyük ölçüde bağlıdır. Bir kullanıcının yeni bir hesabı olduğunda veya herhangi bir derecelendirme sağlamadığında hem yanlış etiketleme hatalarından hem de soğuk başlatma sorunundan muzdariptir ve bu nedenle bunun yerine genellikle tavsiye sistemi yaklaşımları kullanılır.

Popülerlik Önericisi

Bir popülerlik önericisi, şarkıları kullanıcının tercihlerine bakılmaksızın popülerliğine göre sıralı olarak önerir. Bu durum popülerlik metriğini belirlemek için kullanılan metodolojiye bağlıdır (genellikle zamanın bazı işlevleri, kullanıcı etkileşimleri ve kullanıcı derecelendirmeleri vb).

Kullanıcı etkinliğini hesaba katmadığı için, yalnızca popülerliğe göre önermek parça önermenin kötü bir yoludur. Bununla birlikte daha sonra göreceğimiz gibi, çeşitlilik için karıştırmak ve cold-start probleminden kaçınmak için iyi bir yöntemdir.

 

İçerik Tabanlı Önerici

İçeriğe dayalı bir önerici, benzer öğeleri önermek için kullanıcının etkileşimde bulunduğu öğelerdeki özelliklerden yararlanır. Burada popüler TF-IDF yöntemi, yapılandırılmamış metni (türlerin unigramları ve bigramları ve şarkı / sanatçı / albüm / çalma listesi adı) seyrek bir matrise dönüştürmek için kullanılır. Kullanıcı vektörü ile ilk matris (tüm kullanıcılar) arasındaki kosinüs benzerliği, yeni izler önermek için bir ölçü verir.

 

İşbirliğine Dayalı Öneri Aracı

İşbirliğine dayalı bir öneri, bellek tabanlı (geçmiş kullanıcı etkileşimlerine dayalı olarak) veya model tabanlı (örneğin, kümeleme) olabilir. Burada bir öğe × kullanıcı matrisi daha sonra benzer kullanıcıların etkileşimlerine dayalı olarak kullanıcılara öğe önermek için kullanılır. Kullanıcı grubu çok küçükse veya etkileşim sayısı çok düşükse, işbirlikçi yaklaşım seyreklik sorunundan zarar görebilir.

Hibrit Önerici

Karma bir önerici, içeriğe dayalı ve işbirliğine dayalı yaklaşımları birleştirir ve birçok çalışmada daha iyi performans gösterdiği gösterilmiştir. Yüksek varyansı önler ve çeşitliliğe ve ağırlıklandırmaya (ör. Tür ağırlıklandırması) olanak tanır. Melez + popülerlik önerisi vermek için popülerlik yaklaşımını da dahil edebiliriz.

 

Umarım yeni playlistinizden keyif alırsınız.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Close