1. 程式人生 > >SVR,時間序列分析的評價指標,python資料標準化

SVR,時間序列分析的評價指標,python資料標準化

知識點

  1. SVR

    • 參考
    • 支援向量機(SVM)是一種分類演算法,但是也可以做迴歸,根據輸入的資料不同可做不同的模型(若輸入標籤為連續值則做迴歸,若輸入標籤為分類值則用SVC做分類
    • 對於SVM演算法,我們首先匯入sklearn.svm中的SVR模組。SVR()就是SVM演算法來做迴歸用的方法(即輸入標籤是連續值的時候要用的方法),通過以下語句來確定SVR的模式:
        from sklearn.svm import SVR
         
        svr = SVR(kernel=’rbf’, C=1e3, gamma=
      0.01)
      • kernal:核函式型別。一般常用的有‘rbf’,‘linear’,‘poly’,等,發現使用‘rbf’引數時函式模型的擬合效果最好,其他擬合都是線性擬合。
      • C:懲罰因子。C表徵你有多麼重視離群點,C越大越重視,越不想丟掉它們。C值大時對誤差分類的懲罰增大,C值小時對誤差分類的懲罰減小。當C越大,趨近無窮的時候,表示不允許分類誤差的存在,margin越小,容易過擬合;當C趨於0時,表示我們不再關注分類是否正確,只要求margin越大,容易欠擬合。
      • gamma:是’rbf’,’poly’和’sigmoid’的核係數且gamma的值必須大於0。隨著gamma的增大,存在對於測試集分類效果差而對訓練分類效果好的情況,並且容易泛化誤差出現過擬合。
  2. 時間序列分析的評價指標

    • 均方誤差(MSE)
      1 m i
      = 1 m ( y i y i ^ ) 2 \frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2

      其中 y i y_i 是真實值, y i ^ \hat{y_i} 是預測值
    • 均方根誤差(RMSE)
      1 m i = 1 m ( y i y i ^ ) 2 \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2}
      均方根誤差就是均方誤差開方,使誤差的量級和原資料一致,使資料更好描述
    • 平均絕對誤差(MAE)
      1 m i = 1 m y i y i ^ \frac{1}{m}\sum_{i=1}^{m}\lvert y_i - \hat{y_i}\rvert
    • 對稱平均絕對百分誤差(SMAPE)
      100 % n i = 1 n y i y ^ i ( y i + y ^ i ) / 2 \frac{100\%}{n} \sum_{i=1}^n \frac{\lvert y_i - \hat{y}_i \rvert}{(\lvert y_i \rvert + \lvert \hat{y}_i \rvert)/2}
  3. 資料標準化

    [In]:
    import numpy as np
    from sklearn.preprocessing import MinMaxScaler
    
    # 用最大最小值標準化
    scaler = MinMaxScaler(feature_range=(0,  1))
    arr = np.array([1,2,3,4,5,6,7])
    # 講arr變形為[[1][2][3][4][5][6][7]],因為fit_transform需要2維輸入
    arr = arr.reshape(-1, 1)
    print(arr)
    # fit_transform(arr)將arr實現標準化
    dataset = scaler.fit_transform(arr)
    # ravel()的作用是將n維矩陣降為1維
    dataset = dataset.ravel()
    print(dataset)
    
    [Out]: 
    [[1]
    [2]
    [3]
    [4]
    [5]
    [6]
    [7]]
    
    [0. 0.16666667 0.33333333 0.5 0.66666667 0.83333333 1. ]