機械学習 データから学習して予測できるアルゴリズムと統計モデルの開発に焦点を当てた人工知能の分野です。 線形回帰 これも機械学習アルゴリズムの一種であり、より具体的には 教師あり機械学習アルゴリズム ラベル付きデータセットから学習し、データ ポイントを最も最適化された線形関数にマッピングします。これは、新しいデータセットの予測に使用できます。
まず、教師あり機械学習アルゴリズムとは何かを知る必要があります。これは機械学習の一種で、アルゴリズムがラベル付きデータから学習します。ラベル付きデータは、それぞれの目標値がすでにわかっているデータセットを意味します。教師あり学習には 2 つのタイプがあります。
- 分類 : 独立した入力変数に基づいてデータセットのクラスを予測します。クラスはカテゴリ値または離散値です。動物のイメージは猫か犬ですか?
- 回帰 : 独立した入力変数に基づいて連続出力変数を予測します。たとえば、築年数、幹線道路からの距離、場所、エリアなどのさまざまなパラメータに基づいた住宅価格の予測などです。
ここでは、最も単純なタイプの回帰の 1 つについて説明します。 線形回帰。
目次
- 線形回帰とは何ですか?
- 線形回帰の種類
- 最適なフィットラインは何ですか?
- 線形回帰のコスト関数
- 単線形回帰の仮定
- 重線形回帰の仮定
- 線形回帰の評価指標
- 線形回帰の Python 実装
- 線形モデルの正則化手法
- 線形回帰の応用
- 線形回帰の長所と短所
- 線形回帰 – よくある質問 (FAQ)
線形回帰とは何ですか?
線形回帰は次のタイプです。 教師あり機械学習 観測データに線形方程式を当てはめることによって、従属変数と 1 つ以上の独立特徴の間の線形関係を計算するアルゴリズム。
独立した特徴が 1 つだけある場合、それは次のように呼ばれます。 単純な線形回帰 、複数の特徴がある場合、それは次のように呼ばれます。 重線形回帰 。
同様に、従属変数が 1 つだけの場合は、 単変量線形回帰 、一方、複数の従属変数がある場合、それは次のように呼ばれます。 多変量回帰 。
線形回帰が重要な理由
線形回帰の解釈可能性は注目すべき強みです。モデルの方程式は、従属変数に対する各独立変数の影響を明らかにする明確な係数を提供し、基礎となるダイナミクスのより深い理解を促進します。線形回帰は透過的で実装が簡単で、より複雑なアルゴリズムの基礎概念として機能するため、そのシンプルさは長所です。
線形回帰は単なる予測ツールではありません。それはさまざまな高度なモデルの基礎を形成します。正則化やサポート ベクター マシンなどの技術は、線形回帰からインスピレーションを得て、その有用性を拡大します。さらに、線形回帰は仮定テストの基礎であり、研究者がデータに関する重要な仮定を検証できるようになります。
線形回帰の種類
線形回帰には主に 2 つのタイプがあります。
単純な線形回帰
これは線形回帰の最も単純な形式であり、1 つの独立変数と 1 つの従属変数のみが含まれます。単純な線形回帰の方程式は次のとおりです。
どこ:
- Y は従属変数です
- X は独立変数です
- β0 は切片です
- β1 は傾きです
重線形回帰
これには、複数の独立変数と 1 つの従属変数が関係します。重回帰式は次のとおりです。
どこ:
- Y は従属変数です
- X1、X2、…、Xp は独立変数です。
- β0 は切片です
- β1、β2、…、βn は傾きです。
アルゴリズムの目標は、 ベストフィットライン 独立変数に基づいて値を予測できる方程式。
回帰では、レコードのセットが X 値と Y 値とともに存在し、これらの値は関数の学習に使用されるため、未知の X から Y を予測する場合は、この学習された関数を使用できます。回帰では、Y の値を見つける必要があります。そのため、独立した特徴として X が与えられた回帰の場合、連続的な Y を予測する関数が必要です。
最適なフィットラインは何ですか?
線形回帰を使用する際の主な目的は、最適な直線を見つけることです。これは、予測値と実際の値の間の誤差を最小限に抑える必要があることを意味します。最適な直線では誤差が最も少なくなります。
最良の適合線方程式は、従属変数と独立変数の間の関係を表す直線を提供します。線の傾きは、独立変数の単位変化に対して従属変数がどの程度変化するかを示します。

線形回帰
ここで、Y は従属変数またはターゲット変数と呼ばれ、X は Y の予測子としても知られる独立変数と呼ばれます。回帰に使用できる関数やモジュールには多くの種類があります。一次関数は最も単純なタイプの関数です。ここで、X は問題を表す単一の特徴または複数の特徴です。
線形回帰は、指定された独立変数 (x) に基づいて従属変数の値 (y) を予測するタスクを実行します。したがって、名前は線形回帰です。上の図では、X(インプット)はその人の職歴、Y(アウトプット)は給与です。回帰直線は、モデルに最適な直線です。
線の重みや係数の値が異なると回帰直線も異なるため、コスト関数を利用して最良の値を計算し、最適な適合線を取得します。
線形回帰における仮説関数
前に仮定したように、私たちの独立した特徴は経験、つまり X であり、それぞれの給与 Y は従属変数です。 X と Y の間に線形関係があると仮定すると、給与は以下を使用して予測できます。
または
ここ、
y_i epsilon Y ;; (i= 1,2, cdots , n) データへのラベルです (教師あり学習)x_i epsilon X ;; (i= 1,2, cdots , n) 入力独立トレーニング データ (単変量 – 1 つの入力変数 (パラメーター))hat{y_i} epsilon hat{Y} ;; (i= 1,2, cdots , n) は予測値です。
モデルは、最適な θ を見つけることによって、最適な回帰直線を取得します。1とθ2価値観。
- 私 1 : インターセプト
- 私 2 : xの係数
最適なθを見つけたら1とθ2値を指定すると、最適な線が得られます。したがって、最終的にモデルを予測に使用するとき、モデルは x の入力値に対する y の値を予測します。
θの更新方法 1 とθ 2 最適な直線を取得するには値をどうすればよいでしょうか?
最適な回帰直線を達成するために、モデルは目標値を予測することを目的としています。
線形回帰のコスト関数
の コスト関数 または 損失関数 予測値間の誤差または差異に他なりません
線形回帰では、 平均二乗誤差 (MSE) 予測値間の二乗誤差の平均を計算するコスト関数が使用されます。
MSE 関数は次のように計算できます。
MSE 関数を利用して、勾配降下法の反復プロセスを適用して の値を更新します。
このプロセスには、MSE から計算された勾配に基づいてパラメーター ( heta_1) と ( heta_2) を継続的に調整することが含まれます。最終結果は、予測値と実際の値の間の全体的な二乗差を最小化する線形回帰直線となり、データの基礎となる関係を最適に表現します。
線形回帰の勾配降下法
線形回帰モデルは、最適化アルゴリズムを使用してトレーニングできます。 勾配降下法 モデルのパラメータを繰り返し変更して、 平均二乗誤差 (MSE) トレーニング データセット上のモデルの。 θを更新するには1とθ2コスト関数を削減し (RMSE 値を最小化し)、モデルが勾配降下法を使用する最適な直線を達成するために値を調整します。アイデアはランダムな θ から始めることです1とθ2値を繰り返し更新し、最小コストに達します。
勾配は、入力のわずかな変化による関数の出力への影響を定義する導関数に他なりません。
コスト関数(J)を微分してみます。
コスト関数(J)を微分してみます。
線形回帰の目的は、トレーニング データに最もよく適合する線形方程式の係数を見つけることです。係数に関して平均二乗誤差の負の勾配の方向に移動することにより、係数を変更できます。そして、X のそれぞれの切片と係数は次のようになります。
勾配降下法
単線形回帰の仮定
線形回帰は、変数の動作を理解して予測するための強力なツールですが、正確で信頼できる解を得るには、いくつかの条件を満たす必要があります。
- 直線性 : 独立変数と従属変数は互いに線形関係にあります。これは、従属変数の変化が独立変数の変化に線形的に続くことを意味します。これは、データ ポイントを通過できる直線が存在する必要があることを意味します。関係が線形でない場合、線形回帰は正確なモデルではありません。

- 独立 : データセット内の観測値は互いに独立しています。これは、ある観測値の従属変数の値が、別の観測値の従属変数の値に依存しないことを意味します。観測値が独立していない場合、線形回帰は正確なモデルではありません。
- 等分散性 : 独立変数のすべてのレベルにわたって、誤差の分散は一定です。これは、独立変数の量が誤差の分散に影響を与えないことを示しています。残差の分散が一定でない場合、線形回帰は正確なモデルではありません。

線形回帰における等分散性
- 正常 : 残差は正規分布する必要があります。これは、残差が釣鐘型の曲線に従う必要があることを意味します。残差が正規分布していない場合、線形回帰は正確なモデルではありません。
重線形回帰の仮定
重線形回帰の場合、単線形回帰の 4 つの仮定がすべて適用されます。これに加えて、以下もいくつかあります。
- 多重共線性なし : 独立変数間に高い相関関係はありません。これは、独立変数間に相関関係がほとんどまたはまったくないことを示しています。多重共線性は、2 つ以上の独立変数が相互に高度に相関している場合に発生し、従属変数に対する各変数の個別の影響を判断することが困難になる可能性があります。多重共線性がある場合、重回帰は正確なモデルではなくなります。
- 相加性: このモデルは、予測変数の変更が応答変数に及ぼす影響は、他の変数の値に関係なく一貫していると仮定しています。この仮定は、従属変数への影響において変数間に相互作用がないことを意味します。
- 機能の選択: 重線形回帰では、モデルに含まれる独立変数を慎重に選択することが重要です。無関係な変数や冗長な変数を含めると、過剰適合が発生し、モデルの解釈が複雑になる可能性があります。
- 過学習: 過学習は、モデルがトレーニング データに近づきすぎて、変数間の真の基礎となる関係を表していないノイズやランダムな変動を捕捉した場合に発生します。これにより、新しい未確認データに対する汎化パフォーマンスが低下する可能性があります。
多重共線性
多重共線性 は、重回帰モデル内の 2 つ以上の独立変数の相関性が高く、従属変数に対する各変数の個別の影響を評価することが困難な場合に発生する統計現象です。
多重共線性の検出には、次の 2 つの手法が含まれます。
- 相関行列: 独立変数間の相関行列を調べることは、多重共線性を検出する一般的な方法です。高い相関 (1 または -1 に近い) は、潜在的な多重共線性を示します。
- VIF (分散インフレ係数): VIF は、予測変数に相関がある場合に、推定された回帰係数の分散がどの程度増加するかを定量化する尺度です。高い VIF (通常は 10 以上) は、多重共線性を示唆します。
線形回帰の評価指標
いろいろな 評価尺度 線形回帰モデルの強度を決定するために使用できます。これらの評価メトリクスは、多くの場合、モデルが観察された出力をどの程度うまく生成しているかを示します。
最も一般的な測定値は次のとおりです。
平均二乗誤差 (MSE)
平均二乗誤差 (MSE) すべてのデータ ポイントの実際の値と予測値の間の二乗差の平均を計算する評価メトリックです。負の差と正の差が互いに打ち消し合わないように、差は二乗されます。
ここ、
Javaスイッチint
- n はデータポイントの数です。
- そして私i の実際の値または観測値です。番目データポイント。
widehat{y_{i}} は i の予測値です番目データポイント。
MSE は、モデルの予測の精度を定量化する方法です。大きなエラーは全体のスコアに大きく寄与するため、MSE は外れ値に敏感です。
平均絶対誤差 (MAE)
平均絶対誤差 回帰モデルの精度を計算するために使用される評価指標です。 MAE は、予測値と実際の値の間の平均絶対差を測定します。
数学的には、MAE は次のように表されます。
ここ、
- n は観測値の数です
- そして私は実際の値を表します。
widehat{Y_i} は予測値を表します
MAE 値が低いほど、モデルのパフォーマンスが優れていることを示します。絶対的な差を考慮するため、外れ値には敏感ではありません。
二乗平均平方根誤差 (RMSE)
残差の分散の平方根は次のとおりです。 二乗平均平方根誤差 。これは、観察されたデータ ポイントが期待値、つまりデータに対するモデルの絶対適合度にどの程度一致しているかを示します。
数学的表記では、次のように表すことができます。
不偏推定値を得るには、モデル内のデータ ポイントの全体数を自由度の数で割るのではなく、残差の二乗の合計を割る必要があります。この数値は、残差標準誤差 (RSE) と呼ばれます。
数学的表記では、次のように表すことができます。
RSME は R 二乗ほど優れた指標ではありません。二乗平均平方根誤差は、その値が変数の単位に依存するため (正規化された測定ではない)、変数の単位が異なると変動する可能性があります。
決定係数 (R 二乗)
R二乗 は、開発されたモデルがどの程度の変動を説明または捕捉できるかを示す統計です。これは常に 0 ~ 1 の範囲になります。一般に、モデルがデータとよりよく一致するほど、R 二乗数は大きくなります。
数学的表記では、次のように表すことができます。
- 残差二乗和 (RSS): プロットまたはデータ内の各データ ポイントの残差の二乗和は、残差二乗和 (RSS) として知られています。これは、観察された出力と予想された出力との差の測定値です。
RSS=sum_{i=2}^{n}(y_{i}-b_{0}-b_{1}x_{i})^{2} - 総二乗和 (TSS): 回答変数の平均からのデータ ポイントの誤差の合計は、総平方和 (TSS) として知られています。
TSS= sum_{}^{}(y-overline{y_{i}})^2
R 二乗メトリックは、モデル内の独立変数として説明される従属変数の分散の割合の尺度です。
調整された R 二乗誤差
調整後のR2回帰モデルの独立変数によって説明される従属変数の分散の割合を測定します。 調整された R2 乗 モデル内の予測子の数を考慮し、従属変数の分散の説明にあまり寄与しない無関係な予測子が含まれている場合にモデルにペナルティを課します。
数学的に調整された R2は次のように表現されます。
ここ、
- n は観測値の数です
- k はモデル内の予測子の数です。
- R2決定係数です
調整された R 二乗は、過学習の防止に役立ちます。従属変数の分散の説明にあまり寄与しない追加の予測子を使用してモデルにペナルティを与えます。
線形回帰の Python 実装
必要なライブラリをインポートします。
Python3 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.axes as ax from matplotlib.animation import FuncAnimation> データセットをロードし、入力変数とターゲット変数を分離します。
データセットのリンクは次のとおりです。 データセットリンク
Python3 url = 'https://media.techcodeview.com data = pd.read_csv(url) data # Drop the missing values data = data.dropna() # training dataset and labels train_input = np.array(data.x[0:500]).reshape(500, 1) train_output = np.array(data.y[0:500]).reshape(500, 1) # valid dataset and labels test_input = np.array(data.x[500:700]).reshape(199, 1) test_output = np.array(data.y[500:700]).reshape(199, 1)> 線形回帰モデルを構築し、回帰直線をプロットする
手順:
- 順伝播では、最初にパラメータ (m & c) のランダムな値を割り当てることで、線形回帰関数 Y=mx+c が適用されます。
- コスト関数、つまり平均を求める関数を書きました。
class LinearRegression: def __init__(self): self.parameters = {} def forward_propagation(self, train_input): m = self.parameters['m'] c = self.parameters['c'] predictions = np.multiply(m, train_input) + c return predictions def cost_function(self, predictions, train_output): cost = np.mean((train_output - predictions) ** 2) return cost def backward_propagation(self, train_input, train_output, predictions): derivatives = {} df = (predictions-train_output) # dm= 2/n * mean of (predictions-actual) * input dm = 2 * np.mean(np.multiply(train_input, df)) # dc = 2/n * mean of (predictions-actual) dc = 2 * np.mean(df) derivatives['dm'] = dm derivatives['dc'] = dc return derivatives def update_parameters(self, derivatives, learning_rate): self.parameters['m'] = self.parameters['m'] - learning_rate * derivatives['dm'] self.parameters['c'] = self.parameters['c'] - learning_rate * derivatives['dc'] def train(self, train_input, train_output, learning_rate, iters): # Initialize random parameters self.parameters['m'] = np.random.uniform(0, 1) * -1 self.parameters['c'] = np.random.uniform(0, 1) * -1 # Initialize loss self.loss = [] # Initialize figure and axis for animation fig, ax = plt.subplots() x_vals = np.linspace(min(train_input), max(train_input), 100) line, = ax.plot(x_vals, self.parameters['m'] * x_vals + self.parameters['c'], color='red', label='Regression Line') ax.scatter(train_input, train_output, marker='o', color='green', label='Training Data') # Set y-axis limits to exclude negative values ax.set_ylim(0, max(train_output) + 1) def update(frame): # Forward propagation predictions = self.forward_propagation(train_input) # Cost function cost = self.cost_function(predictions, train_output) # Back propagation derivatives = self.backward_propagation( train_input, train_output, predictions) # Update parameters self.update_parameters(derivatives, learning_rate) # Update the regression line line.set_ydata(self.parameters['m'] * x_vals + self.parameters['c']) # Append loss and print self.loss.append(cost) print('Iteration = {}, Loss = {}'.format(frame + 1, cost)) return line, # Create animation ani = FuncAnimation(fig, update, frames=iters, interval=200, blit=True) # Save the animation as a video file (e.g., MP4) ani.save('linear_regression_A.webp'false'>Python3 #使用例 Linear_reg = LinearRegression() パラメータ、損失 = Linear_reg.train(train_input, train_output, 0.0001, 20) 出力 : 反復 = 1、損失 = 9130.407560462196 反復 = 1、損失 = 1107.1996742908998 反復 = 1、損失 = 140.31 580932842422 反復 = 1、損失 = 23.795780526084116 反復 = 2、損失 = 9.753848205147605 反復 = 3、損失 = 8.061641745006835 反復 = 4、損失 = 7.8577116490914864 反復 = 5、損失 = 7.8331 350515579015 反復 = 6、損失 = 7.830172502503967 反復 = 7、損失 = 7.829814681591015 反復 = 8 、損失 = 7.829770758846183 反復 = 9、損失 = 7.829764664327399 反復 = 10、損失 = 7.829763128602258 反復 = 11、損失 = 7.829762142342088 反復 = 12、損失 = 7.8297 61222379141 反復 = 13、損失 = 7.829760310486438 反復 = 14、損失 = 7.829759399646989 反復 = 15、損失 = 7.829758489015161 反復 = 16、損失 = 7.829757578489033 反復 = 17、損失 = 7.829756668056319 反復 = 18、損失 = 7.829755757715535 反復 = 19、損失 = 7.82975 4847466484 反復 = 20、損失 = 7.829753937309139 線形回帰直線線形回帰直線は、関係についての貴重な洞察を提供します。 2 つの変数の間。これは、独立変数 (X) の変動に応じて従属変数 (Y) がどのように変化するかという全体的な傾向を捉える最適な直線を表します。 正の線形回帰直線 : 正の線形回帰直線は、独立変数 (X) と従属変数 (Y) の間の直接の関係を示します。これは、X の値が増加すると、Y の値も増加することを意味します。正の線形回帰直線の傾きは正であり、直線が左から右に向かって上向きに傾いていることを意味します。 負の線形回帰直線 : 負の線形回帰直線は、独立変数 (X) と従属変数 (Y) の間の逆関係を示します。これは、X の値が増加すると、Y の値が減少することを意味します。負の線形回帰直線の傾きは負であり、線が左から右へ下向きに傾いていることを意味します。 線形モデルの正則化テクニック ラッソ回帰 (L1 正則化) ラッソ回帰は、線形回帰モデルを正則化するために使用されるテクニックであり、ペナルティを追加します。過学習を防ぐための線形回帰目的関数の項。ラッソ回帰を適用した後の目的関数は次のとおりです。最初の項は最小二乗損失で、予測値と実際の値の間の二乗差を表します。 2 番目の項は L1 正則化項で、回帰係数 θj の絶対値の合計にペナルティを与えます。リッジ回帰 (L2 正則化) リッジ回帰は、標準の線形目的に正則化項を追加する線形回帰手法です。繰り返しますが、目標は、線形回帰式の大きな係数にペナルティを与えることで、過学習を防ぐことです。データセットに多重共線性があり、予測子変数の相関性が高い場合に役立ちます。 リッジ回帰を適用した後の目的関数は次のとおりです。最初の項は最小二乗損失で、予測値と実際の値の間の二乗差を表します。 2 番目の項は L1 正則化項で、回帰係数 θj の値の二乗和にペナルティを与えます。 Elastic Net Regression Elastic Net Regression は、線形回帰目標において L1 正則化と L2 正則化の両方の力を組み合わせたハイブリッド正則化手法です。 最初の項は最小二乗損失です。 2 番目の項は L1 正則化、3 番目はリッジ回帰です。全体的な正則化の強度です。 α は、L1 正則化と L2 正則化の間の混合を制御します。線形回帰の応用線形回帰は、特定の変数の動作を理解して予測するために、金融、経済学、心理学などのさまざまな分野で使用されます。たとえば、金融では、企業の株価と収益の関係を理解したり、過去の実績に基づいて通貨の将来の価値を予測したりするために線形回帰が使用されることがあります。線形回帰の長所と短所線形回帰の利点線形回帰は比較的単純なアルゴリズムなので、理解と実装が簡単です。線形回帰モデルの係数は、独立変数の 1 単位の変化に対する従属変数の変化として解釈でき、変数間の関係についての洞察が得られます。線形回帰は計算効率が高く、大規模なデータセットを効果的に処理できます。大規模なデータセットで迅速にトレーニングできるため、リアルタイム アプリケーションに適しています。線形回帰は、他の機械学習アルゴリズムと比較して外れ値に対して比較的堅牢です。外れ値がモデル全体のパフォーマンスに及ぼす影響は小さい可能性があります。線形回帰は、多くの場合、より複雑な機械学習アルゴリズムと比較するための優れたベースライン モデルとして機能します。線形回帰は、豊富な歴史を持つ十分に確立されたアルゴリズムであり、さまざまな機械学習で広く利用できます。線形回帰の欠点線形回帰では、従属変数と独立変数の間に線形関係があると仮定します。関係が線形でない場合、モデルのパフォーマンスが低下する可能性があります。線形回帰は多重共線性の影響を受けやすく、独立変数間の相関が高い場合に発生します。多重共線性により係数の分散が増大し、モデルの予測が不安定になる可能性があります。線形回帰では、特徴がすでにモデルに適した形式になっていることを前提としています。特徴量をモデルで効果的に使用できる形式に変換するには、特徴量エンジニアリングが必要になる場合があります。線形回帰は、過学習と過小学習の両方の影響を受けやすくなります。過学習は、モデルがトレーニング データを学習しすぎて、目に見えないデータへの一般化に失敗した場合に発生します。アンダーフィッティングは、モデルが単純すぎてデータ内の基礎的な関係を捉えることができない場合に発生します。線形回帰では、変数間の複雑な関係に対する説明力が限られています。より深い洞察を得るには、より高度な機械学習テクニックが必要になる場合があります。結論線形回帰は、そのシンプルさ、解釈可能性、効率性により、長年にわたって広く使用されてきた基本的な機械学習アルゴリズムです。これは、変数間の関係を理解し、さまざまなアプリケーションで予測を行うための貴重なツールです。 ただし、線形性の仮定や多重共線性に対する感度など、その制限に注意することが重要です。これらの制限を注意深く考慮すると、線形回帰はデータ分析と予測のための強力なツールとなる可能性があります。線形回帰 – よくある質問 (FAQ)線形回帰とは簡単に言うと何ですか?線形回帰は、1 つ以上の独立変数に基づいて連続ターゲット変数を予測する教師あり機械学習アルゴリズムです。従属変数と独立変数の間に線形関係があると仮定し、線形方程式を使用してこの関係をモデル化します。 なぜ線形回帰を使用するのでしょうか? 線形回帰は一般的に次の目的で使用されます。 入力特徴に基づいて数値を予測する 過去のデータに基づいて将来の傾向を予測する 変数間の相関関係を特定する 特定の結果に対するさまざまな要因の影響を理解する 線形回帰の使用方法 直線を当てはめて線形回帰を使用し、変数間の関係を予測する、係数を理解し、情報に基づいた意思決定を行うために入力値に基づいて予測を行います。なぜ線形回帰と呼ばれるのですか?線形回帰は、データ ポイントに適合する直線を表す、変数間の関係をモデル化するために線形方程式を使用することから名付けられました。線形回帰の例とは何ですか?平方フィートに基づいた住宅価格の予測、学習時間からの試験スコアの推定、広告支出を使用した売上予測などは、線形回帰アプリケーションの例です。>>

