目次


NBAにおけるソーシャル・メディアの力、影響、実績, 第 1 回

データ・サイエンスと機械学習を使用して、チームの評価額と観客動員数の関係を調査する

Python、pandas、そして少々の R

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: NBAにおけるソーシャル・メディアの力、影響、実績, 第 1 回

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:NBAにおけるソーシャル・メディアの力、影響、実績, 第 1 回

このシリーズの続きに乞うご期待。

はじめに

このチュートリアル・シリーズで、Python、pandas、Jupyter Notebook と少々の R を使用して、ソーシャル・メディアが NBA に与える影響を分析する方法を学んでください。この第 1 回では NBA のチームを中心として、データ・サイエンスと機械学習の基礎を説明します。第 2 回では、個々の NBA プレイヤーに注目します。

データ・サイエンス、機械学習、AI とは何か

データ・サイエンス、機械学習、人工知能という言葉には、かなりの混乱があります。この 3 つは互いに置き換えられる言葉として使われることもよくありますが、それは大まかなレベルで使われる場合に限られます。

  • データ・サイエンスとは、データを科学的に捉えるという、考え方の視点のことです。
  • 機械学習とは、明示的に学習するよう指示することなく、コンピューターに学習させる手法を指します。
  • 人工知能とは、機械が提示する知能を意味します (機械学習は、AI 手法の一例です。AI 手法の別の例としては、最適化が挙げられます)。

実際の機械学習での 80:20 の法則

見過ごされがちな部分ですが、機械学習には 80:20 の法則があります。これは、作業時間の約 80 パーセントはデータを取得して処理するために費やされ、データを分析する、データをモデル化する、予測を出すといった面白い部分に残りの 20 パーセントが充てられるという法則です。

図 1. 実際の機械学習での 80:20 の法則
実際の機械学習を示す画像
実際の機械学習を示す画像

データ処理に関する潜在的な問題として、まずデータを取得しなければならないことがあります。一般公開されているデータ・セットを使用して実験することと、インターネットをスクレイピングし、API を呼び出し、使用可能な形でデータを取得することとは、まったく異なります。これらの問題に対処したとしても、さらに難しい問題が待っています。それは、デ゙ータを本番環境に取り込むことです。

図 2. フルスタックのデータ・サイエンス
フルスタックのデータ・サイエンスを示す画像
フルスタックのデータ・サイエンスを示す画像

当然ながら、このフルスタックの中で重視されるのは、機械学習とそのモデル化に必要なスキル、つまり応用数学、分野の専門知識、そしてツールの知識です。本番環境に機械学習システムをデプロイすることはまた別の問題ですが、機械学習モデルを作成してそれを本番環境にデプロイする皆さんを励ますために、このチュートリアル・シリーズではデプロイメントについても大まかに取り上げます。

機械学習とは何か

データ・サイエンスの全体像から機械学習に焦点を絞ると、そこには階層があります。最上位にあるのは教師付き学習と教師なし学習です。教師付き学習には、分類問題と回帰問題という 2 つのタイプがあります。回帰問題では、ラベル付きのデータからなるトレーニング・セットを使用します。

回帰問題タイプの教師付き機械学習で解決する問題は、例えば過去の販売データから将来の家の価格を予測するといったものです。分類タイプの教師付き機械学習では、画像の履歴リポジトリーを使用して画像の中のオブジェクト (自動車、家、形状など) を分類するといった問題を解決します。

一方、教師なし機械学習では、ラベルが付けられていないデータからモデルを作成する必要があります。この場合、正しい答えは既知となっていないので、発見しなければなりません。教師なし機械学習の一般的な例は、クラスタリングです。クラスタリングでは、例えば共通項を持つ NBA プレイヤーのグループを明らかにして、それらのクラスターに手作業でラベル (高得点者、優秀リバウンダーなど) を付けます。

具体的な問題: ソーシャル・メディアの影響と NBA との間には、どのような関係があるのか

基本を押さえたところで、ここからは次の質問について詳しく探っていきます。

  • 個々のプレイヤーの成績はチームの勝利に影響するか?
  • 試合出場中の成績とソーシャル・メディアの影響との間には相関性があるか?
  • ソーシャル・メディアへのエンゲージメントと Wikipedia 上でのプレイヤーの人気度には相関性があるか?
  • フォロワーの数とエンゲージメントは、Wikipedia 上でのプレイヤーの人気度を予測する有効な判断材料になるか?
  • 年俸と試合出場中の成績との間には相関性があるか?
  • 年俸とソーシャル・メディアでの実績との間には相関性があるか?
  • 試合に勝つと、直接試合を見に来るファンの数が増えるか?
  • チームの評価額を左右する要因は何か?観客動員数か?地元の不動産市場か?

以上のような質問に答えるには、以下のカテゴリーのデータを取得する必要があります。

  • Wikipedia での人気度
  • Twitter でのエンゲージメント
  • アリーナの入場者数
  • NBA の成績データ
  • NBA の年俸データ
図 3. NBA データ・ソース
NBA データ・ソースを示す画像
NBA データ・ソースを示す画像

問題を解決するための作業の 80 パーセントに取り組む: データの収集

上述のデータを収集するのは、ソフトウェア・エンジニアリングの手強い問題です。すべてのデータを収集するための最初のステップとして、まずは、どこから着手するかを見極めなければなりません。このチュートリアルの場合、出発点としてふさわしいのは、2016 年から 2017 年までの NBA シーズンに出場した全プレイヤーを収集することでしょう。

データを収集する方法に関して参考となる要点を説明すると、手作業で簡単にデータを収集できるとしたら (例えば、Web サイトからデータをダウンロードして、Excel でデータをクリーンアップするなど)、この手作業による方法がデータ・サイエンス問題を解決するのに妥当な出発点となります。データ・ソースごとにデータを収集して手作業でクリーンアップするのに 2、3 時間かかるようであれば、おそらく問題を解決するためのコードを作成するのが最善の方法です。

幸い、最初のデータ・ソースは、このリンク先の Basketball Reference から CSV ファイルをダウンロードするだけで収集できます。最初のデータ収集が完了したので、pandas と Jupyter Notebook を使用する方法を簡単に説明しておきます。コードを実行する前に、以下の作業を行う必要があります。

  1. 仮想環境 (Python 3.6 ベース) を作成します。
  2. このチュートリアルで使用するパッケージ (pandas と Jupyter Notebook) をインストールします。

パッケージをインストールして更新するパターンは共通しているので、以下に示すように、これらの処理を 1 つの Makefile にまとめました。

リスト 1. Makefile の内容

setup:
	mkdir -p ~/.socialpowernba && python3 -m venv ~/.socialpowernba

install:
	pip install -r requirements.txt

プロジェクトでの作業を開始するには、make setup && make install を実行します。

もう 1 つの別の巧妙な手法として、別名の作成があります。別名を作成しておけば、特定のプロジェクトで作業する際に、cd でそのプロジェクトに移動すると自動的に virtualenv が提供されます。この別名を使用した zshrc ファイルは以下のような内容になります。

alias nbatop="cd ~/src/socialpowernba && source ~/.socialpowernba/bin/activate"

仮想環境を起動するために、nbatop と入力します。cd でカレント・ディレクトリーを checkout に変更して、virtualenv を起動します。

ダウンロードしたデータ・セット、または GitHub リポジトリーから入手したファイルを調査するには、以下の手順に従います。

まず、Jupyter Notebook を起動するために Jupyter notebook を実行します。このコマンドを実行すると、Web ブラウザーが起動するので、そこで既存のノートブックを調べたり、新しいノートブックを作成したりできます。

GitHub リポジトリー内のファイルを使用する場合は、basketball_reference.ipynb を見つけます。この単純なノートブックの中で、データを調べることができます。

Web 上のメニューを使用して新しいノートブックを作成することも、GitHub リポジトリー内にある basketball_reference という名前のノートブックをロードすることもできます。初期の検証と調査を行うために、pandas データ・フレームに CSV ファイルをロードします。pandas に CSV ファイルをロードするのは簡単ですが、2 つの注意事項があります。

  • CSV ファイル内の列には列名が設定されていなければなりません。
  • 各列の行は同じ長さでなければなりません。

リスト 2 に、pandas にファイルをロードする方法を示します。

リスト 2. Jupyter Notebook バスケットボール・リファレンスの調査

import pandas as pd
nba = pd.read_csv("../data/nba_2017_br.csv")
nba.describe()

以下の図に、データをロードした結果を示します。pandas データ・フレームワークに対して describe 関数を呼び出すことにより、列の数などの記述統計が表示されます。以下に示されているように、データには 27 の列と、各列の中央値 (「50%」列) が含まれています。現時点で、作成した Jupyter Notebook をいろいろと操作して、どのような洞察を観察できるかを確かめることをお勧めします。pandas の機能について詳しく調べるには、このリンク先にある公式の pandas チュートリアル・ページを参照してください。

図 4. NBA データ・セットのロードと記述
NBA データ・セットのロードと記述を示す画像
NBA データ・セットのロードと記述を示す画像

このデータ・セットには 1 つの欠点があります。それは、1 つの統計によって特定のプレイヤーのオフェンスとディフェンスの成績にランクを付ける明確な手段がないことです。1 つの統計だけを基に、NBA プレイヤーにランクを付ける方法はいくつかあります。例えば、FiveThirtyEight Web サイトには、CARMELO ランキング・システムがあります。ESPN の Real Plus-Minus では、勝利に対する各プレイヤーの貢献も出力されます。NBA による単一数値の統計は、PIE (Player Impact Estimate) と呼ばれています。

ESPN と NBA の両方の Web サイトからデータを取得するとなると、少々難易度が高くなります。その場合の手法の 1 つは、Scrapy などのツールを使って Web サイトをスクレイピングすることですが、このチュートリアルで使用する手法は、それよりもわずかに単純化されたものです。この例の場合、Web サイトのデータを切り取って Excel に貼り付け、手作業でデータをクリーンアップしてから CSV ファイルとして保存したほうが、コードを作成するよりも時間がかかりません。後で大掛かりなプロジェクトになったとしたら、この手法は使えなくなるはずですが、このチュートリアルにはうってつけのソリューションです。データ・サイエンスに関する厄介な問題に取り組む際に覚えておくべき重要な秘訣は、細かいところに深く踏み込み過ぎずに、プロジェクトを迅速に進展させ続けることです。

データ・ソースを取得してクリーンアップする仕組みを完璧なものにするために多くの時間を費やした挙句、そのデータが作成しようとしているモデルには役に立たないことがわかるという可能性もあります

以下の図に、NBA PIE データ・セットを示します。このデータに含まれているプレイヤーの数は、Real Plus-Minus と同じく 486 です。つまり行数は 486 となっています。ESPN からデータを取得するプロセスも、上述したプロセスと同様です。考慮すべき他のデータには、年俸とスポンサー収入もあります。年俸の情報は ESPN から入手できます。スポンサー収入データについては、Forbes から、そのサブセットを入手できます。これらのデータ・ソースは両方とも GitHub プロジェクトに含まれています。

図 5. NBA PIE データ・セット
NBA PIE データ・セットを示す画像
NBA PIE データ・セットを示す画像

表 1 に、データ・ソースの名前と場所を示してあります。各種のデータ・ソースから、多数の項目を迅速に取得できます。

表 1. NBA データ・ソース
データ・ソースファイル名行数要約:
Basketball-Referencenba_2017_attendance.csv30要約: スタジアムの観客数
Forbesnba_2017_endorsements.csv8要約: トップ・プレイヤー
Forbesnba_2017_team_valuations.csv30要約: 全チーム
ESPNnba_2017_salary.csv450要約: 大半のプレイヤー
NBAnba_2017_pie.csv468要約: 全プレイヤー
ESPNnba_2017_real_plus_minus.csv468要約: 全プレイヤー
Basketball-Referencenba_2017_br.csv468要約: 全プレイヤー
FiveThirtyEightnba_2017_elo.csv30要約: チームのランク

このすべてのデータをダウンロードして統一したデータ・セットに変換するためには、まだ大量の作業を行わなければなりません。ここまでのデータ収集は簡単でしたが、この先には長い道のりが待っています。データの形状を調べると、手始めにトップ 8 のプレイヤーに対するスポンサー収入データを取って、そこからパターンを引き出すのが良さそうです。けれどもその前に、NBA チームの評価額を調べます。その結果から、それぞれのプレイヤーが NBA フランチャイズにどのような影響を及ぼしているのかを判断できるはずです。

NBA でのチームの評価額を調査する

何よりもまず必要な作業は、新しい Jupyter Notebook を作成することですが、皆さんにとって幸運なことに、必要な Jupyter Notebook はすでに作成されています。この作成済みの exploring_team_valuation_nba という名前のノートブックは、GitHub リポジトリー内にあります。

次に、Jupyter Notebook 内でデータを調査するために一般的に使用される共通ライブラリーのセットをインポートします。

リスト 3. 一般的な Jupyter Notebook の初期インポート

import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import seaborn as sns
color = sns.color_palette()
%matplotlib inline

次に必要な作業は、データ・ソースごとに pandas データ・フレームワークを作成することです。

リスト 4. ソースごとのデータ・フレームワークを作成する

attendance_df = pd.read_csv("../data/nba_2017_attendance.csv")
endorsement_df = pd.read_csv("../data/nba_2017_endorsements.csv")
valuations_df = pd.read_csv("../data/nba_2017_team_valuations.csv")
salary_df = pd.read_csv("../data/nba_2017_salary.csv")
pie_df = pd.read_csv("../data/nba_2017_pie.csv")
plus_minus_df = pd.read_csv("../data/nba_2017_real_plus_minus.csv")
br_stats_df = pd.read_csv("../data/nba_2017_br.csv")
elo_df = pd.read_csv("../data/nba_2017_elo.csv")

多数のデータ・ソースを扱う際に役立つ手法は、各データ・フレームの最初の数行が表示されるようにすることです。このようにすると、以下の図に示されているような表示内容になります。

図 6. スポンサー収入データ・フレームのセクション A
スポンサー収入データ・フレームのセクション A を示す画像
スポンサー収入データ・フレームのセクション A を示す画像
図 7. スポンサー収入データ・フレームのセクション B
スポンサー収入データ・フレームのセクション B を示す画像
スポンサー収入データ・フレームのセクション B を示す画像

次は、チームの評価額データを観客動員数のデータとマージしてから、グラフを作成します。リスト 5 に、pandas データ・フレームをマージするためのコードを記載します。

リスト 5. pandas データ・フレームをマージする

attendance_valuation_df = attendance_df.merge(valuations_df, how="inner", on="TEAM")
attendance_valuation_df.head()

以下の図に、上記のマージ処理による出力を示します。

図 8. 観客動員数と評価額のデータをマージしたデータ・フレームの先頭部分
観客動員数と評価額のデータをマージしたデータ・フレームの先頭部分を示す画像
観客動員数と評価額のデータをマージしたデータ・フレームの先頭部分を示す画像

マージしたデータの概要をつかむために、いくつかの簡単な視覚化を行います。そのための最初のステップとして、ノートブックに幅を広くしたグラフを表示するよう指示してから、Seaborne pairplot を実行します。

リスト 6. Seaborne pairplot

from IPython.core.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>"))
sns.pairplot(attendance_valuation_df, hue="TEAM")

描画されたグラフを見ると、平均観客動員数とプレイヤーの評価額には関係があることがわかります。この 2 つの特徴の間には、ポイントが形成する、ほぼ真っすぐな線によって表された強い直線相関があります。

図 9. Seaborn による観客動員数と評価額のペアプロット
Seaborn による観客動員数と評価額のペアプロットを示す画像
Seaborn による観客動員数と評価額のペアプロットを示す画像

このデータを調べる方法としては、相関プロットもあります。相関プロットを作成するには、以下に記載するコードを使用します。その下の図に、このコードによる出力を示します。

リスト 7. Seaborn による相関プロット

corr = attendance_valuation_df.corr()
sns.heatmap(corr,
            xticklabels=corr.columns.values,
            yticklabels=corr.columns.values)
図 10. Seaborn による観客動員数と評価額の相関プロット
Seaborn による観客動員数と評価額の相関プロットを示す画像
Seaborn による観客動員数と評価額の相関プロットを示す画像

相関プロットには、(NBA チームの) 百万ドル単位の評価額、スタジアムの定員に対する平均入場者数の割合 (PCT)、そして平均観客動員数の相関関係が示されています。この相関関係をもう少し掘り下げるには、NBA チームごとの平均観客動員数と評価額を対照させるヒートマップが役立つはずです。Seaborn 内でヒートマップを生成するためには、データをピボット・テーブル (Excel で使用できるような形式) に成形する必要があります。ピボット・テーブルを使用することで、Seaborn のグラフ作成機能は 3 つの値でピボットを生成し、3 つの列のそれぞれが他の 2 つの列にどのように関係しているのかを明らかにします。以下のコードに、データをピボット形式に成形する方法を示します。

リスト 8. Seaborn によるヒートマップ・プロット

valuations = attendance_valuation_df.pivot("TEAM", "AVG", "VALUE_MILLIONS")
plt.subplots(figsize=(20,15))
ax = plt.axes()
ax.set_title("NBA Team AVG Attendance vs Valuation in Millions:  2016-2017 Season")
sns.heatmap(valuations,linewidths=.5, annot=True, fmt='g')

図 11 には、興味深い外れ値がいくつか示されています。例えば、Brooklyn Nets の評価額は 18 億ドルであるのに対し、平均観客動員数の点では NBA の最下位チームの 1 つになっています。これは調べる価値があります。

図 11.Seaborn による観客動員数と評価額の相関プロット
Seaborn による観客動員数と評価額の相関プロットを示す画像
Seaborn による観客動員数と評価額の相関プロットを示す画像

詳しく調査する 1 つの方法は、Statsmodels パッケージを使用して線形回帰を実行することです。Statsmodels.org によると、Statsmodels パッケージは「多種多様な統計モデルの評価だけでなく、統計テスト、統計データの調査を行うためのクラスと関数を提供する Python モジュールです。統計のエスティメーターごとに包括的な種類の結果の統計を利用できるようになっています」。

Statsmodels パッケージをインストールするには、pip install Statsmodel を使用します。以下に、線形回帰を実行するために必要な 3 行のコードを記載します。

リスト 9. VALUE ~ AVG の線形回帰

results = smf.ols('VALUE_MILLIONS ~AVG', data=attendance_valuation_df).fit()
print(results.summary())

以下の図に、線形回帰の出力を示します。R-squared を見ると、評価額の約 28 パーセントは観客動員数から説明できることがわかります。P 値 0.044 は、統計的に有意な範囲内にあります。このデータの潜在的な問題の 1 つは、残差プロットが完全に無作為には見えないという点です。これは、NBA フランチャイズの評価額の要因を説明するためのモデルを開発するのに妥当な出発点となります。

図 12. 回帰による残差プロットの出力
回帰による残差プロットの出力を示す画像
回帰による残差プロットの出力を示す画像

このモデルをさらに充実させるには、各チームの ELO 値を追加するという方法が考えられます。Wikipedia の説明によると、「ELO レーティング・システムは、チェスなどの 2 人制ゲームにおいて競技者それぞれの相対的なスキル・レベルを算出する手法」です。ELO レーティング・システムは、スポーツの分野でも使用されています。

ELO 値は、勝敗記録よりも多くの情報を提供します。それは、ELO レーティング・システムは競争相手の強さに応じてランクを付けるためです。したがって、ELO レーティング・システムを用いて、チームの成績が評価額に影響するかどうかを調べることが得策となりそうです。

それには、以下に示すように ELO データを追加します。

リスト 10. ELO のグラフを描画する

attendance_valuation_elo_df = attendance_df.merge(elo_df, how="inner", on="TEAM")
attendance_valuation_elo_df.head()
attendance_valuation_elo_df.to_csv("../data/nba_2017_att_val_elo.csv")
corr_elo = attendance_valuation_elo_df.corr()
plt.subplots(figsize=(20,15))
ax = plt.axes()
ax.set_title("NBA Team Correlation Heatmap:  2016-2017 Season (ELO, AVG Attendance, VALUATION IN MILLIONS)")
sns.heatmap(corr_elo,
            xticklabels=corr_elo.columns.values,
            yticklabels=corr_elo.columns.values)
corr_elo
ax = sns.lmplot(x="ELO", y="AVG", data=attendance_valuation_elo_df, hue="CONF", size=12)
ax.set(xlabel='ELO Score', ylabel='Average Attendance Per Game', title="NBA Team AVG Attendance vs ELO Ranking:  2016-2017 Season")
attendance_valuation_elo_df.groupby("CONF")["ELO"].median()
attendance_valuation_elo_df.groupby("CONF")["AVG"].median()

ELO データをマージすると、2 つのグラフが作成されます。一方のグラフ (図 13 を参照) は、新しい相関ヒートマップです。ここには詳しく調べるべき正相関がいくつか示されています。特に観客動員数と ELO のグラフは作成してみる価値がありそうです。以下に示されているヒートマップでは、色が薄いほど、2 つの列の間に強い相関関係があることを意味します。マトリックスの行と列の値が同じ場合、その相関関係は 1 となり、該当するセルがベージュで示されます。TOTAL と ELO には、0.5 の相関関係があるようです。

図 13. ELO 相関ヒートマップ
ELO 相関ヒートマップを示す画像
ELO 相関ヒートマップを示す画像

図 14 は、ELO と観客動員数の相関グラフです。グラフ内のドットは、チームの成績 (ELO RANK) と観客動員数との間の弱い直線相関を表しています。以下に示すグラフでは、信頼区間と併せて東と西の散布図が色分けされています。弱い直線相関は、X,Y スペース内に散在するポイントの間を突き抜ける直線によって表されています。

図 14. ELO と観客動員数の相関関係
ELO と観客動員数の相関関係を示す画像
ELO と観客動員数の相関関係を示す画像

線形回帰は、上のグラフに示されている関係をさらに詳しく調べるのに役立ちます。

リスト 11. AVG ~ ELO の線形回帰

results = smf.ols('AVG ~ELO', data=attendance_valuation_elo_df).fit()
print(results.summary())

上記の線形回帰の出力 (図 15 を参照) では、R-squared が 8 パーセント、P 値が 0.027 となっています。したがって、ここにも統計的に有意な関係が示唆されていますが、これはかなり弱い関係です。

図 15. ELO と観客動員数の回帰
ELO と観客動員数の回帰を示す画像
ELO と観客動員数の回帰を示す画像

教師なし機械学習: k 平均法

最後の取り組みとして、k 平均法を使用して、AVG、ELO、VALUE_MILLIONS に基づく 3 つのクラスターを作成します。

リスト 12. K 平均法

from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler

#Only cluster on these values
numerical_df = val_housing_win_df.loc[:,["TOTAL_ATTENDANCE_MILLIONS", "ELO", "VALUE_MILLIONS", "MEDIAN_HOME_PRICE_COUNTY_MILLONS"]]

#Scale to between 0 and 1
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
print(scaler.fit(numerical_df))
print(scaler.transform(numerical_df))

#Add back to DataFrame
from sklearn.cluster import KMeans
k_means = KMeans(n_clusters=3)
kmeans = k_means.fit(scaler.transform(numerical_df))
val_housing_win_df['cluster'] = kmeans.labels_
val_housing_win_df.head()

以下に示すグラフを見るとわかるように、NBA チームは 3 つの異なるグループに分かれ、各クラスターの中心がそれぞれに異なるラベルを表します。注意すべき点として、スケール間の違いを正規化するために、sklearn MinMaxScaler を使用して、列のすべてを 0 ~ 1 の範囲の値にスケーリングしています。

図 16. チームのクラスター
チームのクラスターを示す画像
チームのクラスターを示す画像

以下の図に、クラスター 1 のメンバーシップを示します。このクラスターの要点は、これらのチームは NBA でとりわけ優秀なチームであると同時に、いずれも平均観客動員数がひときわ多いことです。ただし、合計評価額に関しては、チーム間で差が出てきます。例えば、Utah Jazz は ELO によると非常に優秀なチームであり、かなりの観客動員数を獲得していますが、クラスターの他のメンバーに比べると、評価額はそれほど高くありません。これは、Utah Jazz がわずかな改善によってチームの評価額を大幅に上げられる可能性があることを意味するのかもしれません。

図 17. クラスター・メンバーシップ
クラスター・メンバーシップを示す画像
クラスター・メンバーシップを示す画像

まとめ

この全 2 回からなるシリーズの第 1 回では、データ・サイエンスと機械学習の基礎を学び、NBA チームの評価額、観客動員数、そして好成績との間にある関係についての調査を開始しました。チュートリアルに記載したコードは、このリンク先の Jupyter Notebook 内に維持されています。第 2 回では、チームから個々の NBA プレイヤーへと焦点を移し、スポンサー収入データ、実際に試合に出場しているときの成績、そして Twitter と Wikipedia によるソーシャル・メディアの力を調べます。

今回は、データの調査から以下のことがわかりました。

  • NBA チームの評価額は、平均観客動員数によって影響される。
  • ELO ランキング (チームの強さの記録) は、観客動員数に関係する。一般的に言えば、チームが好成績を上げるほど、実際に試合に足を運ぶファンの数が増える。
  • Eastern Conference は、平均観客動員数も ELO レーティングも低い。

ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=ビジネス・アナリティクス
ArticleID=1057125
ArticleTitle=NBAにおけるソーシャル・メディアの力、影響、実績, 第 1 回: データ・サイエンスと機械学習を使用して、チームの評価額と観客動員数の関係を調査する
publish-date=01252018