最急降下法を使用した線形回帰[コーディング例で説明]
公開: 2020-12-21ソフトウェア開発者、データサイエンティスト、またはデータアナリストを目指しているかどうかに関係なく、機械学習はまだ順調に進んでいます。 線形回帰に真剣に取り組むには、Pythonに精通している必要があります。 初期段階で開始するのは面倒な作業かもしれません。この記事は、回帰をより完全に理解するのに役立ちます。
最急降下法は、提供する最適化手法のために、さまざまな反復で選択されます。 このアルゴリズムを使用すると、ロジスティック回帰やニューラルネットワークなどのサイズを縮小することができます。 勾配から始める前に、線形回帰を見てみましょう。
読む:データサイエンスのための機械学習アルゴリズム
目次
線形回帰とは何ですか?
これは、従属変数と1つ以上の独立変数の間の関係のモデル化に向けて採用される線形アプローチです。 このような変数間の線形関係は、ay = mx+b方程式の形式で表されます。
これは監視対象の機械学習アルゴリズムであり、特定のx従属変数と、効果を引き起こす他の変数としてのyからの学習曲線を強化します。 この性質は、xとyの値と確実性の要因を予測するのに役立ちます。
最急降下法とは何ですか?
勾配回帰の使用には、関数のコストを直接最小化できる関数の必要なパラメーターの値を見つけるために使用されるアルゴリズムの最適化が含まれます。

シナリオで概念を理解しましょう。真っ暗な周囲で要塞を降りたいと想像してください。 この間、あなたは完全に障害があり、降りるのに最短で最も簡単な距離を考え出す必要があると仮定しましょう。 最急降下法は、目的地に到達するための最適化された方法を見つけるために使用されるリソースになります。 基本的な方向入力を使用すると、アルゴリズムは最適なルートをグラフ化して提案することができます。
勾配は、機械学習で最も使用され広く受け入れられているアルゴリズムの1つであり、初期段階で機械学習を習得するための基礎を築くと考えられています。
グラデーションのより良い近似のために、NumPyの助けを借りてPythonで作業し、サンプルのコードでそれを実装してみましょう。
NumPyインポートから*
#y = mx + b
#mは勾配、bはy切片です。
defcompute_error_for_line_given_points(b、m、points):
totalError = 0
範囲内のiの場合(0、len(points)):
x = points [i、0]
y = points [i、1]
totalError + =(y –(m * x + b))** 2
totalError / float(len(points))を返します
def step_gradient(b_current、m_current、points、learningRate):
b_gradient = 0
m_gradient = 0
N = float(len(points))
範囲内のiの場合(0、len(points)):
x = points [i、0]
y = points [i、1]
b_gradient + =-(2 / N)*(y –((m_current * x)+ b_current))
m_gradient + =-(2 / N)* x *(y –((m_current * x)+ b_current))
new_b = b_current –(learningRate * b_gradient)
new_m = m_current –(learningRate * m_gradient)
[new_b、new_m]を返します

defgradient_descent_runner(points、starting_b、starting_m、learning_rate、num_iterations):
b =starting_b
m =starting_m
範囲内のiの場合(num_iterations):
b、m = step_gradient(b、m、array(points)、learning_rate)
戻る[b、m]
def run():
points = genfromtxt(“ data.csv”、delimiter =”、”)
Learning_rate = 0.0001
initial_b = 0#最初のy切片の推測
initial_m = 0#初期勾配推定
num_iterations = 1000
印刷「b={0}、m = {1}、エラー= {2}で勾配降下を開始」.format(initial_b、initial_m、compute_error_for_line_given_points(initial_b、initial_m、points))
「実行中…」を印刷します
[b、m] =gradient_descent_runner(points、initial_b、initial_m、learning_rate、num_iterations)
print“{0}回の反復後b= {1}、m = {2}、エラー= {3}” .format(num_iterations、b、m、compute_error_for_line_given_points(b、m、points))
if __name__ =='__main__':
走る()
コードリファレンス
これは、点を1行にプロットすることにより、線形回帰で問題が解決される勾配検索プログラムを視覚的に表したものです。 コードは、それがどのように機能するかを示すものであり、線に沿っていくつかのポイントを設定するのに役立ちます。 最急降下法は、誤差関数に関するこれらのパラメーターの最適な値を見つけようとします。
このコードには、「run」というラベルの付いた固有の関数が含まれています。 これは、アルゴリズムで使用されるパラメーターのセットを定義して、変数の動作と線の傾きに基づいて予測の初期セットを作成するのに役立ちます。 その他の要因には、以下に示す形式で最急降下法を達成するために必要な反復回数が含まれます。
initial_b = 0#最初のy切片の推測
initial_m = 0#初期勾配推定
num_iterations = 1000
勾配法は非常に単純で簡単であることが簡単に理解できます。 その機能能力を理解したら、焦点を当てる必要があるのは、最適化することに関心のある機能のコストだけです。

目標は、変数の値ごとに異なる反復を行い、それらのコストを評価し、プログラムでより良い低コストを開始する新しい変数を作成するために継続的な努力をすることです。
必読:機械学習インタビューの質問
最急降下法のヒント
1.学習率
最適化プロトコルは、小数が小さい場合でも学習率の値を減らし、プラットフォームに適したさまざまな値をシャッフルしてから、最適な作業値を選択するのに役立ちます。 学習ははるかに高速で実り多いものになる可能性があります。そのためには、各データセットを通過するパスの数を制限するようにしてください。 理想的な数は1から10の間です。
2.平均コストをプロットします
各データセットインスタンスのトレーニング時間は、アルゴリズムの実行中に余分な時間がかかるため、遅延を引き起こす可能性があります。 より良い結果を得るには、アルゴリズムのより良い学習傾向を見つける確率を高めるために、100または1000を超える平均を選択してください。
概要
この記事では、勾配とそのようなアルゴリズムの作成方法について学習しました。これは、学習した回帰モデルを使用して正確でより効果的な予測を行うのに役立ちます。 実際のシナリオをより包括的かつ詳細に理解するには、upGradに登録してください。 意欲的なデータサイエンティストと機械学習の応募者向けに特別に構成された厳選されたコースを提供しています。