無料の Python 機械学習コース パート 2: 多重線形回帰

無料の Python 機械学習コース パート 2: 多重線形回帰

Python で任意の数の変数に対する多重線形回帰をゼロから開発する方法を学びます。

線形回帰はおそらく最も単純な機械学習アルゴリズムです。シンプルな数式を使用しているため、初心者には非常に便利です。したがって、機械学習の概念を学ぶのに非常に役立ちます。この記事では、多重線形回帰を段階的に説明してみたいと思います。

[[358868]]

概念と公式

線形回帰では、学校で習った簡単な式を使用します。

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. pandasをpdとしてインポートする
  2. numpyをnpとしてインポートする
  3.  
  4. df = pd .read_csv('ex1data2.txt',ヘッダー=なし)
  5. df.head()

(1)部分項に列を追加する。 1 が選択される理由は、値を任意の値で乗算しても、値は変化しないからです。

  1. df = pd .concat([pd.Series(1,インデックス= df .index,名前= '00' ), df],= 1 )
  2. df.head()

(2)入力変数または独立変数Xと出力変数または従属変数yを定義します。このデータセットでは、列 0 と 1 が入力変数であり、列 2 が出力変数です。

  1. X = df .drop(列数= 2 )
  2. y = df .iloc[:, 3]

(3)各列をその列の最大値で割って入力変数を標準化する。こうすることで、各列の値は 0 から 1 の間になります。この手順は必須ではありません。しかし、これによりアルゴリズムはより早く最適値に到達できるようになります。また、データセットに注目すると、列 0 の要素は列 1 の要素に比べて大きすぎることがわかります。データセットを正規化すると、最初の列がアルゴリズムを支配するのを防ぐことができます。

  1. iが範囲(1, len(X.columns))内にある場合:
  2. X[i-1] = X[i-1]/np.max(X[i-1])
  3. X.head()

(4)シータ値を初期化する。ゼロに初期化します。ただし、他の番号でも問題ありません。

  1. シータ= np .array([0]*len(X.columns))
  2. #出力: 配列([0, 0, 0])

(5)上式でmで表される訓練データの数を計算する。

  1. m =長さ(自由度)

(6)仮説関数を定義する

  1. def hypothesis(theta, X):
  2. theta*Xを返す

(7)上記のコスト関数式を用いてコスト関数を定義する

  1. def computeCost(X, y, theta):
  2. y1 =仮説(theta, X)
  3. y1 = np .sum(y1,= 1 )
  4. sum(np.sqrt((y1-y)**2))/(2*47) を返します。

(8)勾配降下関数を記述してください。この関数は、X、y、θ、学習率 (数式内のアルファ)、エポック (または反復) を入力として受け取ります。コスト関数が最小値に達するまで、theta を更新し続ける必要があります。

  1. 定義gradientDescent(X, y, theta, alpha, i):
  2. J = [] #各反復におけるコスト関数
  3. 0 = 0です 
  4. 一方、k <  私:          
  5. y1 =仮説(theta, X)
  6. y1 = np .sum(y1,= 1 )
  7. cが範囲(0, len(X.columns))内にある場合:
  8. θ[c] = θ[c] - アルファ*(sum((y1-y)*X.iloc[:,c])/len(X))
  9. j =コスト計算(X, y, θ)
  10. J.append(j)
  11. 1 + = 1
  12. J、j、thetaを返す

(9)勾配降下関数を使用して、最終コスト、各反復のコストのリスト、および最適化されたパラメータθを取得します。アルファを0.05に選択しました。ただし、0.1、0.01、0.03、0.3 などの他の値を試して、何が起こるかを確認することもできます。これを 10000 回繰り返して実行しました。違いを確認するには、反復回数を増やしたり減らしたりしてみてください。

  1. J, j, theta = gradientDescent (X, y, theta, 0.05, 10000)

(10)最適化されたシータを使用して出力を予測する

  1. y_hat =仮説(theta, X) y_hat = np.sum (y_hat,= 1 )

(11) 元のyと予測出力y_hatをプロットする

  1. %matplotlib インライン
  2. matplotlib.pyplot を plt としてインポートします。
  3. plt.figure()
  4. plt.scatter( x =リスト(範囲(0, 47)), y y = y,= 'blue' )
  5. plt.scatter( x =リスト(範囲(0, 47))、 y = y_hat = 'black' )
  6. plt.show()

いくつかの出力ポイントは予測出力とほぼ重なります。いくつかは近いですが、重複していません。

(12)各反復のコストをプロットして動作を確認する

  1. plt.figure()
  2. plt.scatter( x =リスト(範囲(0, 10000)), y = J )
  3. plt.show()

反復ごとにコストは減少します。これはアルゴリズムがうまく機能していることを示しています。

これが役に立ち、自分で試してみることができれば幸いです。機械学習の概念を学ぶために、この章を読みながらデータセットをダウンロードし、すべてのコードを自分で実行してみることをお勧めします。データセットへのリンクは次のとおりです。

https://github.com/rashida048/Machine-Learning-With-Python/blob/master/ex1data2.txt

<<:  百度CTO王海鋒氏:オープンソースは技術革新と産業発展の原動力である

>>:  米軍はU2に人工知能副操縦士を装備した。世界で最も操縦が難しい航空機は将来ドローンになるかもしれない

ブログ    
ブログ    
ブログ    

推薦する

2021 年にアルゴリズム エンジニアに必要な必須スキルは何ですか?

[[413437]]アルゴリズムエンジニアにはどのような能力が必要ですか? 「ますます増加する量」...

AIの旅を始めるのに役立つ3つの重要なステップ

すべての IT 問題には学習曲線と転換点があり、解決策が見つかる「なるほど!」という瞬間があります。...

高性能自動運転ドメインコントローラ設計の主要要素

[[438361]]次世代自動運転システムの設計における反復的な更新は、主に新機能の継続的な反復に反...

マスク氏、ロボット「オプティマスプライム」が服を畳む動画を公開、動きはゆっくりだが自然

テスラのイーロン・マスク最高経営責任者(CEO)は現地時間1月16日、ソーシャルメディアXに同社の人...

米国は自動運転に関する最も厳しい新規制を発行:L2〜L5を完全にカバー、今月30件のテスラ事故が調査された

[[408307]] IT Homeは6月30日、米国東部時間6月29日に米道路交通安全局(NHTS...

量子超越性のマイルストーン! Googleの量子コンピュータは47年分の計算を6秒で完了し、世界初のスーパーコンピュータを上回る

Googleは再び「量子超越性」を達成したのか?最近、Google は、同社の量子コンピュータが、世...

...

AIが機密情報を保護する5つの方法

人工知能(AI)は、業務の効率化に欠かせないツールであるだけでなく、機密情報の保護にも重要な役割を果...

...

機械学習により整形外科画像分析がさらに進化

医療画像解析に機械学習 (ML) を実装することは新しいことではありません。放射線科医は、自動化ツー...

...

...

カメラの前で指をタップすることでパーキンソン病の症状を遠隔で評価するAIツールが開発される

9月10日、ロチェスター大学の研究者らは、パーキンソン病患者が数分で遠隔から症状の重症度を評価できる...

これを読めば、大きな整数の乗算と分割統治アルゴリズムを学ぶことができます。

[[352004]]データ暗号化処理には多くの複雑な暗号化アルゴリズムがあり、これらの暗号化アルゴ...

Gen-2 は AI 生成ビデオに革命をもたらします。一言で4K高画質映画が作れる。ネットユーザー「ゲームのルールを完全に変えた」

これは間違いなく、生成 AI の進歩における画期的な出来事です。深夜、Runway の象徴的な AI...