配車サービスの料金を回帰分析で予測するAIの作成方法
今回はMatrixFlow上で、AIの分析手法である「回帰」を使用し、タクシーの配車サービスの料金を予測するAIを作っていきます。
AIを作るといっても、MatrixFlowを使えばプログラミングをする必要はありません。
ノンプログラミングで、簡単に回帰分析による予測が可能です。
さっそく、AIを作っていきましょう。
◆目次◆
1. 題材と分析手法の説明
2. プロジェクトの説明
3. AIを作成する流れの全体像の説明
4. データセットの説明
5. 予測する列の選択
6. 前処理
7. レシピ
8. 学習
9. 学習結果
10. 推論
11. まとめ
1. 題材と分析手法の説明
使用するAIの分析手法は、「回帰分析」を使用します。回帰分析では、予測したい売上や来店者数などの数値を予測することができ、今回の場合、タクシーの配車サービスの料金を予測していきます。
また、MatrixFlowでは、分析に使用した予測対象以外の列が、予測結果に対してどのような影響をあたえているのかも、分析することができます。
この記事では題材として、配車サービスである「Lyft(リフト)」の乗車料金の変動の要因を分析します。Lyftは公共交通機関とは異なり需要と供給によって価格が変わります。今回は、実際のデータを使用して、タクシーの配車の料金を予測し、変動の要因をMatrixFlowで調べてみましょう。
2. プロジェクトの説明
それではさっそくAIを作っていきましょう。
プロジェクトは作成したAIや、AIの作成に使用したデータセットやレシピなどを管理する単位です。
AIの作成を進めていくと、使用したデータセットやレシピなどが、プロジェクトの中に保存されていきます。
3. AIを作成する流れの全体像の説明
AIを作成する流れを以下のように図で示しました。
AIを作成するには、まずはデータセットが必要になります。予測したい値が入った列を「予測する列」として決めて、データをAIが学習できるように前処理を行います。ここからいよいよ、AIの設計図である「レシピ」を作成した上で、学習を行いAIを作成します。推論することで、求めたい結果を得ることができます。
ではさっそくMatrixFlowを操作してみましょう。
MatrixFlowにログインして、はじめに、プロジェクトを作成します。
プロジェクト一覧から「新規プロジェクトを作成する」をクリックします。
「テンプレートを使用してAIを構築する」または「自分でAIを構築する」のどちらかを選択します。今回は、「自分でAIを構築する」を選択しましょう。
プロジェクト名とプロジェクトの説明文を入れて作成します。
4. データセットの説明
今回、使用するのは「Uber & Lyft Cab prices」を加工したデータです。ここでは、Lyftの付近のドライバーと乗客をマッチさせる基本かつ最も一般的なサービスのみを抽出し、加工しています。
データの構成は以下のようになっています。
1 – price(料金)
2 – day(日付)
3 – distance(距離)
4 – hour(時間)
5 – temp(気温)
6 – clouds(雲量)
7 – pressure(気圧)
8 – humidity(湿度)
9 – wind(風速)
10 – rain(降水量)
また、学習後に推論を実施してみるために、データの一部を抜き出して、「price」の列を消去したデータも用意します。このデータを推論用データとします。
この段階で、用意したデータファイルは2つとなります。
①学習用データ
②推論用データ
このデータセットをつかって、MatrixFlow上でAIに学習させ、MatrixFlow上でAIを作ってみましょう!
<データのアップロード>
データセットの設定を行います。使用するデータを設定するには、3つの方法がありますが、今回は「ファイルをアップロード」を使用します。
上記で用意したcsvデータを所定のエリアにドラッグ&ドロップします。
データを取り込めましたね。
ファイルの情報が表示されたら、名前と説明を入力して「データセットをアップロードする」をクリックしましょう。
5. 予測する列の選択
予測する列は、AIで予測したいデータセットの列です。今回は、料金を予測するので、料金(price)がそれにあたります。また、学習画面では、指定した予測する列に関連していると思われる列を、学習に使用する列として選択します。このように、予測する列は、作成するAIの重要な設定事項になるので、どのようなAIを作成したいのか、今一度確認して選択しましょう。
6. 前処理
前処理のページに移りました。
AIが学習を行えるように、データを加工することを「前処理」と言います。
今回のデータは前処理をしなくても使用できますので、そのまま進みます。
ただし、データセットによっては、値が入力されていない「欠損値」や数値以外の値(日本語などの文字)が入っていて、AIの学習に使用できないことがあります。
そういった場合には、「欠損値」を特定の値で埋めたり、数値以外の値を数値に変換する前処理を行って、AIが学習できるようにします。
また、予測する列が数値以外のものの場合は、日本語のままだと、AIは学習をすることができません。そのため、データを数値に変換してAIが学習できるようにする前処理を行います。
7. レシピ
データの準備ができたので、AIの設計図である「レシピ」をつくっていきましょう!
レシピ管理のページで、「新規レシピを作成」ボタンをクリックします。
ここでは、「ブロックタイプ」の自動構築AI(AutoML)を選択し、AutoFlowを使用します。
「AutoFlow」は、自動機械学習(AutoML)機能を備えたレシピブロックで、3つの特徴があります。
1.データを投入するだけで、自動で最も精度の良いアルゴリズムの選定とパラメータ
のチューニングを行います。
2.分類と回帰の両方に対応し、自然言語処理とも組み合わせる事が出来ます。
3.探索回数や選定対象のアルゴリズムなどを柔軟に設定出来ます。
AutoFlowを画面の青の領域にドラッグ&ドロップし、右側のパラメーターエリアにある種類を「回帰」にします。
次に、AutoFlowのブロックを「データの入り口」と「精度評価」のブロックに繋ぎます。
ブロックにポインターを合わせるとピンクのマルが出てきますので、つなぎたいブロックまでドラッグします。
矢印がつながったら、「名前」と「説明」を入力して、「レシピを保存」ボタンをクリックし、保存します。
これでレシピの用意は完了です!
8. 学習
AIの学習ページで、学習に使用する列を選択します。
今回は、全て選択します。「列名」にチェックを入れると全て選択されます。
「学習を実行する」をクリックすると学習が始まります。
結果は数分で表示されました。
9. 学習結果
精度評価を確認するため、もう一度学習結果について、見てみましょう。
今回のAIでの学習のテストデータ精度(R2)は、「0.605」となっています。
テストデータ精度(R2)は、AIの予測の精度の精度を表します。テストデータで予測した値が実際の値とどの程度一致しているかを示す評価指標であり、誤差が大きいほど値は0に近づき、誤差が小さいほど値は1に近づきます。そのため、「1」に近づくほど精度が高いと言えます。
また、重要度が高い列を確認すると、距離(distance)が評価に影響を与えることがわかりました。
重要度をクリックし、「表示する説明変数」を「distance」に設定すると、距離の量と距離の影響度をみることができます。
タクシーの配車料金には、距離が大きく影響していることがわかりますね。
ここから距離は2マイルを境目に多ければ多いほどプラスの評価に繋がり、少ないとマイナスの評価になることがわかります。
プラスの評価はつまるところ、料金が高くなることを意味しますそしてマイナスは料金が安くなることを意味します。
そのため、距離が長ければ長いほど、料金が高くなることがわかります。
重要度の分布は、学習に使用した列がどのように予測結果に影響を与えているのか、具体的に確認するための表示です。
Y軸は予測結果に対してマイナスとプラスどちらに影響を与えているかを表し、X軸はデータセット内の値を示しています。
ここでは、料金を予測する際に、距離を学習に使用しました。距離が短いときはマイナス方向に影響があり、距離が長いときはプラスの方向の影響がある、といったことを見ることができます。
ひと通り学習結果が確認出来たら、左上の「学習済みAIを保存する」ボタンを押して保存しておきましょう。
保存が完了するとポップアップが表示されるので、、「このAIを使って推論をする」をクリックしましょう。
10. 推論
先程作成したAIを使ってさっそく予測をしていきましょう。また、AIが予測を行うことを「推論」といいます。
事前に準備した推論用のデータセットをアップロードします。
※ここでは、学習を完了して直接推論に進んでいますが、一旦学習を終えており、プロジェクトからあらためて推論を開始する場合は、学習済みAIの選択をしてから、(必要があれば)前処理を行い、データセットをアップロードしてください。
推論の種類は「回帰」を選び、「推論を実行する」をクリックしましょう。
priceの列に推論結果として、タクシーの配車料金が表示されています。
また、AIが推論する際に、どの列が影響をあたえているのか、詳細ボタンから見ることができます。
詳細を見てみると、「距離(distance)」が大きな影響を与えていて、プラスの方向に影響を与えていることから、距離が長いほど、料金が高くなるように、予測を行っていることがわかります。一方で、ほかの要素による影響がないことがわかります。
この結果は、左上の「推論結果をダウンロード」をクリックすると、csvファイルとしてダウンロードすることができます。
推論結果の「price(料金)」と、推論結果に他の列が与えた影響度合いである重要度も見ることができます。
11. まとめ
この記事では、タクシーの配車料金とそれに関連したデータから、ノンプログラミングで回帰分析の手法を使って、タクシーの配車料金を予測するAIを作成できました。MatrixFlowで回帰分析を行うAIを作成することで、例えば、店舗の売上を予測したり、工場の部品の必要在庫を予測することなどなど、さまざまな数値を予測することができます。
ぜひMatrixFlowを使って売上などを予測するAIをみなさんも作ってみませんか?
また、MatrixFlowは、ドラッグ&ドロップだけで前処理も含めた機械学習・深層学習が可能で、学習データや学習済みモデルの管理機能、サービスに組み込むためのAPIの作成機能も搭載しており、ウェブから推論するだけではなく、外部のアプリからAIを利用できます。リアルタイムで推論したいという用途にも使えますので、AIの導入検討で生じる、あらゆる悩みを解決します。
実際に操作する際に役立つマニュアルや、AIの作り方や推論結果の見方や精度の高め方などAIコンサルタントに相談できるサポート体制もありますので安心です。
MatrixFlowのご検討、お見積りなど、お気軽にご相談ください。
お問い合わせは以下からお願いいたします。
マニュアル http://www.matrixflow.net/manual/top/
問い合わせ http://www.matrixflow.net/contact/