Spark実践 #4 PySpark MLlib

PySparkの学習を通じて、Sparkの解析プロセスがRDDから、DataFrameへ移行していること、さらにMLlibの開発は終了し、MLに移行していることなどを学ぶ。

今回は、799万件の米国における2014年と2015年の出生データbirths_train.csv分析をPySparkとMLlibで行う学習(入門PySpark Ch-05)。
———————————————
births_train.csvのデータ構造を眺めてみる。

と、一行目はフィールド名、各フィールドには整数もあれば、Y or Nもある。

スキーマを登録して、データをDataFrame birthsへロードする。

Category型(Y, N, U)を数値に変換する辞書作成。

解析の目標は、INFANT_ALIVE_AT_REPORTが1になるか、0になるかを予測する。そのために、乳児自身のデータは削除して、両親、出生地に関するデータ17フィールドのみを用いて、生存確率を予想する。

母親の喫煙歴等で1-97は本数、98はそれ以上、99は不明ということこことは不明を0とみなす。

記述統計を求める

各項目の相関を求める。

相関の強いファクターを統一して、以下の12フィールドを選択。

統計学的検定

これで最終の解析用データ・セットが完成。
DataFrameをLabelsPointsのRDDへ変換する。

BIRTH_PLACEが文字列のまま残っているので、ハッシュ化を行う。

いよいよ機械学習

データをトレーニング用60%とテスト評価用40%に分ける。

pyspark.mllib.classificationのLogisticRegressionWithLBFGSをインポートして、
繰り返し10回で、LogisticRegressionWithLBFGS()にトレーニングデータをセットする。

次に、テスト評価用データをモデルにアプライ。

Selecting only the most predictable features

Random Forest in Spark