無料の Python 機械学習コース 1: 線形回帰アルゴリズム

無料の Python 機械学習コース 1: 線形回帰アルゴリズム

最も基本的な機械学習アルゴリズムは、単一の変数を持つ線形回帰アルゴリズムです。現在、非常に多くの高度な機械学習アルゴリズム、ライブラリ、およびテクニックが利用可能であるため、線形回帰は重要ではないと思われるかもしれません。ただし、基本を学ぶことは常に良い考えです。こうすることで、概念を非常に明確に理解できるようになります。この記事では、線形回帰アルゴリズムを段階的に説明します。

[[358749]]

アイデアと公式

線形回帰では、予測の非常に基本的な考え方が使用されます。式は次のとおりです。

Y = C + BX

私たちは皆、学校でこの式を学びました。覚えておいてください、これは直線の方程式です。ここで、Y は従属変数、B は傾き、C は切片です。通常、線形回帰の場合は次のように記述されます。


ここで、「h」は仮説または予測された従属変数、Xは入力特徴、theta0とtheta1は係数です。シータ値は最初からランダムに初期化されます。次に、勾配降下法を使用して、コスト関数を最小化するようにシータ値を更新します。これはコスト関数と勾配降下法の説明です。

コスト関数と勾配降下法

コスト関数は、予測が元の従属変数からどれだけ離れているかを決定します。式は次のとおりです


あらゆる機械学習アルゴリズムの考え方は、仮説が元の従属変数に近くなるようにコスト関数を最小化することです。これを行うには、theta の値を最適化する必要があります。コスト関数の偏微分を theta0 と theta1 に関して別々に取ると、勾配降下法が得られます。シータ値を更新するには、対応するシータ値から勾配降下法を減算する必要があります。


偏微分すると、上記の式は次のようになります。


ここで、m はトレーニング データの数、alpha は学習率です。 1 変数の線形回帰についてお話します。そのため、シータ値は 2 つしかありません。変数が多数ある場合、各変数にはシータ値が存在します。

動作例

私が使用するデータセットは、Andrew Ng の Coursera 機械学習コースからのものです。ここでは、Python での線形回帰の実装を段階的に示します。

(1)パッケージとデータセットをインポートします。

  1. numpyをnpとしてインポートする
  2. pandasをpdとしてインポートする
  3. df = pd .read_csv('ex1data1.txt',ヘッダー=なし)
  4. df.head()

このデータセットでは、列 0 が入力機能であり、列 1 が出力変数または従属変数です。上記の直線式を使用して、列 0 を使用して列 1 を予測します。

(2)列1を列0に揃える。


入力変数と出力変数の関係は線形です。線形回帰は、関係が線形である場合に最も効果的に機能します。

(3)シータ値を初期化する。シータ値をゼロに初期化しています。ただし、他の値でも同様に機能するはずです。

  1. シータ= [0,0]

(4)前述の式に従って仮定とコスト関数を定義する。

  1. def hypothesis(theta, X):
  2. theta[0] + theta[1]*Xを返す
  3.  
  4. def cost_calc(theta, X, y):
  5. (1/2*m) * np.sum((hypothesis(theta, X) - y)**2) を返します。

(5)トレーニングデータの数をDataFrameの長さとして計算します。次に、勾配降下関数を定義します。この関数では、コスト関数が最小値に達するまでシータ値を更新します。任意の数の反復が必要になる場合があります。各反復で、シータ値を更新し、更新された各シータ値を使用してコストを計算し、コストを追跡します。

  1. m =長さ(自由度)
  2. 定義gradient_descent(theta, X, y, エポック, アルファ):
  3. コスト= []
  4. = 0  
  5. 私は<  エポック:  
  6. hx =仮説(theta, X)
  7. シータ[0] - =アルファ*(合計(hx-y)/m)
  8. シータ[1] - = (アルファ * np.sum((hx - y) * X))/m
  9. コスト.append(cost_calc(theta, X, y))
  10. 私 += 1
  11. リターンシータ、コスト

(6)最後に予測関数を定義する。勾配降下関数から更新されたシータを取得し、仮説または予測された出力変数を予測します。

  1. def predict(theta, X, y, エポック, アルファ):
  2. シータ、コスト=勾配降下法(シータ、X、y、エポック、アルファ)
  3. 仮説(theta, X)、コスト、thetaを返す

(7)予測関数を使用して仮説、コスト、更新されたシータ値を求めます。学習率として 0.01 を選択し、このアルゴリズムを 2000 エポックまたは反復で実行しました。

  1. y_predict、コスト、 theta = predict (theta、df[0]、df[1]、2000、0.01)

最終的なシータ値は -3.79 と 1.18 です。

(8)元のyと仮説または予測されたyを同じグラフ上にプロットします。

  1. %matplotlib インライン
  2. matplotlib.pyplot を plt としてインポートします。
  3. plt.figure()
  4. plt.scatter(df[0], df[1], label = '元のy' )
  5. plt.scatter(df[0], y_predict,ラベル= '予測されたy' )
  6. plt.legend( loc = "左上" )
  7. plt.xlabel("入力機能")
  8. plt.ylabel("元の出力と予測出力")
  9. plt.show()

グラフが式から予想されるように直線であり、その線が最適な位置を通過していると仮定します。

(9)各反復でコスト関数を追跡することを覚えておいてください。コスト関数をプロットしてみましょう。

  1. plt.figure()
  2. plt.scatter(範囲(0, len(コスト)), コスト)
  3. plt.show()

前述したように、私たちの目標は、コストを最小限に抑えるためにシータの値を最適化することです。グラフからわかるように、コストは最初は急激に低下し、その後安定します。これは、シータ値が期待どおりに正しく最適化されたことを意味します。

これがお役に立てば幸いです。この記事で使用したデータセットへのリンクは次のとおりです。

https://github.com/rashida048/Machine-Learning-With-Python/blob/master/ex1data1.txt を参照してください。

<<:  PyTorch を使用した文字ベースの再帰型ニューラル ネットワークの実装

>>:  1日で6つの賞を獲得! PATEOの自動車インターネットが高工インテリジェント車両ゴールデングローブ賞を受賞

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

自然言語処理のためのオープンソースツールトップ12

私たちの生活に浸透しているすべてのチャットボット、音声アシスタント、予測テキスト、その他の音声/テキ...

人工知能は医療の未来をどう変えるのか

この病気の症状の多くは心配なものであり、めまいや不安感から始まることもあります。心臓のあたりがバクバ...

...

...

...

シェフとAIが協力してあなたの味覚を刺激します

[[394881]]ソニーのAIチームによると、FlavorGraphは人工知能技術を使って2つの材...

インテリジェントロボットを活用してビジネス運営を強化する方法

インテリジェントロボットはビジネスの世界で大きな注目を集めています。スマートロボットの使用には、効率...

機械学習が金融サイバー犯罪と戦う方法: 人工知能はセキュリティの洞察にとって不可欠

過去数か月間、コロナウイルス関連の請求による多大なストレスの期間中、失業保険制度から数百万ドルが盗ま...

...

...

...

アンサンブル法からニューラルネットワークまで:自動運転技術で使用される機械学習アルゴリズムとは?

現在、機械学習アルゴリズムは、自動運転車業界で増加している問題を解決するために大規模に使用されていま...

...

...

...