例を含む線形回帰アルゴリズム入門


本論文では,例題を含む線形回帰アルゴリズムについて学びます.まず,線形回帰アルゴリズムの基本を理解し,線形回帰に含まれるステップと,線形回帰の例を見る.
回帰は2つ以上の変数間の関係を決定するための教師つき学習手法である.「回帰は、データ点と回帰線の間の垂直距離が最小であるような方法で目標予測子グラフのすべてのデータ点を通過する線またはカーブにフィットします」.回帰は主に予測,時系列解析,予測などに使用される.線形回帰,多重線形回帰,ロジスティック回帰,多項式回帰のような回帰アルゴリズムの多くがある.
線形回帰は,連続変数間の関係に基づく予測に用いる統計的方法である.簡単な言葉では、線形回帰は独立変数(x軸)と従属変数(y軸)の間の線形関係を示し、結果的に線形回帰と呼ばれる.つの入力変数(x)があるならば、そのような線形回帰は、単純な線形回帰と呼ばれています.そして、1つ以上の入力変数があれば、そのような線形回帰は、複数の線形回帰と呼ばれる.
線形回帰モデルは、以下のグラフに示すように、傾斜直線としての変数間の関係を表している.x(独立変数)の値が増加すると、y(依存変数)の値も同様に増加する.線形回帰では、与えられたデータポイントに適合するグラフで示される赤い線に似た最適な直線を見つけます.

数学的には線形回帰を表す.
単純線形回帰のためのY=A+BX,CHEN
多重線形回帰のためのY=A+B 1 X 1+B 2 X 2+B 3 X 3+…
これらの式を仮説関数と呼ぶこともある.
どこ
ラインまたはバイアスのインターセプト
ライナー回帰因子またはスケールファクタまたは重み
独立変数とは
y =変数

線形回帰分析の間、我々はトレーニングデータとしてXsとYを与えられます、そして、我々は迎撃(A)と回帰要因(B、B 1、B 2、…)を得なければなりません.一旦我々が適切なインターセプトと回帰因子の値を得るならば、彼らはXの入力値のためにYの値を予測するのに用いられることができます.
簡単にするために今から単純な線形回帰を考える.

従属変数と独立変数の関係を示す線形線は、算回帰線と呼ばれる.独立変数と従属変数の関係に基づいて,回帰線は2種類である.
負の線形関係
y軸上で従属変数が減少し、x軸上で独立変数が増加する場合、そのような関係は負の線形関係と呼ばれる.

この条件では、式はy = - a + bxとなります

正の線形関係
y軸上で依存変数が増加し、独立変数がx軸上で増加する場合、そのような関係は正の線形関係と呼ばれる.

この条件では、式はy = a + bxとなります

最高のフィットラインを見つける方法
先に述べたように、線形回帰の主な動機は、与えられたデータポイントに最適なフィット線を見つけることです.そして、この最適フィットラインを見つけるプロセスは、線形回帰の学習と呼ばれます.最良のフィット線を見つけることは、与えられたデータセットに基づいてAとBのために最高の値を得ることを意味します.最適フィットラインは、最小誤差(すなわち、予測値と実際の値との間の誤差を最小化すべきである)でなければならない.
Cost function:
コスト関数は、線形回帰モデルがどのように実行されているかを示すエラー測定関数です.それはyの予測値を同じ入力のyの実際の値と比較します.そこには様々な種類のコスト関数があります.あなたはそれらについて読むことができますhere . 線形回帰分析のために一般的に平均二乗誤差(mse)を用いた.

ここで、Tiが実際値/真値である場合、Yi−Instrountは予測値であり、nはデータの総数である.

Gradient Descent:
最適フィットラインを得るためには、コスト関数が最小になるようにA、Bの適切な値を見つけなければならない.コスト関数を最小化するために勾配降下アルゴリズムを用いる.勾配降下は反復アルゴリズムである.このアルゴリズムの背後にあるアイデアは、A、Bのランダム値から始まり、コスト関数が最小になるように値を反復的に更新することである.勾配降下アルゴリズムについて詳細に読むvisit this .

線形回帰アルゴリズムに含まれるステップ
基本的な概念をカバーしているので、線形回帰アルゴリズムに関わるステップを見てみましょう.
  • 与えられたデータを準備します.ここからもっと読みなさい.
  • 仮説関数を決定する(単純線形回帰のために、y = a + bxは仮説関数である)
  • aとbをいくつかのランダム値で初期化します.
  • 勾配降下アルゴリズムを使用して、パラメータAとBを更新します.
  • ヤンの予測を計算する
  • コスト関数計算
  • パラメータに関するコスト関数の勾配を計算します(DJ/DA、DJ/DB)
  • このグラデーションを使用してAとBを更新します.
  • A = A - LR * ( DJ/DA )

  • LRは学習率です.
  • 所望の結果が得られるまで、ステップIからIVまで繰り返す(すなわち、コスト関数が最小化される)
  • 一旦勾配降下が完了すると、コスト関数が最小のAとBの更新値を取得します.そして、これらの値に対応する行が最適な行になります.
  • ステップは、複数の線形回帰に似ています.

    線形回帰例
    この記事が例で線形回帰アルゴリズムを学習しているという紹介セクションで以前に述べたように、現在、それをする時間です.我々は、あなたが中で見つけることができる例を見ますscikit-learn.org.
    この線形回帰例では,糖尿病データセットを使用する.あなたはそれについての詳細を見つけることができます here. 以下の例は、2次元プロット内のデータ点を説明するために、1つの機能を使用している.直線はプロット内で見ることができ、線形回帰はどのようにデータ集合の観測された応答の間の二乗の残留和を最適に最小化する直線を描画しようとし、線形近似によって予測される応答を示している.
    係数、正方形の残留和、および決定係数も計算される.
    # Code source: Jaques Grobler
    # License: BSD 3 clause
    
    
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import datasets, linear_model
    from sklearn.metrics import mean_squared_error, r2_score
    
    # Load the diabetes dataset
    diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
    
    # Use only one feature
    diabetes_X = diabetes_X[:, np.newaxis, 2]
    
    # Split the data into training/testing sets
    diabetes_X_train = diabetes_X[:-20]
    diabetes_X_test = diabetes_X[-20:]
    
    # Split the targets into training/testing sets
    diabetes_y_train = diabetes_y[:-20]
    diabetes_y_test = diabetes_y[-20:]
    
    # Create linear regression object
    regr = linear_model.LinearRegression()
    
    # Train the model using the training sets
    regr.fit(diabetes_X_train, diabetes_y_train)
    
    # Make predictions using the testing set
    diabetes_y_pred = regr.predict(diabetes_X_test)
    
    # The coefficients
    print('Coefficients: n', regr.coef_)
    # The mean squared error
    print('Mean squared error: %.2f'
          % mean_squared_error(diabetes_y_test, diabetes_y_pred))
    # The coefficient of determination: 1 is perfect prediction
    print('Coefficient of determination: %.2f'
          % r2_score(diabetes_y_test, diabetes_y_pred))
    
    # Plot outputs
    plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
    plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
    
    plt.xticks(())
    plt.yticks(())
    
    plt.show()
    出力:
    Coefficients:
     [938.23786125]
    Mean squared error: 2548.07
    Coefficient of determination: 0.47