線形回帰-単純な線形回帰の定理、回帰係数とスライスを求める


Linear Regressionで学んだことを整理します.

リニア回帰-リニア回帰


Wikipediaでは,従属変数yに対して独立変数Xに対して線形相関モデリングを行う回帰解析法を記載している.この場合、独立変数Xは説明変数とも呼ばれ、異なるところで説明変数Xの変化に応じて変化する目標、すなわち反応変数yの変化の予測方法と見なすことができる.

変数の表示


線形回帰では,異なる変数が現れることがある.
独立変数X:
予測変数
説明変数
「属性」(Feature)
依存変数y:
レスポンス変数
ラベル-in koreanラベル!
ターゲット(Target)
それを表す学問(?)「データ科学」とは異なるが、データ科学では主に特徴(独立変数)と目標(従属変数)として表現される.

回帰と分類


回帰(Regression)は、データ型が数値型(連続型)であるか、分類型(汎用型)であるかによって、まず分類(Classification)と比較される.
通常,分類データは回帰解析ができず,分類(Classification)を行うことは不可能ではなくone-hot符号化により変換すればよい.しかし、これは後で議論し、今日の位置づけは回帰に集中している.

線形回帰の例


回帰の例としては、以下のようにすることができる.
  • 学習時間(独立変数)による試験点数(従属変数)
  • 気温と曜日(独立変数)による海水浴場人員(従属変数)
  • 駅の距離は、眺望(独立変数)による不動産相場(従属変数)
  • ここでのポイントは、「独立変数は複数であってもよく、依存変数は1つしかない」ということです.最終的な目的は,種々の独立変数の変化に起因する従属変数の変化を記述し,変化を予測するモデルを設計することであると言える.

    単純線形回帰


    単純線形回帰と多重線形回帰に分類した場合,その差は独立変数Xの個数である.単純な線形回帰は,その名の通り,独立変数Xが1つしかない単純な線形回帰である.
    単純な線形回帰における回帰線の回帰式の一般式は以下の通りである.
    y^\hat{y}y^​ = β0\beta_0β0​ + β1\beta_1β1​xxx
    y^hat{y}y^:予測の回帰線
    β0\beta_0β0:スライス(y interceptとも呼ばれる).
    β1\beta_1β1:回帰係数(slope,勾配)-反応変数yが記述変数Xの変化に伴って変化する程度
    回帰係数が正の値であると,X値が大きくなり,y値も大きくなる.
    逆に,係数が負の場合,X値が大きくなり,y値が減少する線が現れる.

    予測の回帰線の意味は何ですか?


    回帰線は予測線と言える.これは,所与の変数のデータを関係解析することによって,予測値と観測値の残差を最小化し,最終的に最適予測に達することを意味する.
    一般的には標準モデルを作成し,重み付け学習により適切なプロセスを作成する.
    これらの残差の二乗和を最小化する直線β0,β1\beta_0,\beta_1β0​,β1の値を探します.

    かいきけいすうβ1\beta_1β1どうやって探しますか。


    β1\beta_1β1​ = ∑(x−xˉ)(y−yˉ)∑(x−xˉ)2\frac{\sum(x-\bar{x})(y-\bar{y})}{\sum(x-\bar{x})^2}∑(x−xˉ)2∑(x−xˉ)(y−yˉ​)​


    回帰係数を求める式は以下の通りである.xxx値からxxx平均値とyyy値からyyy平均値を減算し、順次加算し、xxx値からxxx平均値を減算した二乗を1つの値で割った.
    どういう意味かわからないけど….pythonで簡単なデータを直接作成し、可視化します.
    import pandas as pd
    import matplotlib.pyplot as plt
    
    X = pd.DataFrame({'x':[1,2,3,4,5],    # x 축 데이터
                      'y':[2,4,5,4,5]})   # y 축 데이터
    
    plt.scatter(X['x'],X['y']) # 그래프를 그린다
    plt.grid(None)	# 사각 모눈을 그린다

    xxxyyy1224354455
    以上のように、x,yに関するデータが存在し、散点図が描かれると、これらのデータの残差二乗和−RSS(Residential Sum of Squaress−RSS)に基づいて最も低い直線が回帰線となる.
    plt.axhline(y=np.mean(X['y']), color = 'r')   # y축의 평균선에 붉은선을 긋는다. y 평균: 4
    plt.axvline(x=np.mean(X['x']), color = 'b')   # x축의 편균선에 붉은선을 긋는다. x 평균: 3

    x−xˉx-\bar{x}x−xˉ = xxx値-xxx値平均(3)=xx-3
    y−yˉy-\bar{y}y−yˉ=yyy値-yyy値平均(4)=yy-4
    xxxyyyx−xˉx-\bar{x}x−xˉy−yˉy-\bar{y}y−yˉ12-224-1035144105521 xxx平均値=3 yyy平均値=4
    こうやって出てくるxˉx-\bar{x}x−xˉ乗じて、全部加算します.ˉ)(y−yˉ)(x-\bar{x})(y-\bar{y})(x−xˉ)(y−yˉ)を合価で分ける.
    xxxyyyx−xˉx-\bar{x}x−xˉy−yˉy-\bar{y}y−yˉ​(x−xˉ)2(x-\bar{x})^2(x−xˉ)2(x−xˉ)(y−yˉ)(x-\bar{x})(y-\bar{y})(x−xˉ)(y−yˉ)12-2-244424-103540104410552142 xxx平均=3 yyy平均=4および=10および=6
    ∑\sum∑(x−xˉ)2(x-\bar{x})^2(x−xˉ)2 = 10
    ∑\sum∑(x−xˉ)(y−yˉ)(x-\bar{x})(y-\bar{y})(x−xˉ)(y−yˉ​) = 6

    β1\beta_1β1​ = 610\frac{6}{10}106​ = 0.60.60.6

    x = X['x']    # x변수에 모집단 X의 x특성을 할당한다.
    y = X['y']    # y변수에 모집단 X의 y특성(종속변수)를 할당한다.
    m_x = np.mean(X['x']) # m_x 변수에 x의 평균
    m_y = np.mean(X['y']) # m_y 변수에 y의 평균
    numerator = ((x-m_x)*(y-m_y)).sum() #분자식을 정의하고
    denominator = sum(np.square(x-m_x))  #분모도 정의해서
    beta1 = numerator / denominator #분자에서 분모를 나눠주면
    print('회귀계수 beta1 값은 {0}'.format(beta1))      #베타1 회귀계수 값 0.6 확인
    前述したように,Python numpyを用いて回帰係数を求めた.
    かいきけいすうβ1\beta_1β1の値は0.6なので最適化しましたβ0\beta_0β0の値を見つけることもできます.
    y^=β0+β1x\hat{y} =\beta_0 +\beta_1xy^​=β0​+βyの平均値4をy^hat{y}y^,xxxをxxxの平均値3に代入することで求めることができる.このように表現すれば、
    y^=β0+β1x\hat{y} =\beta_0 +\beta_1xy^​=β0​+β1​x
    4 = β0\beta_0β0​ + 0.6 * 3
    4 - 1.8 = β0\beta_0β0​
    β0\beta_0β0​ = 2.2
    従って、スライス(y intercept)は2.2であることがわかる.

    単純な線形回帰モデルを作成し、検証します。

    model = LinearRegression()          # scikit-learn 라이브러리를 사용한다
    
    model.fit(X[['x']], X[['y']])       # model에 x, y데이터를 학습시킨다.
    y_pred = model.predict(X[['x']])    # 학습된 모델에 X데이터를 적용시킨다.
    plt.plot(X['x'], y_pred, color = 'c')  # X데이터에 대한 예측회귀선을 긋는다.
    y_intercept = model.predict([[0]])  # x데이터에 0이 없으므로 0값을 넣어 절편값을 확인한다.
    y_intercept[0][0]

    図に示すように、回帰モデルを青い線で描画することができます.回帰モデルの作成については,再配置する.
    上図ではあまりよく表現されていませんが、スライスは2.2で問題ないことがわかります.

    sklearnライブラリを使用して回帰係数、スライスを求めます。


    実際、scikit-learningライブラリは非常によく、上記の複数回の操作を経ずに完了することができます.下図のように、一蹴します.sklearn最高!
    model.coef_   # 회귀계수 구하기
    model.intercept_   # 회귀계수 구하기
    
    model.coef_[0][0],  model.intercept_[0]   
    (0.6, 2.2)

    線形回帰におけるいくつかの重要な用語。


  • 予測値(predict):確立された線形回帰モデルが推定した値、回帰線上の独立変数の依存変数を指す.

  • 残差:予測値と観測値の違い

  • 誤差(error):募集団における予測値と観測値の違い

  • 残差二乗和(RSS):モデルのコスト関数を回帰します.回帰モデルの残差二乗和は共に加算され,小さいほど予測がよい.これは予測値が観測値から離れていないことを意味する.

  • 学習:コスト関数(例えば、残差二乗和)を最小化できるモデルを探します.

  • 外挿:学習データの範囲を超えた値を予測します.

  • ベースモデル:最も簡単で、最も直感的で、性能が最も低く、第1の学習モデルの性能比較に使用されます.
    -分類問題ベースモデル:ターゲット(y)の最空きクラス
    -回帰問題に基づくモデル:ターゲット(y)の平均
    -クロック列回帰問題に基づくモデル:古いタイムスタンプ値