時系列データの予測

Pythonで学ぶMachine Learningによる時系列データ解析

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

分類と回帰

分類
classification_model.predict(X_test)
array([0, 1, 1, 0])
回帰
regression_model.predict(X_test)
array([0.2, 1.4, 3.6, 0.6])
Pythonで学ぶMachine Learningによる時系列データ解析

相関と回帰

  • 回帰は相関の計算に似ているが、重要な違いがある
    • 回帰:データの正式なモデルを構築するプロセス
    • 相関:データを表す統計量。回帰モデルより情報量が少ない。
Pythonで学ぶMachine Learningによる時系列データ解析

変数間の相関は時間とともに変化する

  • 時系列はしばしば時間とともに変化するパターンを持つ
  • ある時点で相関しているように見えた2つの時系列も、時間の経過とともに変化することがある
Pythonで学ぶMachine Learningによる時系列データ解析

時系列間の関係の可視化

fig, axs = plt.subplots(1, 2)

# Make a line plot for each timeseries
axs[0].plot(x, c='k', lw=3, alpha=.2)
axs[0].plot(y)
axs[0].set(xlabel='time', title='X values = time')

# Encode time as color in a scatterplot
axs[1].scatter(x_long, y_long, c=np.arange(len(x_long)), cmap='viridis')
axs[1].set(xlabel='x', ylabel='y', title='Color = time')
Pythonで学ぶMachine Learningによる時系列データ解析

2つの時系列の可視化

Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnによる回帰モデル

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
model.predict(X)
Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnで予測結果を可視化する

alphas = [.1, 1e2, 1e3]
ax.plot(y_test, color='k', alpha=.3, lw=3)
for ii, alpha in enumerate(alphas):
    y_predicted = Ridge(alpha=alpha).fit(X_train, y_train).predict(X_test)
    ax.plot(y_predicted, c=cmap(ii / len(alphas)))
ax.legend(['True values', 'Model 1', 'Model 2', 'Model 3'])
ax.set(xlabel="Time")
Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnで予測結果を可視化する

Pythonで学ぶMachine Learningによる時系列データ解析

回帰モデルの評価

  • 主な評価指標:
    • 相関係数($r$)
    • 決定係数($R^2$)
Pythonで学ぶMachine Learningによる時系列データ解析

決定係数($R^2$)

  • $R^2$ の上限は1で、下限は負の無限大
  • 1に近いほどモデルの予測精度が高い

$$ 1 - \frac{error(model)}{variance(testdata)} $$

Pythonで学ぶMachine Learningによる時系列データ解析

scikit-learnでの $R^2$

from sklearn.metrics import r2_score
print(r2_score(y_predicted, y_test))
0.08
Pythonで学ぶMachine Learningによる時系列データ解析

練習しましょう!

Pythonで学ぶMachine Learningによる時系列データ解析

Preparing Video For Download...