Spotifyデータの可視化から新しいアーティストを探す
概要
- あるアーティストが、どのようなアーティストから影響を受けているのかわかる可視化を作成。
- SpotifyAPIを使用し、データ収集。
- popularityを重回帰分析で再計算
- グラフ作成。
背景
最近、Oasisにドはまりしまして、Oasisの音楽からライブ映像、インタビュー等の動画を見漁っていいました。ボーカルのリアムや、リードギターのノエルは、他のバンドのことを結構ボロクソいうのですが、どうやら、The Beatlesのジョンレノンやポールマッカートニーのことを崇拝しているのが分かりました。ここからThe Beatlesに興味を持ち、音楽を聴いてドはまりしました。
このことから、自分が好きなアーティストが影響を受けたアーティストは、自分のどタイプである可能性が高いのでは?と仮定を立てました。そのため、それが気軽に探せる/可視化されている状態にはニーズがあると考えました。
やったこと
実装はここにあります。雑多に置きすぎてます。
データ収集
データ収集には、主にSpotifyAPIを使用しました。SearchAPIを用いて、ジャンルをロックに絞り、5000件取得します。それぞれのアーティストからとれる情報として、
を使用します。
SpotifyAPIのpopularityの問題
popularity
integer
The popularity of the artist. The value will be between 0 and 100, with 100 being the most popular. The artist's popularity is calculated from the popularity of all the artist's tracks.
The popularity of the track. The value will be between 0 and 100, with 100 being the most popular.
The popularity of a track is a value between 0 and 100, with 100 being the most popular. The popularity is calculated by algorithm and is based, in the most part, on the total number of plays the track has had and how recent those plays are.
Generally speaking, songs that are being played a lot now will have a higher popularity than songs that were played a lot in the past. Duplicate tracks (e.g. the same track from a single and an album) are rated independently. Artist and album popularity is derived mathematically from track popularity. Note: the popularity value may lag actual popularity by a few days: the value is not updated in real time.
とあるように、最近のアーティストは人気度が高く出る傾向があります。そのためSpotifyAPIをからとれる
- 1stアルバムをリリースした日
- followers
- popularity
を説明変数に、The 100 most popular rock bands of all timeの情報からわかる、世界でのそのアーティストの知名度を目的変数にするような重回帰分析を行いました。スクレイピングにはscrapyを使いました。
影響を受けていることの定義
The Songs That Bind(有料でごめんなさい)という論文によると、14歳の時に聞いた音楽が音楽の好みに最も重要な影響を与えるらしい。
そのため、あるアーティストがデビューした時を20代ぐらいだとすると、その10年前に流行っている音楽(その年代にデビューしたアーティスト)の影響を受けていると仮定できます。
(かなり怪しいですが、今回はこの定義で進みます)
そのため、アーティストAのデビュー日から、十数年後にデビューしていて、かつ関連アーティストに上がってくるようなアーティストBには、A→Bの方向に影響を与えている。と仮定し、有向辺を張ります。
グラフの定義
ノードは、上記で取得した5000件のアーティストおよび、それらの関連アーティストを、前節で紹介した人気度の閾値でフィルタリングしたものになります。また、エッジは先述した定義のまま、アーティストAのデビュー日から、十数年後にデビューしていて、かつ関連アーティストに上がってくるようなアーティストBへ辺を張ります。
グラフ描画アルゴリズム
KamadaKawai法で可視化を行いました。Pythonでの実装を載せておきます。(上手くいかないパターンがあるので、どこか間違っているかも)
可視化結果
ラベル無
The Beatlesを起点に距離1までラベル付け
The Beatlesを起点に距離2までラベル付け
考察
- 距離1までラベル付けの結果を見ると、Chuck BerryやWingsは、The Beatlesが影響を受けていることが読み取れ、実際に調べてみるとそうらしい(諸説あり)。
- Chuck BerryやWingsを知らなかったが、実際に聴いてみると、なんかそんな気がするし、結構自分の好みにもあっている気がする。
- 距離2までラベル付けの結果を見ると、結果にPaul McCartneyやJohn Lennon、George Harrisonなどが出てきていて、それはそう。(The Beatlesのメンバーなので)となった。一方で、デビュー日が20年以上差があるため、一個別のアーティストを介して繋がっている。ただ、こういうかんじで、好きなバンドの後継バンドもパターンも好みにマッチしているパターンが非常に多いので、「影響を受けたアーティストを探す」という文脈ではミスだが、「好みのアーティストを探す」という文脈では成功といえる。
感想
- SpotifyAPI、審査もいらないし、Documentかなり読みやすく、ブラウザからリクエストも送れてめちゃくちゃ体験よかったので一回遊んでみてはどうでしょうか。
Discussion