このガイドでは、線形回帰とその仕組みについて説明し、そのプロセスを段階的に説明します。モデルの精度を向上させるための重要なテクニックである特徴スケーリングと勾配降下法についても説明します。ビジネス トレンドを分析する場合でも、データ サイエンスに飛び込む場合でも、このガイドは優れた出発点となります。
目次
- はじめに
- 教師あり学習を理解する
- 線形回帰とは何ですか?
- 単純線形回帰
- 重線形回帰
- コスト関数
- 機能のスケーリング
- 勾配降下法
- 単純な線形回帰の勾配降下法
- 重回帰の勾配降下法
導入
線形回帰は、さまざまな要素間の関係を理解し、予測を行うために使用されるシンプルかつ強力なツールです。たとえば、勉強時間がテストのスコアにどのような影響を与えるか、家の大きさや立地に基づいていくらで売れるか、広告を増やせば売上がどのように増加するかなどを知りたいと思うかもしれません。線形回帰を使用すると、学習時間や広告費などのデータ ポイントを調査し、テストのスコアや売上高などの結果を最もよく予測する直線を引くことができます。この手法は多くの分野で価値があり、データに基づいて情報に基づいた意思決定を行うのに役立ちます。
教師あり学習について理解する
線形回帰に入る前に、教師あり学習、つまりラベル付きデータを使用してモデルをトレーニングする機械学習アプローチを理解することが重要です。教師あり学習では、特徴 (入力変数) とそれに対応するラベル (正しい出力) を含むトレーニング サンプルをモデルに提供します。
教師あり学習タスクには主に 2 つのタイプがあります:
-
回帰: これは、可能な出力の無限の範囲から連続値を予測します。たとえば、さまざまな特徴に基づいて住宅価格を予測します。
-
分類 : これは、可能なカテゴリの限られたセットからクラスまたはカテゴリを予測する回帰とは異なります。たとえば、電子メールがスパムかどうかを判断します。
線形回帰とは何ですか?
線形回帰は、2 種類の変数間の関係を理解するために統計と機械学習で使用される教師あり学習手法です: 独立変数 (結果に影響を与えると考えられる要因) と 従属変数 (予測したい結果)。
目標は、一次方程式を使用して、この関係を表す最適線を見つけることです。 ラベル付きデータ (結果が既知のデータ) を分析することで、線形回帰は、独立変数の変化が従属変数にどのような影響を与えるかを理解するのに役立ちます。
用語
単純な線形回帰
単純線形回帰は、1 つの従属変数と 1 つの独立変数の間の関係を調べます。データ ポイントに直線を当てはめることによって関係をモデル化することを目的としています。これは次の方程式で表すことができます。
この式では:
-
y_hat(または f_wb(x)) :予測される結果を表す従属変数。これは、独立変数からの入力に基づいて推定しようとする値です。
-
b : これは回帰直線の切片です。これは、独立変数 x がゼロの場合の従属変数 y の期待値を表します。切片により、回帰直線を垂直方向に調整してデータによりよく適合させることができます。
-
w : 独立変数 x の係数。この係数は、x の 1 単位の変化に対して従属変数 y_hat がどの程度変化するかを示します。正の w は、x が増加すると y_hat も増加することを示し、負の w は逆の関係を示します。
-
x : モデル内で予測子として機能する独立変数。この変数は、y_hat で表される結果を推定するために使用される入力です。
重線形回帰
多重線形回帰は、1 つの従属変数と 2 つ以上の独立変数の間の関係を調べることにより、単純な線形回帰の概念を拡張します。このアプローチにより、より複雑な関係をモデル化し、複数の要因が結果にどのように影響するかを理解できるようになります。
ここ:
コスト関数
損失関数とも呼ばれるコスト関数は、期待 (真) 値とモデルによって生成された予測値の差を定量化します。特定のデータセットでモデルがどの程度うまく機能するかを測定します。単純な線形回帰では、最も一般的に使用されるコスト関数は 平均二乗誤差 です。
ここ:
-
m はトレーニング例の数です
-
y_hat は予測値です
-
y は実際の値または期待値です
機能のスケーリング
特徴スケーリングは、特に線形回帰、ロジスティック回帰、サポート ベクター マシンなどの距離計算や勾配降下最適化に依存するアルゴリズムを使用する場合、データの前処理における重要なステップです。特徴スケーリングの目的は、データ内の独立変数または特徴の範囲を標準化し、それらがモデルの学習プロセスに均等に寄与するようにすることです。
特徴スケーリングの一般的な手法
平均正規化
平均正規化には、平均がゼロになるように特徴の値を調整することが含まれます。
特徴
- データの範囲は約 [−1,1] またはそれに近い範囲です。
- 外れ値に敏感で、平均を歪め、正規化に影響を与える可能性があります。
使用例
-
線形回帰 : トレーニング中の収束の向上に役立ちます。
-
勾配ベースのアルゴリズム : ニューラル ネットワークやその他の勾配ベースのアルゴリズムは、多くの場合、データがゼロを中心にするとより速く収束します。
-
重大な外れ値のないデータセット : 範囲が類似し、極端な外れ値がないデータセットに特に効果的です。
最小-最大スケーリング
Min-Max スケーリングは、特徴を固定範囲 (通常は [0,1] または [−1,1]) に再スケーリングするために使用される手法です。
特徴
-
固定範囲 : データを特定の範囲 (通常は [0,1]) にスケールします。
-
外れ値に対する感度 : 外れ値の影響を大きく受ける可能性があり、他の値のスケーリングが歪む可能性があります。
使用例
-
画像処理 : 畳み込みニューラル ネットワーク (CNN) などの深層学習モデルで一般的に使用され、ピクセル値は [0,1] にスケールされます。
-
距離ベースのアルゴリズム : すべての特徴からの均等な寄与を確保するために、k 最近傍 (KNN)、k 平均法クラスタリング、サポート ベクター マシン (SVM) などの距離計算に依存するアルゴリズムに不可欠です。 .
-
ツリーベースのモデル : ツリーベースのモデル (デシジョン ツリーやランダム フォレストなど) は他のアルゴリズムに比べて重要ではありませんが、特徴のスケールが大きく異なるシナリオでは依然として役立ちます。
Z スコアの標準化
Z スコアの標準化 (標準スケーリングとも呼ばれます) は、平均が 0、標準偏差が 1 になるように特徴を変換します。この手法は、正規分布データを前提とするアルゴリズムに特に役立ちます。
ここ:
特徴
-
平均中心 : データをゼロに中心とします。
-
単位分散 : 標準偏差が 1 であることを保証します。
-
外れ値に対する堅牢性 : Min-Max スケーリングと比較して堅牢ですが、それでも極端な外れ値に対して敏感です。
使用例
-
ニューラル ネットワーク : トレーニング中のパフォーマンスを向上させ、収束を高速化します。
-
主成分分析 (PCA) および 線形判別分析 (LDA) : すべての特徴が均等に寄与することを保証するために、これらの手法に必要です。
-
ガウス単純ベイズ: 入力特徴を正規化することで分類パフォーマンスを向上させます。
堅牢なスケーリング
ロバスト スケーリングは、中央値と四分位範囲 (IQR) に基づいて特徴をスケーリングするために使用される手法です。この方法は、スケーリングされた値に対するこれらの外れ値の影響を軽減するため、重大な外れ値を持つデータセットに特に役立ちます。
ここ:
-
IQR(x) は特徴の四分位範囲であり、トレーニング セットの 75 パーセンタイルと 25 パーセンタイルの差として定義されます
特徴
-
中央値中心 : データを平均値ではなく中央値を中心にして中央に配置し、外れ値に対する耐性を高めます。
-
四分位範囲 (IQR) : トレーニング データの 75 パーセンタイル (Q3) と 25 パーセンタイル (Q1) の差である IQR を使用してデータをスケーリングします。これは、ディストリビューションの堅牢性を維持するのに役立ちます。
使用例
-
外れ値のあるデータ : 外れ値が存在するシナリオで効果的です。
-
金融: 極端な値が含まれる可能性のある金融データセットで役立ちます。
-
環境データ : 測定値が大きく異なる可能性がある環境データセットによく適用されます。
勾配降下法
勾配降下法は、線形回帰を含む機械学習モデルのトレーニングに使用される強力な最適化アルゴリズムです。その主な目標は、期待値と予測値の間の誤差を最小限に抑えることです。
最初、コスト関数の傾きは開始 (任意の) 点で急になる可能性があります。アルゴリズムが反復してパラメーターを更新すると、傾きは徐々に減少し、収束点または極小値 として知られるコスト関数の最低点にモデルを導きます。この収束点では、コスト関数が最小値に達し、モデルの予測が実際の値に可能な限り近いことを示します。パラメーターがこの点に達すると、さらなる更新により予測への変更は最小限に抑えられ、最適化プロセスがデータに最適なパラメーターを効果的に特定したことが実証されます。
このプロセスには次の主要な手順が含まれます:
-
初期化 : モデル パラメーター (切片 b や係数 w など) のランダムな値から開始します。
-
勾配の計算 : モデル パラメーターに関するコスト関数の勾配を計算します。この勾配は、コスト関数の変化の方向と速度を表します。
-
パラメータの更新 : 誤差を減らすために、勾配の反対方向にモデル パラメータを調整します。更新ルールは次のように指定されます:
-
反復 : コスト関数の変化が最小限になるか、指定された反復回数に達するまでプロセスを繰り返します。
ヒント : 反復 (x 軸) とコスト (y 軸) をプロットします。プロットが滑らかな下降傾向を示している場合は、実装が正しい可能性があります。
勾配降下の種類
バッチ勾配降下法
-
利点 : データセット全体を使用するため、安定した正確な勾配の推定値が得られます。凸関数のグローバル最小値に直接収束できます。
-
欠点 : 反復ごとにすべてのサンプルを処理するため、大規模なデータセットの場合は非常に遅くなる可能性があります。
-
ユースケース : 表形式データの線形回帰やロジスティック回帰など、データセットがメモリに収まるほど小さいシナリオでよく使用されます。
確率的勾配降下法 (SGD)
-
利点 : 一度に 1 つのサンプルを処理するため、更新が高速になり、より迅速な収束につながります。固有のノイズにより、極小値を回避するのに役立ちます。
-
短所 : 収束はより不安定で、最小値付近で振動する可能性があり、安定性が低下します。
-
ユースケース : オンライン学習シナリオ、リアルタイム予測、または画像データでのニューラル ネットワークのトレーニングなど、全体としては処理できない大規模なデータセットを扱う場合に一般的に適用されます。
ミニバッチ勾配降下法(MBD)
-
利点 : バッチと確率的勾配降下法の両方の利点を組み合わせます。これにより、バッチ勾配降下法よりも収束が速くなり、SGD よりも安定した収束が得られます。効率的な計算のためにベクトル化を活用することもできます。
-
欠点 : ミニバッチのサイズの選択は難しい場合があり、収束速度と安定性に影響を与える可能性があります。
-
ユースケース : 深層学習アプリケーション、特に畳み込みニューラル ネットワーク (CNN) や自然言語処理モデルの画像分類タスクなどの大規模なデータセットでトレーニングする場合によく使用されます。
単線形回帰の勾配降下法
単線形回帰の勾配降下ステップ
-
初期化
モデルパラメータの初期値から始めます。これらの値はランダムに選択することも、ゼロに設定することもできます。
-
勾配を計算する
モデル パラメーターに関するコスト関数の勾配を計算します。この勾配は、コスト関数の変化の方向と速度を表します。
-
パラメータを更新
誤差を減らすには、勾配の反対方向にモデル パラメーターを調整します。更新ルールは次のように指定されます:
ここで:
-
J(w, b) はコスト関数であり、上で使用した平均二乗誤差 (MSE) です。
-
アルファ は学習率であり、0 から 1 までの小さな正の数です。これは、勾配降下法が収束点または極小値に到達するまでの下り坂のステップのサイズを制御します。
ヒント : 小さな学習率 (例: 0.01) から始めて、徐々に学習率を上げていきます。順調にコストが下がれば良いレートです。変動または発散する場合は、学習率を下げます。学習率が大きすぎると、勾配降下法がオーバーシュートし、最小値に到達せず、収束に失敗する可能性があります。
-
反復 : コスト関数の変化が最小限になるか、指定された反復回数に達するまでプロセスを繰り返します。
単線形回帰のための勾配降下の Python 実装
単回帰のための勾配降下の Python 実装
重線形回帰の勾配降下法
重線形回帰の勾配降下ステップ
-
初期化
各特徴の切片 b と重み w を含む、各パラメーターのランダムな値から始めます。
-
勾配を計算する
モデルパラメータに対するコスト関数の勾配を計算します。
ベクトル形式
ここ:
-
x_subscript_j_superscript_i は、i_ 番目のトレーニング例の j_ 番目の特徴です
-
x_superscript_T はベクトル x
の転置です
-
パラメータを更新
誤差を減らすには、勾配の反対方向にモデル パラメーターを調整します。更新ルールは次のように指定されます:
-
反復
コスト関数の変化が最小限になるか、指定された反復回数に達するまで、このプロセスを繰り返します。
単線形回帰のための勾配降下の Python 実装
単回帰のための勾配降下の Python 実装
結論
おめでとうございます!! ?この投稿では、線形回帰と多重線形回帰の基礎を検討し、勾配降下法を実装するプロセスを一通り説明し、モデルのパフォーマンスを最適化するための特徴スケーリングなどの主要なテクニックについて説明しました。モデル パラメーターの初期化、勾配の計算、重みの反復更新の方法を理解することで、線形回帰アルゴリズムを実装し、実世界のデータセットでのパフォーマンスを向上させるための準備が整いました。
単純な線形回帰を扱う場合でも、複数の機能の複雑さを操作する場合でも、勾配降下法をマスターし、その中心原理を理解することで、正確で効率的な機械学習モデルを開発する能力が大幅に向上します。実験を続け、スキルを磨き、学習プロセスを受け入れてください。それは結果そのものと同じくらい重要です!
機械学習技術と Web 開発トピックについてのさらなる洞察を今後もお楽しみに。よりスマートなモデルの探索と構築を続けながら、楽しく学習してください! ??
LinkedIn でつながりましょう ?
「この記事はもともと Medium に投稿されたもので、データ分析、機械学習、プログラミングに関するさらなる洞察を共有しています。お気軽にチェックして、さらなるコンテンツをご覧になるためにフォローしてください。」
いいね、共有、フォローしてください?
ご質問がございましたら、コメント欄にお気軽にお問い合わせください。お問い合わせには迅速かつ丁寧に対応させていただきます。ご質問は大歓迎で、迅速かつ包括的な回答が得られます。 ❤️
以上が線形回帰 : 理論から実践への詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。