ja ja ja en ja en ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja en ja ja ja ja ja en ja vi ja ja ja en ja ja en zh ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja en ja sv ja fr ja de ja de ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja en ja en
( New ) 新連載スタート!2人の会話形式でPythonを学ぶ「週末Pythonゆる講座」はこちら ▶▶
平均平方二乗誤差とも呼ばれる指標で、各レコードの「真の値」と「予測値」の差分を二乗して、平均を取った後に平方根を取ると算出できます
RMSEは最小値=0で、小さければ小さいほど良い指標です
正解の値と予測の値の差分を小さくするように機械学習モデルを修正します
Pythonでの算出方法
PythonでRMSEを算出するにはsklearnでmean_squared_errorを利用します
実はRMSE単体の関数ではなく、平方根(Root)が無い数値が算出されるため、Numpyで平方根を付ける必要があります
from sklearn.metrics import mean_squared_error import numpy as np
実数値と予測値の2つを用意して、mean_squared_errorに代入します
そこからsqrtを利用して、平方根を取ります
y_test = [100,120,80] y_pred = [110,130,70] rmse = np.sqrt(mean_squared_error(y_test,y_pred)) rmse
機械学習モデルでの実践
最後に機械学習モデルを使ってRMSEを算出する流れをご紹介します
SeabornのTipsデータソースを使います
外国の食文化の一つである「チップ」についてのデータで、総額や性別、曜日やタバコの有無などから「チップ」の額を予測します
import seaborn as sns import pandas as pd df = sns.load_dataset('tips') df.head()
続いて説明変数(df_x)と目的変数(df_y)に分けて、get_dummiesで前処理をしておきます
df_x = df.drop('tip', axis=1) df_x = pd.get_dummies(df_x) df_y = df['tip']
ランダムフォレスト(RandomForestRegressor)を使ってチップの額を予測します
変数pred_mlにチップの予測金額を代入します
from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor train_x, test_x, train_y, test_y = train_test_split(df_x, df_y,random_state=1) model = RandomForestRegressor(n_estimators=100,random_state=1) model.fit(train_x,train_y) pred_ml = model.predict(test_x)
そして比較対象のため、もう一つチップの予測を行います
慣習としてチップの額は「食事の総額の20%」と言われているため、単純にtotal_bill(総額)を20%した数値を変数pred_tipとします
pred_tip = test_x['total_bill']*0.2
テスト用の実数test_yを正解として、この2つをRMSEで比較します
from sklearn.metrics import mean_squared_error rmse_ml = np.sqrt(mean_squared_error(test_y,pred_ml)) rmse_tip = np.sqrt(mean_squared_error(test_y,pred_tip)) print('rmse_ml',rmse_ml) print('rmse_tip',rmse_tip)
前述したとおり、RMSEは小さければ小さいほど良い指標です
機械学習モデルで予測した方が、雑に20%した方よりRMSEの値が小さい=精度が高いことが分かりました
今回は機械学習モデルの回帰タスクを評価する指標であるRMSEについてご紹介してきました
回帰タスクで代表的な指標なので、ぜひ覚えて使ってみてください
分類タスクにおける指標についてはこちらで解説しています
2021-12-27【機械学習】分類の評価指標を一番分かりやすく解説|confusion-matrix
コメントを残す コメントをキャンセル
メールアドレスが公開されることはありません。 * が付いている欄は必須項目です
次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。
ポケモンで学ぶPython|#6 最強ピボットテーブル
ポケモンで学ぶPython|#7 文字列を扱う
ご質問・ご意見をお聞かせください
Smart-Hint(編集長)
検索エンジン企業のデータサイエンティスト
分かりやすさ重視のプログラミング学習を提供します
【Python】drop|表の行・列を削除する方法を解説 7540 views
【Python】日付型データから年・月・日を取り出す方法|datetime 6920 views
【Python】seabornで綺麗なグラフ作成を!たった1行で書けます 6283 views
【Python】DataFrameで特定の列を抽出する方法 5741 views
【Python】read_excel|エクセルをPythonに読み込む方法 5734 views
RMSE(平均平方二乗誤差)
Pythonでの算出方法
機械学習モデルでの実践
【Python】処理時間を3行のコードで取得する方法|time
【Python】日付の差分を算出する方法|datetime
【機械学習】パラメータの調整を徹底解説|GridSearchCV
アーカイブ 月を選択 2022年5月  (3) 2022年4月  (4) 2022年3月  (5) 2022年2月  (7) 2022年1月  (11) 2021年12月  (9) 2021年11月  (10) 2021年10月  (14) 2021年9月  (7) 2021年8月  (5) 2021年7月  (6) 2021年6月  (2) 2021年5月  (12) 2021年4月  (7) 2021年3月  (10) 2021年2月  (15) 2021年1月  (18) 2020年12月  (19) 2020年11月  (14) 2020年10月  (3)