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に人工知能副操縦士を装備した。世界で最も操縦が難しい航空機は将来ドローンになるかもしれない
研究機関の推計によると、新型コロナウイルスの流行により、2020年の世界経済は約3%縮小する見通しだ...
OpenAI はひっそりとその中核となる価値観を変えました。公式ウェブサイトに掲載されている6つのコ...
1. はじめにインターネットに溢れる AI 関連の情報の大半は、一般の人向けに進歩を説明するものと、...
機械学習 (ML) は情報技術 (IT) の柱の 1 つであり、人工知能のサブセットとして定義できま...
人間のようになることが AI 開発の究極の目標のようです。しかし、周知のとおり、人間には知恵と愚かさ...
今、シリコンバレーに新たな AI ユニコーンが誕生しました!この中国人女性科学者が設立した会社はIm...
[[251996]]十分に大きな技術的放射効果により、人工知能は世界経済の発展において主導的な地位に...
最近、ホワイトハウスの国家サイバースペース局長室(ONCD)は、「基本的な構成要素への回帰:安全なソ...
[[424959]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
デジタル変革の後半期に入る中、デジタルとリアルの融合をいかに加速し、グリーン・低炭素の発展へと向かう...
8年生の理科のテストに60点で合格すれば、8万ドル(57万人民元相当)の賞金を獲得できます。 [[...