Python で任意の数の変数に対する多重線形回帰をゼロから開発する方法を学びます。 線形回帰はおそらく最も単純な機械学習アルゴリズムです。シンプルな数式を使用しているため、初心者には非常に便利です。したがって、機械学習の概念を学ぶのに非常に役立ちます。この記事では、多重線形回帰を段階的に説明してみたいと思います。
概念と公式 線形回帰では、学校で習った簡単な式を使用します。 Y = C + AX 念のため、Y は出力または従属変数、X は入力または独立変数、A は傾き、C は切片です。 線形回帰の場合、同じ式に対して次の表記法に従います。 独立変数が複数ある場合、線形回帰の式は次のようになります。 ここで、「h」は仮説と呼ばれます。これは予測の出力変数です。 Theta0 はバイアス項であり、他のすべての theta 値は係数です。最初はランダムに開始され、その後アルゴリズムを使用して最適化されるため、この式は従属変数を正確に予測できます。 コスト関数と勾配降下法 シータ値が最初から初期化されている場合、数式は従属変数を予測するようにトレーニングされません。この仮定は、元の出力変数「Y」とはかけ離れています。すべてのトレーニング データの累積距離を推定する式は次のとおりです。 これをコスト関数と呼びます。ご存知のように、y (元の出力) を仮説 (予測された出力) から減算し、それを二乗して負の数を取り除き、その合計を 2 倍の m で割ります。ここで、mはトレーニングデータの数です。コスト関数は、元の出力と予測された出力の差を示すものとして考えることができます。機械学習アルゴリズムの考え方は、元の出力と予測出力の差が小さくなるようにコスト関数を最小化することです。これを行うには、theta の値を最適化する必要があります。 これが theta の値を更新する方法です。コスト関数を各シータ値に関して部分的に微分し、その値を既存のシータ値から減算します。 ここで、アルファは学習率であり、定数です。すべてのシータ値に対して同じ式を示したわけではありません。しかし、これはすべてのシータ値に対して同じ式です。微分すると、式は次のようになります。 これを勾配降下法と呼びます。 アルゴリズムを段階的に実装する 私が使用するデータセットは、Andre Ng の Coursera 機械学習コースから取得したものです。このページの下部にリンクを貼っておきます。データセットをダウンロードして、このチュートリアルで練習してみてください。初めての場合は、データセットの読み取りを練習することをお勧めします。それが理解できる唯一の方法です。 このデータセットには変数が 2 つだけあります。しかし、私は任意の数の変数に対して機能するアルゴリズムを開発しました。同じアルゴリズムを 10 個の変数または 20 個の変数に使用しても、機能するはずです。 Python では Numpy と Pandas のライブラリを使用します。これらの豊富な Python ライブラリにより、機械学習アルゴリズムが簡単になります。パッケージとデータセットをインポートします。
(1)部分項に列を追加する。 1 が選択される理由は、値を任意の値で乗算しても、値は変化しないからです。
(2)入力変数または独立変数Xと出力変数または従属変数yを定義します。このデータセットでは、列 0 と 1 が入力変数であり、列 2 が出力変数です。
(3)各列をその列の最大値で割って入力変数を標準化する。こうすることで、各列の値は 0 から 1 の間になります。この手順は必須ではありません。しかし、これによりアルゴリズムはより早く最適値に到達できるようになります。また、データセットに注目すると、列 0 の要素は列 1 の要素に比べて大きすぎることがわかります。データセットを正規化すると、最初の列がアルゴリズムを支配するのを防ぐことができます。
(4)シータ値を初期化する。ゼロに初期化します。ただし、他の番号でも問題ありません。
(5)上式でmで表される訓練データの数を計算する。
(6)仮説関数を定義する
(7)上記のコスト関数式を用いてコスト関数を定義する
(8)勾配降下関数を記述してください。この関数は、X、y、θ、学習率 (数式内のアルファ)、エポック (または反復) を入力として受け取ります。コスト関数が最小値に達するまで、theta を更新し続ける必要があります。
(9)勾配降下関数を使用して、最終コスト、各反復のコストのリスト、および最適化されたパラメータθを取得します。アルファを0.05に選択しました。ただし、0.1、0.01、0.03、0.3 などの他の値を試して、何が起こるかを確認することもできます。これを 10000 回繰り返して実行しました。違いを確認するには、反復回数を増やしたり減らしたりしてみてください。
(10)最適化されたシータを使用して出力を予測する
(11) 元のyと予測出力y_hatをプロットする
いくつかの出力ポイントは予測出力とほぼ重なります。いくつかは近いですが、重複していません。 (12)各反復のコストをプロットして動作を確認する
反復ごとにコストは減少します。これはアルゴリズムがうまく機能していることを示しています。 これが役に立ち、自分で試してみることができれば幸いです。機械学習の概念を学ぶために、この章を読みながらデータセットをダウンロードし、すべてのコードを自分で実行してみることをお勧めします。データセットへのリンクは次のとおりです。 https://github.com/rashida048/Machine-Learning-With-Python/blob/master/ex1data2.txt |
<<: 百度CTO王海鋒氏:オープンソースは技術革新と産業発展の原動力である
>>: 米軍はU2に人工知能副操縦士を装備した。世界で最も操縦が難しい航空機は将来ドローンになるかもしれない
パート01 「ネットいじめ」とは何ですか? 「サイバー暴力」とは、インターネット上で文章、画像、動画...
1月7日の最大のニュースの一つは、Google DeepMindの創設者デミス・ハサビス氏が率いるG...
同国の「第14次5カ年計画」では、「人工知能」を重要なブレークスルーを必要とする最先端科学技術分野の...
グーグルの人工知能研究責任者ジェフ・ディーン氏によると、同社は人工知能プログラムを搭載したソフトウェ...
[[286163]]質問: 空でない 2 つのリンク リストが与えられた場合、2 つの負でない整数...
IBM は人工知能コンピューティングを改革する方法に取り組んでいます。 IBM の研究者は、人工知能...
人工知能は本質的に、人間の知的労働を解放するでしょう。今後、サービスがボトルネックとなり、サービス産...
この間、ゴミの分別に関するミニプログラムやアプリの登場により、画像認識が再び人々の注目を集めています...
[[315285]]現代の技術進歩の影響を免れる業界はありませんが、不動産業界はこの点では孤立した業...