Solution of Overfitting


Definition of Overfitting



:train setは正しいがvalidation/test setは正しくない

Regularization



定義
  • :train setが正しくなく、継ぎ手を妨げる.そのため、列車損失は増加するが、検証/テスト損失は減少する.
  • Lp norm

  • の範数:ベクトル、関数と行列の大きさを求めます
  • :pの値によってL 1かL 2かを決定します.

    vector norm


    i)pが自然数の場合
    x=np.array([1,10,1,1,1])
    p=5
    norm_x=np.linalg.norm(x, ord=p)
    making_norm = (sum(x**p))**(1/p)
    print("result of numpy package norm function : %0.5f "%norm_x) 
    print("result of making norm : %0.5f "%making_norm)
    ii)pが無限大の場合
    norm_x=np.linalg.norm(x, ord=np.inf)
    print("result of infinite norm : %0.5f "%norm_x)

    matrix norm


    :p=1,pが無限大であれば,把握すればよい.
    i)p=1、最大の列と値を出力
    ii)p無限大,Louの和出力最大値
    :A=m*n行列
    A=np.array([[1,2,3],[1,2,3],[4,6,8]])
    inf_norm_A=np.linalg.norm(A, ord=np.inf)
    print("result inf norm of A :", inf_norm_A)
    one_norm_A=np.linalg.norm(A, ord=1)
    print("result one norm of A :", one_norm_A)

    L1 Regularization


  • 式:

  • 機能:
    	- 어떤 컬럼이 결과에 영향을 미치는지에 대해서 알 수 있다. 
  • はこれにより次元を縮小する効果を生じ,結果は予測できる.
  • の2つのスーパーパラメータはerro値
  • に影響する.
  • Xが2 D以上の値を持つデータであれば、より効果的です.
  • Xが1次元であれば意味がありません.
  • 菱形:

  • 例:
  • *失われた問題
    plt.figure(figsize=(5,5))
    plt.scatter(X,Y)
    plt.plot(X,linear.predict(X.reshape(-1,1)),'-b')
    plt.title('petal-sepal scatter with linear regression') 
    plt.xlabel('petal length (cm)')
    plt.ylabel('sepal length (cm)')
    plt.grid()
    plt.show()

    L2 Regularization

  • 式:

  • 機能:

  • 円の形態:

  • しゅうそくそくどが速い
    ->2乗基準が結果に大きな影響を与える場合は、それをより大きいまたはより小さい位置に送信します.
  • *Ridge問題
    #L2 regularization은 Ridge로 import 합니다. 
    from sklearn.linear_model import Ridge
    
    L2 = Ridge()
    L2.fit(X.reshape(-1,1), Y)
    a, b = L2.coef_, L2.intercept_
    print("기울기 : %0.2f, 절편 : %0.2f" %(a,b))
    
    plt.figure(figsize=(5,5))
    plt.scatter(X,Y)
    plt.plot(X,L2.predict(X.reshape(-1,1)),'-b')
    plt.title('petal-sepal scatter with L2 regularization(Ridge)') 
    plt.xlabel('petal length (cm)')
    plt.ylabel('sepal length (cm)')
    plt.grid()
    plt.show()

    Normalization



    定義
  • :データ前処理プロセスは列車に適している.

  • 例:z-scoreまたはminmax scalerを使用して、値分布を0と1の間の右に調整します.

  • 効果:データ値の分布による距離の歪みによる学習の妨げとなる問題の解決
  • Batch Normalization


  • 機能:
  • の精度と速度
  • を向上
  • 損失関数を減らす速度が速くなります.
  • 標準化、分布均一
  • ϵ--> 勾配消失,explode問題解決->安定学習
  • Dropout


  • 定義:情報をランダムに選択して渡す

  • 機能:
  • を超える継ぎ手の規則化層の1つを阻止する.
  • 完全接続層に継ぎ手がある場合は、
  • を追加します.

  • コード実装
  • tf.keras.layers.Dropout(rate, noise_shape=None, seed=None, **kwargs)
    >>> tf.random.set_seed(0)
    >>> layer = tf.keras.layers.Dropout(.2, input_shape=(2,))
    >>> data = np.arange(10).reshape(5, 2).astype(np.float32)
    >>> print(data)
    [[0. 1.]
     [2. 3.]
     [4. 5.]
     [6. 7.]
     [8. 9.]]
    >>> outputs = layer(data, training=True)
    >>> print(outputs)
    tf.Tensor(
    [[ 0.    1.25]
     [ 2.5   3.75]
     [ 5.    6.25]
     [ 7.5   8.75]
     [10.    0.  ]], shape=(5, 2), dtype=float32)