レンタサイクルの利用者数を予測するAIをノーコードで作ってみた|第4回:作成したAIの評価と精度向上
こんにちは!ヒューマノーム研究所でインターンをしている佐藤です。
この連載では、レンタサイクルのデータを当社が開発する Humanome CatData(以下CatData)を用いて分析し、自転車のレンタル数を予測するモデルを学習しています。
今回は、前回に引き続き、レンタサイクルのデータをCatDataで分析していきます。
前回の記事では、学習用のデータとして準備した2011/01/01〜2012/10/31分のレンタサイクルの利用者数データを使ってモデルを作成しました。今回は前回作成した学習モデルを用いて、評価用のデータである2012/11/01〜2012/12/31のレンタサイクルの利用者数データを使って、予測していこうと思います。
学習用と評価用のデータに関する詳細は、本連載の第2回を参照してください。
利用者数の予測
まず、テーブル一覧で、評価用のデータとして準備したテーブル「レンタサイクルデータ-予測」を選択します。また、利用目的の選択では「予測」を選択してください(図1)。
利用目的を選択すると、「予測」のページに移動します。このページでは以下の操作を行い、レンタサイクルの利用者数を予測していきます(図2)。
「予測結果を比較・評価する」にチェック
予測する値を”登録ユーザ利用数”に設定
「予測に使用するモデルを選択」で、「#2 レンタサイクルデータ – 学習用」をクリック
「予測の開始」をクリック
状態が「終了」になったことを確認し、「予測結果」をクリック
予測結果の評価
予測結果を確認すると、モデルが予測したレンタサイクルのユーザー利用数が ”Prediction” の列として追加されています。しかし、”Prediction”の数字だけを見ても、予測精度が高いのか低いのか分かりませんよね。そこで、「予測結果」の横にある「評価」ページへ移動し、予測精度を確認していきます(図3)。
評価のページでは、モデルが予測した登録ユーザー利用数と実際の利用数を比較したグラフが表示されます(図4)。グラフ内にある直線は、y=xを表します。この直線の近くに存在する点が多いほど、予測した値と実際の値の差が小さく、予測精度が高いモデルといえます。
では、実際にモデルの評価をしてみましょう。学習用データでは、R2の値が0.98604と高く、予測精度が高いモデルでした(前回参照)。しかし、評価用データに対して予測をした図4の結果では、グラフを見てもy=xの直線に沿っておらず、R2の値も-0.53103です。これらの結果から、前回の記事で作成したモデルは、未来のデータに対しては予測精度が芳しくないことが分かりました。
モデルの精度向上
それでは、未来のデータに対して、より精度よく予測できるモデルは作成できるのでしょうか?
さっそく試してみたいと思います。今回は、学習モデルを作成するときに設定をする「手法」を変え、4個のモデルを作成してみます。前回の記事と同様の操作で次のように設定してモデルを作成します。
「レンタサイクルデータ-学習用」のテーブルを選択する
「モデルの新規作成」からモデルを作成する
予測対象の列:登録ユーザー利用数
「Random Forest」、「Neural Network」、「XGBoost」、「LightGBM」から手法を1つ選択
予測対象の列:登録ユーザー利用数
「モデル評価用に学習データと評価データに分割」のチェックを外す
モデルを作成すると、学習済みのモデル一覧に各手法で学習した結果が追加されます(図5)。
モデルの学習時に利用した2011/01/01〜2012/10/31のデータを使い、手法を変えて学習した各モデルのスコアは、それぞれ以下の結果でした。
Random Forest:0.98509
Neural Network:-4.94024
XGBoost:0.9999
LightGBM:0.98302
Neural Networkを使ったモデルはスコアが低く、予測精度がよくないことがわかります。それ以外の3個の手法は同程度のスコアでした。
次に、学習データよりも未来のデータである2012/11/01〜2012/12/31のデータを使って、先程作成した4個のモデルで利用者数を予測してみます。「レンタサイクルデータ-予測」のテーブルに移動し、以下の操作を行ってください(図6)。
「予測結果を比較・評価する」にチェック
予測する値を ”登録ユーザ利用数” に設定
「予測に使用するモデルを選択」で、「レンタサイクルデータ-学習用」をクリック
利用したいモデルと同列にある「予測の開始」をクリック
異なる手法で学習した4個のモデルそれぞれに対して、上記の予測作業を繰り返した結果を図7に示します。では、それぞれの手法ごとにスコアを確認してみましょう!学習用データと評価用データのスコアを以下の表にまとめました。
評価用データに適用した場合のスコアを比較すると、Random Forestは -0.54065、Neural Networkは-6.7558、XGBoostは-0.83991、LightGBMは0.34762です。Neural Networkは「レンタサイクルデータ - 学習用」の結果と同様に、他の手法と比べてスコアが著しく小さく、予測精度が低いモデルであることがわかります。
他の3個の手法では、学習用データでのスコアが非常に高い一方で、予測用データでは値が小さくなっています。特にRandom ForestとXGBoostはその差が大きく、未来のデータに適用しても、レンタサイクルの利用者数が正しく予測できないモデルであることがわかります。これらに比べると、LightGBMは予測用データでのスコアが高く、4個のモデルの中では一番よいモデルであることが分かります。
次に、Neural NetworkとLightGBMのそれぞれの予測結果について、「予測値と実数値の比較をしたグラフ」を確認してみましょう(図8)。
スコアが一番低かったNeural Networkはグラフの下部に点が偏っており、y=xの線からほぼ全ての点が離れています。また、そのほとんどがグラフの下部にあることから、モデルが予測したレンタサイクルの利用者数は、実際の値よりも小さいことがわかります。
精度の一番高かったLightGBMはNeural Networkよりもy=xの線に沿っています。グラフを見ても精度に明らかな違いがあることが分かります。
手法を変えるだけでも、精度が高くなることが分かりました!
感想
このレンタサイクルのデータでは、「可視化」「学習」「予測」について触れました。
今回は、”登録ユーザ利用数”を予測し、モデルの精度を上げるにはどうすれば良いのか試してみました!
今までの記事では、手法で”Random Forest”を基本的に使ってきましたが、今回は別の手法を使いました。他の手法を使うだけで、精度が大きく変わることを実感しました。他にも設定を変えることで精度が良くなる可能性があります。様々な方法を試してみてください!
この連載の過去記事
関連記事
表データを利用したAI学習テキスト(Humanome CatData)
画像・動画を利用したAI学習テキスト(Humanome Eyes)
AI・DX・データサイエンスについてのご質問・共同研究等についてはお気軽にお問い合わせ下さい!
この記事が気に入ったらサポートをしてみませんか?