前のステップ で、学習に使用するデータを用意しました。
このステップから、いよいよ Azure Machine Learning Studio を使用します。
このステップでは、データの 分析 を行います。
これから学習しようとしているデータセットが、学習に適しているかどうかを調べる作業です。
ここでのデータ分析とは、CSV データ(表形式の構造を持つデータ)の各列の相関関係を調べて、うまく学習できそうかの "当たり" を付ける作業です。
このあとで確認しますが、今回使用するタイタニックの乗船リストは、予測したい値(目的変数と言います)と与えるパラメーター(説明変数と言います)との間には相関関係があり、質のよい学習できそうなデータです。
それではデータセットを Experiment に取り込み、分析をしていきます。
Azure Machine Learning Studio にサインインするところから始めます。
- Azure Machine Learning Studio にアクセスして [Sign In] します。(2か所のどちらからでもよい)
- Experiments 画面が表示されれば OK です。
このコンテンツでは、Azure Machine Learning Studio の FREE レベルを使用します。
複雑なモデルを作成したい場合や高速に学習を行いたい場合は、STARDARD レベルを使用することもできます。STANDARD レベルを使用するには Azure サブスクリプションが必要です。STANDARD レベルで有償の Workspace を作成する手順は STANDARD レベルの Workspace 作成手順 を参照してください。
Kaggle から取得した タイタニック号の乗船リスト を、自分の Azure Machine Learning Studio にアップロードします。
- Kaggle からローカル PC に "train.csv" をダウンロード済みであることを確認します。まだ入手していない場合は、前のステップ を参照して、データセットを取得してください。
- "train.csv" のファイル名を "titanic_train.csv" に変更します。これは必須ではありませんが、この後の手順で何のデータセットかを分かりやすくするためです。
- ページ下部にある [NEW] をクリックして、続いて [DATASET]-[FROM LOCAL FILE] をクリックします。
- [ファイルを選択] をクリックして、"titanic_train.csv" (train.csv の名前を変更したもの) を選択します。
"EXISTING DATASET" および "SELECT A TYPE FOR THE NEW DATASET" はデフォルトのままでかまいません。- ENTER A NAME FOR THE NEW DATASET: ファイル名と同じ
- SELECT A TYPE FOR THE NEW DATASET: "Generic CSV File with a header (.csv)"
※今回の titanic_train.csv は 1行目がヘッダーなので "with a header" を選択します。他のデータセットでは、形式に応じて適切なものを選択します。
- 右下のチェック (Ok) をクリックして、データセットをアップロードします。
- メニューで [DATASETS] をクリックして、"titanic_train.csv" がアップロードされていることを確認します。
Azure Machine Learning Studio では、データの分析、モデルの作成、学習など、機械学習の一連のフローはすべて Experiment 上で行います。
この後のステップのために Experiment を作成します。
- ページ左下の [NEW] をクリックします。
- EXPERIMENT をクリックして、続いて Blank Experiment をクリックします。
- 空白の Experiment が新規に作成されると以下の画面が表示されます。
- (必須ではありませんが) Experiment のタイトルを変更します。Experiment の左上のタイトル部分をクリックして適切なものに変更します。(ここでは "Titanic" としておきます)
タイトルは、モデルの操作を行って Experiment が保存されるタイミングで一緒に保存されます。
Experiment ができたので、ここにデータセットを配置します。
- [Saved Datasets]-[My Datasets] を開いて、"titanic_train.csv" を探します。これを Experiment 画面にドロップ します。
なお、新規の Experiment にはモジュール配置のガイドラインが表示されていますが、その位置に置く必要はありません。
次に、データセットが学習に適したものかを 分析 します。
どんなデータセットでも機械学習に使えるわけではないため、学習を始める前にデータの "品質" を見てみます。
-
Experiment に配置した "titanic_train.csv" モジュールの下側の出力ノードを 右クリック します。メニューが表示されたら Visualize を選択します。
-
データセットのサイズとデータの一部とが表示されます。
このデータセットは 12 列のデータ 891行からなるデータであることが分かります。 -
各列に欠損値がどのくらいあるか調べます。各列のヘッダーを順にクリックし、"Statistics" の "Missing Values" を見ます。これがそれぞれの列で値が欠損している個数です。
今回のデータセットでは、Age, Cagin, Embarked 列に欠損があることが分かります。
欠損値がある場合は、その列は使わない、その行を削除する、平均値を入れる、固定値 (0 など) を入れるなど、補う方法があります。どの方法を取るかは、モデルの目的や列の意味合いによって異なります。異なる補完をしたデータで学習して、それぞれのモデルを比較することもあります。
今回のデータセットは、Age 列では平均値を使い、Cabin, Embarked 列では欠損値を含む行を削除することにします。 -
続いて、"Survived" 列(= 助かったかどうか、今回予測したい列)と他の列との 相関関係 を見てみます。
Survived 列のヘッダーを選択します。その状態で、Ctrl キーを押しながら別の列ヘッダーをクリックします。
Survived の値は 0 か 1 かのどちらかであり、例えば 0.5 ということはないため、散らばりが分かりづらいかもしれません。
例えば、Survived と Age との関係では、年齢が高くなると Survived が 1 であるデータが少ないことが分かります。ただし、「データセットで、これに該当するデータがたまたま含まれていなかったから」という可能性もあります。 相関関係が比較的わかりやすいものとしては、Fare と Parch との関係があります。 -
PassengerId, Name, Ticket, Embarked は相関が認められない(または非常に相関が低い)ことを確認します。これらは学習モデルを作る際に、除外して考えてよさそうです。
上の手順で列同士の相関関係の概要が分かりますが、確認の操作が面倒であり、かつ直感的ではないかもしれません。
そこで相関関係を、もっと全体を俯瞰した形で見てみます。
ここでは Jupyter Notebook を使ってデータセットを見てみます。
-
"titanic_train.csv" の下側のノードを 右クリック します。メニューが表示されたら Open in a new Notebook を選択し、さらに Python 3 を選択します。
-
Shift + Enter または ツールバーの [Run] で1個ずつ実行します。
書式は違いますが、データセットの一部が表示されます。In [ ] の表示が In [数字] に変わるのを待ってから次のセルを実行するようにします。
-
一番下の空のセルに以下を入力して、Shift + Enter で実行します。
各列の相関関係が表形式で表示されます。1 に近いほど正の相関関係、-1 に近いほど負の相関関係があります。frame.corr()
表形式で各列の相関関係を確認できましたが、ヒートマップを使うともっと直感的に関係が分かります。
-
Notebook の一番下の空のセルに以下を入力して、Shift + Enter で実行します。
色が濃いほど強い相関関係を持つことを表します。Survived に対しては Pclass, Fare が強い相関を持つことが分かります。import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline sns.heatmap(frame.corr())
初回の実行時には警告が表示されるかもしれません。ヒートマップが表示されれば問題ありません。
データ欠損の個数の確認やデータセットの統計情報を確認するには、別の方法もあります。
Summarize Data モジュールを使います。
この手順は必須ではありません。
- モジュール一覧で [Statistical Functions]-[Summarize Data] を探し、Experiment にドロップします。
- "tatanic_train.csv" の下側の出力ノードから "Summarize Data" の上側の入力ノードにドラッグして、2つの モジュールを接続 します。
- [Run]-[Run Selected] で、Summarize Data モジュールを実行します。
- [Summarize Data] の下側の出力ノードを右クリックして、[Visualize] を選択します。
- "Resuts dataset" が開いたら、[Missing Value Count] で、データ欠損の個数を確認します。
ここでも、"Age" 列および "Cabin" 列に欠損があることを確認します。
以上で、データの分析ができました。
次のステップでは、モデルを作るのに適した形式に データを整形 します。