2014年1月5日日曜日

第2モジュールの振り返り

新年の初投稿です。あけましておめでとうございます。冬休みは一時帰国していましたが、元旦にサンフランシスコに戻ってきました。新年早々、第2モジュールの成績が明らかになってきています。ここらでいちど、第2モジュールの振り返りをしておきたいと思います。


Time Series Analysis for Business and Finance
以前にも書きましたが、第1モジュールでやった回帰分析の続きという位置づけです。自己回帰プロセス(AR process)、移動平均プロセス(MA process)に始まり、GARCHまでがカバー範囲です。授業が数学ヘビーでやりつつも、結構わかりやすく、ここまでのベストレクチャーでした。ただ、あくまで単変量のモデルでやるので、時系列分析入門といったところでしょうか。多変量のモデルも実務では必要となるときがあるでしょうから、そこは自習する必要があります。使用したソフトウェアは、RとSASです。

Machine Learning
カバーした機械学習のアルゴリズムは、
1. 決定木
2. ナイーブベイズ
3. KNN
4. サポートベクターマシーン
5. クラスター分析
6. アンサンブル学習(Random Forest, Bagging, Boosting)
7. アソシエーションルール
8. ニューラルネットワーク
とです。最後まで理論よりでした。アルゴリズムの中で何が起きているのかを理解することが主眼に置かれていたように思います。しかし、今思えば、そういう勉強の仕方は時間がないとできないので、良かったかもと思っています。また、ゲストスピーカーで、Jeremy Howord(KaggleのPresident兼チーフサイエンティストで数々のコンペで優勝)が彼の普段やるデータ分析のやり方などを聞く機会があったのはありがたかったです(この授業だけでなく、以前も来ています)。

Distributed Databases
MySQLのおさらいから、MongoDBでMapReduceの概念を勉強し、最後はAWSでHadoopの使い方、Hiveの使い方を学ぶというものでした。週1の授業でしたので、ざーっと流した感じです。しかし、私はWIndowsになんとかHadoop + Hiveをインストールしようとして一番時間かかったかも。。。

Practicum 1 
会社でインターンをするというもので、週2回出社、週20時間以上の時間と先生からは言われていましたが、もっと時間を使っていたような気がします。なにせデータの量も半端じゃないので処理するのに時間かかります。インターンで感じることは、データ分析で一番大事なことはやっぱり分析結果を使ってもらうことだということです。なので、データ利用者にどうやってわかりやすく説明するか、「お客さんはこんな感じではなからろうか?」とストーリーで話すことの重要性を改めて感じました。また、Take Awayをクリアにしてあげることも重要です。「棒グラフや表などでさえも読みたくない」というのがデータ利用者の本音なのだと感じます。まぁ、私にとっては、実際にアメリカで働いてみたかったので、この授業はありがたいです。

とこんな感じで第2モジュールは終わりました。結構勉強したなぁと思います。そして、週明けからはSAS集中講義があり、2週間後にSAS Base Programmerの試験を受けることになっています。これに受からないと受かるまでやらされる模様なので、一発で合格したいです。

残りは半年!後半戦もがんばらないと!

2013年12月9日月曜日

(自分用メモ)R 時系列分析の関数まとめ

Rには時系列分析用のパッケージがいろいろありますが、授業で使っているパッケージ・関数を備忘のために、まとめておきたいと思います。

まずデータを入手したら

  1. 時系列プロット
  2. 単位根検定(Augmented Dickey–Fuller Test, Phillips-Perron Test for Unit Roots)
    • adf.test(data, alternative ="stationary") (tseries package)
    • PP.test(data)
データが非定常だったら・・・
  1. 移動平均でdetrend
  2. 単位根検定でひっかかったら、diffを取る(ex: Z_t = Y_t - Y_t-1)
  3. Exponential smoothingでdetrend
    • Simple Exponential Smoothing
      • HoltWinters(data,alpha=数字, beta=FALSE, gamma=FALSE) #ARIMA(0,1,1)と同じこと
    • Double Exponential Smoothing
      • HoltWInters(data,alpha=数字, beta=数字, gamma=FALSE) #ARIMA(0,2,2)と同じこと
    • 以下2つを使う場合、dataはtsオブジェクトでfrequencyが定義されてるもの
    • Seasonal Exponential Smoothing without Trend
      • HoltWinters(data,alpha=数字, beta=FALSE, gamma=数字) 
    • Seasonal Exponential Smoothing with trend
      • HoltWinters(data, alpha=数字, beta=数字, gamma=数字)  


データは定常。ではWhite noiseか?
  1. 時系列データがWhite noiseかどうかの検定 (Box Pierce , Box Ljung test)
    • Box.test(data, lag=1 , type = c("Box-Pierce", "Ljung-Box")

White noiseではないようだ。では、ARIMAモデルか?
  1. Sample Auto Correlation, Sample Partial Auto Correlationのプロット
    • acf(data, plot=TRUE)
    • pacf(data,plot=TRUE)
  2. ARMAのパラメータ候補を絞りたい
    • eacf(data) (TSA package)
  3. ARIMA(p,d,q) モデルの推定(dataはtsオブジェクトです)
    • arima(data, order=c(p,d,q),method="ML")
  4. ARIMA(p,d,q) モデルの推定(dataはtsオブジェクトです)
      • arima(data,order=c(p,d,q),seasonal=list(order=c(P,D,Q),period=S),method="ML")

    ARIMAモデルの残差はWhite noiseになったのか?
    1. 残差プロット + Box testでチェック
    2. 残差プロットの中でvolatility clusteringがあれば、ARCH LM testをやってみる

    ARCH/GARCHモデル
    1. garchFit(~arma(p,q)+garch(q,p),data=data) (GARCHのパラメータqはalpha, pのパラメータはbeta)

    予測
    1. arimaで推定したモデルであれば、forecast(arimaクラスのオブジェクト) (forecast library)
    2. garchFitで推定したモデルであれば、predict(fGarchクラスのオブジェクト)

      2013年11月1日金曜日

      第2モジュールスタート!

      さて、先々週から第2モジュールが始まりました!

      第2モジュールは、以下のラインナップです。

      Time Series Analysis for Business and Finance
      前モジュールでやった回帰分析の授業の続きという位置づけですが、まずARプロセス、MAプロセス、ARMA, ARIMA, SARIMAといった時系列のモデルを勉強します。今後、ARCH、GARCHなんかもやるみたいです。今のところ、主には理論をやっていますが、今後はRとSASを使って分析をやっていくようです。

      Machine Learning
      一番思ってたのと違うのが、この授業・・・・。かなり理論寄りです。マシンラーニングは、Rとかで動かすっていうだけだと結構楽しい代物ですが、それなりに数学もやると、そこそこヘビーです。しかも、実際に動かすのは、PythonのScikit-learnです。私はR使いなので、Rでやるほうが楽だったのですが、仕方ない・・・。

      Distributed Databases
      こちらは、SQLから、NoSQLへの発展編です。最初2回は、MySQLのおさらいと少し応用編をやり、次回からはMongoDBを使おうという流れです。MySQLは前期のData Acquisitionの復習に始まり、変数の使い方、Stored procedure, stored functionといった内容をやりました。先生が愉快な方なので、楽しいです。

      Practicum 1 
      強制的に企業とのコラボプロジェクトにアサインされます。会社の希望は出せますが、人を選ぶのは会社側らしく(事前にレジュメを提出します)、必ずしも希望の会社にアサインされるかはわかりません。会社によっては面接したりします。だいたい1週間に2回くらい出社するように言われているクラスメートが多いようです。詳細は書けないのですが、コラボ先企業は、シリコンバレーのベンチャーはもちろん、金融、小売、交通、自治体など多岐に渡ります。