回帰評価指標


1.回帰アルゴリズム評価


どのモデルが良いモデルであるかをどのように評価しますか?
目標の達成度を評価する必要があります
実際の値とモデル予測値の差に基づく評価方法=>Loss関数を使用します.
例)RSS、MSE、MAE、MAPE、R^2

2.RSS-単純誤差


  • 実績値と予測値の単純誤差二乗和
    損失に類似

  • 値が小さいほど、モデルのパフォーマンスが向上します.

  • すべてのデータの実績値と予測値の誤差二乗の合計.

  • 特長
  • 最も簡単な評価方法であり、直感的な解釈を提供することができる
  • であるが誤差がないため、入力値の大きさ
  • に依存する.
  • 絶対値は
  • と比較できません
    2番と3番に続くフィーチャー->データの元の値自体が大きい場合、RSS値も大きくなり、予測されたデータが非常に近い場合でも大きくなります.どちらのモデルがいいかはあいまいです.

    3.MSE、MAE-絶対寸法指標


    Mean Squared Error
    平均二乗誤差、RSSでデータ数で割った値
    小さいほど、モデルのパフォーマンスが向上します.
    習ったLoss関数と同じ数式...
    =>Lossはモデルで減らさなければならない値(それだけ)であり,その形状は必ずしもそうではない.計算のためで、特定の指標ではありません!
    MSEは指標であり、Lossはそのモデルで減少した値と目標でなければならない.
    我々が学んだモデルは,回帰モデルでは通常MSEをLossとして用いているが,他の場所ではLossとして他のものを用いてもよい.(分類ではEntropyと呼ぶ)
    MAE Mean Absolute Error
    平均絶対値誤差、実績値および予測値誤差の絶対値の平均.
    小さいほど、モデルのパフォーマンスが向上します.
    特長
  • MSE:異常値(群外値):データの中で大幅に下がる値に対して非常に敏感(1つの誤った予測値に1つの誤った値を乗じて、非常に大きいことを反映する)
  • MAE:大きな変動性指標と低い変動性指標を予測する際に非常に有用である
  • 最も簡単な評価方法は、直感的な解釈
  • を提供することができる.
  • 平均値は使用するが、入力値の大きさ
  • に依存する.
  • 絶対値は
  • と比較できません

    4.R^2 R square(決定係数)


    回帰モデル記述能力を表す指標
    1に近い場合は、よりパフォーマンスの高いモデルとして解釈できます.
    !絶対値は比較できます!
    1-予測値との差二乗和(RSS)/平均値との差二乗和(TSS)

    予測が良ければ良いほどRSS値は小さくなるので、1に近いほど予測レベルが単純平均値に相当する場合は0に近く、予測結果が単純平均値に及ばない場合はRSSがTSSより大きくなるため、決定係数値は負になる可能性がある.
    特長
  • 誤差が小さいほど、1の値
  • に近い.
  • 値0出力データ平均値を表す直線モデル
  • の負の値が発生した場合、パフォーマンスは平均値の予測に及ばない

    5.実習


    販売予測モデルの性能を評価するために,複数の回帰アルゴリズム評価指標を用いて比較する.
    本実験では,学習と評価のためのデータのMSEとMAEを計算する.
    MSEとMAEはsklearningライブラリ関数で簡単に入手できます.
    MSE、MAE評価指標を計算する側運転関数/ライブラリ
    mean squared error(y true,y pred):MSE値の計算
    mean absolute error(y true,y pred):MAE値の計算
    説明
    train XデータのMSE、MAE値を計算し、MSE trainおよびMAE trainに格納します.
    test XデータのMSE、MAE値を計算し、MSE testおよびMAE testに格納します.
    import numpy as np
    import pandas as pd
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import r2_score
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import mean_absolute_error
    from sklearn.metrics import mean_squared_error
    
    
    # 데이터를 읽고 전 처리합니다
    df = pd.read_csv("data/Advertising.csv")
    df = df.drop(columns=['Unnamed: 0'])
    
    X = df.drop(columns=['Sales'])
    Y = df['Sales']
    
    train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
    
    
    # 다중 선형 회귀 모델을 초기화 하고 학습합니다
    lrmodel = LinearRegression()
    lrmodel.fit(train_X, train_Y)
    
    
    # train_X 의 예측값을 계산합니다
    pred_train = lrmodel.predict(train_X)
    
    """
    1. train_X 의 MSE, MAE 값을 계산합니다
    """
    MSE_train = mean_squared_error(train_Y, pred_train)
    MAE_train = mean_absolute_error(train_Y, pred_train)
    print('MSE_train : %f' % MSE_train)
    print('MAE_train : %f' % MAE_train)
    
    # test_X 의 예측값을 계산합니다
    pred_test = lrmodel.predict(test_X)
    
    """
    2. test_X 의 MSE, MAE 값을 계산합니다
    """
    MSE_test = mean_squared_error(test_Y,pred_test)
    MAE_test = mean_absolute_error(test_Y,pred_test)
    print('MSE_test : %f' % MSE_test)
    print('MAE_test : %f' % MAE_test)
    
    販売予測モデルの性能を評価するために,複数の回帰アルゴリズム評価指標を用いて比較する.
    本実験では,学習と評価のためのデータのR 2 scoreを計算する.
    R 2 scoreは以下のように定義でき、sklearningライブラリ関数で簡単に入手できます.
    R 2評価指標を計算するための中間実行関数/ライブラリr2_score(y_true, y_pred):R 2 score値計算
    説明
    train XデータのR 2値を算出し、R 2 trainに格納する.
    test XデータのR 2値を計算し、R 2 testに保存します.
    import numpy as np
    import pandas as pd
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import r2_score
    from sklearn.model_selection import train_test_split
    
    from sklearn.metrics import mean_absolute_error
    from sklearn.metrics import mean_squared_error
    
    
    # 데이터를 읽고 전 처리합니다
    df = pd.read_csv("data/Advertising.csv")
    df = df.drop(columns=['Unnamed: 0'])
    
    X = df.drop(columns=['Sales'])
    Y = df['Sales']
    
    train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
    
    
    # 다중 선형 회귀 모델을 초기화 하고 학습합니다
    lrmodel = LinearRegression()
    lrmodel.fit(train_X, train_Y)
    
    
    # train_X 의 예측값을 계산합니다
    pred_train = lrmodel.predict(train_X)
    
    """
    1. train_X 의 R2 값을 계산합니다
    """
    R2_train = r2_score(train_Y,pred_train)
    print('R2_train : %f' % R2_train)
    
    # test_X 의 예측값을 계산합니다
    pred_test = lrmodel.predict(test_X)
    
    """
    2. test_X 의 R2 값을 계산합니다
    """
    R2_test = r2_score(test_Y,pred_test)
    print('R2_test : %f' % R2_test)