ML.NETの 回帰タスク のチュートリアル
チュートリアルをやったメモ です
---
お題:
タクシー運賃を予測する回帰モデルを構築して価格を予測しましょう
ML.NET を使用して、料金 (具体的にはニューヨーク市のタクシー運賃) を予測する回帰モデルを構築する方法を示します。
作るもの:
C# コンソールアプリ(.NET6)
材料:
taxi-fare-train.csv データ セット と、
taxi-fare-test.csv テストデータ セット
(データセットのCSVファイルの ヘッダ列名 と、そのデータの意味) taxi-fare-train.csv
提供されているデータ セットには、次の列が含まれます。
table:データセットの内容
1. vendor_id タクシー会社の名前
2. rate_code タクシー旅行のレートの種類
3. passenger_count 旅行の乗客数
4. trip_time_in_secs 旅行の所要時間
5. trip_distance 旅行の距離
6. payment_type 支払い方法 …現金またはクレジット カード
7. fare_amount 支払った合計タクシー運賃
---
(用語)
→ データの特徴 をトレーニングして「ラベル」の値を予測する事ができるようになったもの です (イメージ)機械学習で
特徴として与えたデータ項目の値の組み合わせを引数として受け取って
ラベル の値を求めて戻り値として返す「関数(メソッド)」 を作ってくれる? みたいな感じです
それで、
そのトレーニングした[モデル]を使えば、
引数にするデータが「未知の組み合わせ」の ときの「ラベルの値」を求められる。 (→ 値を予測できる、ということ)
機械学習において「予測する(したい)データ」の事を ラベル と呼ぶ (らしい) ---
(本題)
(..チュートリアルの お題 でやりたい事を一旦 再確認する)
→ タクシー運賃を予測したい。
つまりやる事としては 、
回帰モデルの機械学習を使って「`タクシー運賃を予測する モデル 」を作る。ということ チュートリアルでやる事の流れのイメージとしては (↓)こんな感じ
①:過去の「1回あたりのタクシー乗車時の記録」のデータを@学習したモデルを生成]する。
②:トレーニングしたモデルを使って、引数(タクシー乗車条件)の組み合わせが「異なるパターン」の「支払い額」の[値を予測]`する。
--
モデルとは?
→?
「学習」の成果物
データセットのデータでモデルをトレーニングして 生成 する 。 今回のお題でいうと、やることは
機械学習によって
データセットの1~6列目のデータから7列目の値を求めて出力する 関数(メソッド)を作る(生成する)
みたいな感じです
データセットのデータを使って「モデル」をトレーニング(学習させる)する。
トレーニングしたモデル
→ トレーニングしたモデル とは、予測したい値を返す「関数」みたいなものです
トレーニングによってモデルは「関数」をつくる
インプット(引数)として「予測したい条件」のときの各データ項目の値を入力すると、 「予測したい[ラベル]の値」(→ タクシー運賃)を予測して値を返してくれる
→ モデルを生成することで、その関数を使って
プログラム上でメソッドとして呼び出せるようになる、みたいな感じになります
つまり、 トレーニングするとは一体何をトレーニングするのかというと、
学習に使う各データ項目の値(の組み合わせ)を手掛かりに、その条件の時の「ラベルの値」を予測する関数をトレーニングする みたいな感じか
--
(疑問)
なにかの値(ラベル)を「予測」って、
「予測する」って具体的にはどうやるのか?(コード的にはどんな実装 的な疑問)
→ 予測したい「とき」のシチュエーション? 条件?を、モデル に渡す引数の組み合わせでうまく表現してね、ということ
(何も分からない)
たぶんみんな、「モデルに渡す引数の組み合わせをいかにうまく調整していくか」がとにかく課題なのでは(知らない)
うまく学習する(予測の精度を上げる?)には どうしたらいいのか?
例えば、データセットの項目を見直す とか?
..
あと例えば、生成したモデルを「評価」したスコアを参考にする? とか ?
--
↓
(チュートリアルの 続き)
テストデータセット とは、
データセットの一部を品質チェックとして使って、モデルを評価します。←この分のデータのことです
評価メトリックを生成します。
回帰モデルの 評価メトリックの1 つ
RSquared は 0 から 1 までの値を取ります。
RSquared 値が 1 に近づくほど、優れたモデルになります。
回帰モデルの評価メトリックの 1 つです。 RMS が低いほど、優れたモデルになります。
,,(↓)チュートリアルをやってみた結果
(キャプチャ)チュートリアルで作ったPGの実行結果
画面の内容:チュートリアルで作った モデル を評価した「スコア」を表示しています
RSquared値 → 0.89
RMS値 → 3.3
https://scrapbox.io/files/6779d8a90aa16240d2801a78.png
これは、できたモデルはスコア的にはあんまりよくない感じ ってこと なのか..?(結局よくわかってない)
作ったもの
チュートリアルの成果物のプログラム のソース
(チュートリアルは以上)
---
データセットのデータ項目の「特徴」の選び方、ポイント
4. trip_time_in_secs 旅行の所要時間 ←これは「特徴」にしません
旅行が終わる前に、旅行の運賃を予測したいと考えます。 その時点では、旅行の所要時間はわかりません。 したがって、旅行の所要時間は特徴ではなく、この列はモデルから除外します。
..