線形回帰の勾配降下アルゴリズムのオクターブシミュレーション

線形回帰の勾配降下アルゴリズムのオクターブシミュレーション

[[190464]]

勾配降下法の理論部分では、導出プロセスが非常にわかりにくいと嘆いたことがあり、より直感的な感覚が得られるシミュレーションを期待していました。昨晩、Octave シミュレーションを終えたとき、達成感を抑えるのは難しかったです。シミュレーションのプロセスと結果を共有し、前回の記事で十分に理解できなかった部分を補います。

勾配降下法アルゴリズムでは、連続微分法を使用して、このアルゴリズムの非常に重要な 2 つの式を取得します。1 つは J(θ) の解の式で、もう 1 つは θ の解の式です。

シミュレーションでは、これら 2 つの式を直接使用して、J(θ) の分布面と θ の解の経路を描画します。

提案は次のとおりです。チェーンレストラン会社の新店舗開店の利益を予測しています。チェーングループの店舗の地域人口データと利益額は持っています。線形回帰アルゴリズムを使用して人口と利益の関係を確立し、新店舗の利益を予測して店舗の運営見通しを評価する必要があります。

まず、下の図に示すように、会社のデータを座標グラフにプロットします。構築する必要があるモデルは、人口と利益の関係に最もよく適合する直線です。そのモデルは次のとおりです。

θ を近似するプロセスでは、次のように勾配降下法を実装します。1500 回の反復 (最適な適合点に向かって 1500 ステップを実行することに相当) の後、1500 ステップ後に θ=[-3.630291,1.166362] が得られます。3000 回の反復の後、その値は [-3.878051,1.191253] になります。これを 100,000 回実行すると、その値は [-3.895781,1.193034] になります。初期のステップは非常に大きく、その後、最適点までの距離が近づくにつれて、勾配がどんどん小さくなり、ステップもどんどん小さくなることがわかります。計算時間を節約するには、1500 ステップで十分な反復回数になります。その後、近似曲線を描くと、近似度が良好であることがわかります。

次の図はJ(θ)の分布面です。

次は、等高線マップ上で見つけた最適な θ 値の位置です。これは実際には前の図と重なることがあります。

キーコードは次のとおりです。

1. j(theta)を計算する

  1. 関数J = computeCost(X, y, theta)
  2. %COMPUTECOST線形回帰計算コスト
  3. % J = COMPUTECOST(X, y, theta )theta
  4. Xyデータポイントを適合させるため線形回帰%パラメータ
  5.   
  6. %いくつかの有用なを初期化する 
  7. m = length(y); %トレーニング例
  8.   
  9. 必要がある 次の変数を正しく返す
  10. 0 = 0;
  11.   
  12. % ======================== ここにあなたのコードを入力 =======================
  13. % 手順:特定θ選択コストを計算する
  14. % Jコスト設定する必要があります。
  15. h = X*シータ;
  16. e = hy;
  17. J = e'*e/(2*m)
  18. % =========================================================================
  19.   
  20. 終わり 

2. 勾配降下アルゴリズム:

  1. 関数[theta, J_history] ​​= gradientDescent(X, y, theta, alpha, num_iters)
  2. %GRADIENTDESCENT 勾配降下法を実行してθを学習する
  3. % theta = GRADIENTDESENT(X, y, theta, alpha, num_iters)はthetaを次のように更新します。  
  4. %学習率 alphanum_iters の勾配ステップを実行
  5.   
  6. %いくつかの有用なを初期化する 
  7. m = length(y); %トレーニング例
  8. J_history = ゼロ(num_iters、1);
  9.   
  10. 反復回数 = 1:num_iters
  11.   
  12. % ======================== ここにあなたのコードを入力 =======================
  13. % 手順:パラメータベクトルに対して単一の勾配ステップを実行する
  14. % シータ。
  15. %
  16. % ヒント: デバッグ中に、印刷する便利です 
  17. ここではコスト関数(computeCost)%勾配を示します。
  18. %
  19.       
  20. h=X*シータ;
  21. e=ハイ;
  22. シータ = シータ-アルファ*(X'*e)/m;
  23.   
  24. % ============================================================
  25.   
  26. %各反復コストJを節約する
  27. J_history(iter) = computeCost(X, y, theta);
  28.   
  29. 終わり 
  30.   
  31. 終わり 

<<:  TensorFlow を使い始めるための重要なポイントをここにまとめました。まだ怠ける理由がありますか?

>>:  人工知能と自然言語処理の概要: AI の 3 つの主要段階と NLP の主な応用分野

ブログ    

推薦する

...

C# データ構造のソートアルゴリズム

C# データ構造ソート アルゴリズム (バブル ソートを含む) では、Lao Zhao の Code...

Googleの自然言語処理はさらに一歩進んで、複雑な質問に直接答えることを可能にしました。

Google 音声検索は 2008 年に開始され、4 年後には人物、場所、物に関する情報を含む「ナ...

9 つの SOTA GNN よりも強力です。 Google Brainが新しいグラフニューラルネットワークGKATを提案

[[413820]]グラフは、ソーシャル ネットワークからバイオインフォマティクス、ロボット工学の...

...

知覚AIオペレーティングシステム

AI、つまり人工知能の新たな波が到来します。機械学習、ディープラーニング、ニューラルネットワーク、音...

ConvNet と Transformer のどちらが優れていますか? Metaが4つの主要な視覚モデルを評価、LeCunが好評価

特定のニーズに基づいてビジュアル モデルを選択するにはどうすればよいでしょうか? ConvNet/V...

空中で疫病と戦うドローン

新型コロナウイルス肺炎の流行が始まって以来、多くのハイテク技術がこの疫病との戦いに後方支援を提供して...

...

WeChat JS-SDK-使用許可署名アルゴリズム

jsapi_チケット署名を生成する前に、まず jsapi_ticket を理解する必要があります。j...

...

人工知能はどのようにして銀行をより「インテリジェント」にすることができるのでしょうか?

[[263447]]人工知能技術の継続的な導入は、新たな産業発展の中核的な原動力となり、さまざまな...

大企業に必須の、偉大な神からのオープンソースアルゴリズムツールブック

近年、大企業への入社要件はますます高くなり、アルゴリズムに対する要求も徐々に高まっています。アルゴリ...

機械学習分野における社内競争について:博士号を取得しないと就職する資格はないのでしょうか?

[[390714]]機械学習は複雑化していますか? 「博士号なしで機械学習の仕事を得るのはますます...

...