無料の Python 機械学習コース パート 3: 多項式回帰

無料の Python 機械学習コース パート 3: 多項式回帰

多項式回帰は線形回帰の改良版です。線形回帰を知っていれば、簡単に理解できるでしょう。そうでない場合は、この記事で数式を説明します。他にも高度でより効果的な機械学習アルゴリズムがあります。ただし、線形ベースの回帰手法を学ぶことは良い考えです。シンプルで高速であり、よく知られた公式を使用しているためです。ただし、複雑なデータセットではうまく機能しない可能性があります。

[[359167]]

多項式回帰式

線形回帰は、入力変数と出力変数の間に線形相関がある場合にのみ適切に機能します。前述したように、多項式回帰は線形回帰に基づいて構築されます。線形回帰の基礎が必要な場合は、「線形回帰」をご覧ください。

Python での線形回帰アルゴリズム

線形回帰の概念を学び、Pythonで完全な線形回帰アルゴリズムをゼロから開発します。

多項式回帰は、関係が線形でない場合でも、入力特徴と出力変数の関係を見つけるのに適しています。線形回帰と同じ式を使用します。

Y = BX + C

私たちは皆、学校でこの公式を学んだはずです。線形回帰の場合、次の表記法を使用します。


ここでは、データセットから X と Y を取得します。 X は入力機能であり、Y は出力変数です。シータ値はランダムに初期化されます。

多項式回帰の場合、式は次のようになります。


ここでさらに用語を追加してみましょう。同じ入力関数を使用し、異なる指数を取得して、より多くの関数を作成します。こうすることで、アルゴリズムがデータをよりよく理解できるようになります。

パワーは 2、3、または 4 である必要はありません。 1/2、1/3、1/4 にすることもできます。式は次のようになります。


コスト関数と勾配降下法

コスト関数は、予測された仮説が値からどれだけ離れているかを示します。式は次のとおりです。


この方程式は複雑に見えるかもしれません。簡単な計算をしています。まず、仮説が元の出力変数から減算されます。二乗すると負の値は除去されます。この値は、トレーニング例の数の 2 倍で割ります。

勾配降下法とは何ですか? ランダムに初期化されたシータ値を微調整するのに役立ちます。ここでは微積分については触れません。各θに対するコスト関数の偏微分を取ると、次の式が得られます。


ここで、アルファは学習率です。アルファの値を選択します。

多項式回帰の Python 実装

ここでは、多項式回帰のステップバイステップの実装を示します。

(1)この例では、職位ごとの給与データを提供する単純なダミーデータセットを使用します。データセットをインポートします。

  1. pandasをpdとしてインポートする
  2. numpyをnpとしてインポートする
  3. df = pd .read_csv('ポジション給与.csv')
  4. df.head()

(2)θ0の偏差列を追加します。偏差列には 1 のみが含まれます。 1 に数字を掛けても、数字は変化しないからです。

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

(3)「ポジション」の列を削除します。 Position 列には文字列が含まれており、アルゴリズムは文字列を理解できないためです。役職を表す「レベル」列があります。

  1. df df = df.drop( columns = '位置' )

(4)入力変数Xと出力変数yを定義します。この例では、「Level」が入力機能であり、「Salary」が出力変数です。各レベルの給与を予測したいと考えています。

  1. y = df ['給与'] X = df.drop ( columns = '給与' )
  2. X.head()

(5)「レベル」列のインデックスに基づいて「レベル1」列と「レベル2」列を作成します。

  1. X['レベル1'] = X['レベル']**2
  2. X['レベル2'] = X['レベル']**3
  3. X.head()

(6)次に、データを正規化します。各列をその列の最大値で割ります。このようにして、各列の値が 0 から 1 の範囲で取得されます。アルゴリズムは正規化なしでも機能するはずです。しかし、これにより収束が早まります。同様に、データ セットの長さである m の値を計算します。

  1. m =長さ(X)
  2. X X = X/X.max()

(7)仮説関数を定義する。これは、X と theta を使用して 'y' を予測します。

  1. def hypothesis(X, theta):
  2. y1 =シータ*X
  3. np.sum(y1,= 1 )を返します。

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

  1. defコスト(X, y, theta):
  2. y1 =仮説(X, θ)
  3. sum(np.sqrt((y1-y)**2))/(2*m) を返します。

(9)勾配降下関数を記述してください。最適なコストが見つかるまで、シータ値を更新し続けます。各反復ごとに、将来の分析のためのコストを計算します。

  1. def gradientDescent(X, y, theta, alpha, epoch):
  2. J =[]
  3. 0 = 0です 
  4. 一方、k <  エポック:  
  5. y1 =仮説(X, θ)
  6. cが範囲(0, len(X.columns))内にある場合:
  7. θ[c] = θ[c] - アルファ*合計((y1-y)* X.iloc[:, c])/m
  8. j =コスト(X, y, theta)
  9. J.append(j)
  10. 1 + = 1
  11. J, θを返す

(10)すべての関数が定義されている。次に、theta を初期化します。配列をゼロで初期化しています。他の任意のランダム値を使用することもできます。アルファを 0.05 に選択し、シータ値を 700 エポック繰り返します。

  1. シータ= np .array([0.0]*len(X.columns))
  2. J, theta = gradientDescent (X, y, theta, 0.05, 700)

(11)また、最終的なシータ値と各反復のコストも得る。この最終シータを使用して給与予測を見つけましょう。

  1. y_hat =仮説(X, theta)

(12)ここで、当初の給与と予想給与を水準に対してプロットします。

  1. %matplotlib インライン
  2. matplotlib.pyplot を plt としてインポートします。
  3. plt.figure()
  4. plt.scatter( x = X ['レベル'], y y = y)
  5. plt.scatter( x = X ['レベル'], y = y_hat )
  6. plt.show()

当社の予測は給与動向と完全に一致するわけではありませんが、近いものとなっています。線形回帰では直線しか返せません。しかし、多項式回帰では、このような曲線を得ることができます。線がきれいな曲線でない場合は、多項式回帰によってさらに複雑な傾向を学習することもできます。

(13)勾配降下関数の各エポックで計算したコストをプロットしてみましょう。

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

コストは最初は急激に下がり、その後は緩やかに下がります。優れた機械学習アルゴリズムでは、収束するまでコストは減少し続けるはずです。さまざまなエポックとさまざまな学習率 (アルファ) を自由に試してみてください。

  • データセットはこちらです: salary_data https://github.com/rashida048/Machine-Learning-With-Python/blob/master/position_salaries.csv
  • 完全な動作コードを取得するには、次のリンクをクリックしてください: 多項式回帰 https://github.com/rashida048/Machine-Learning-With-Python/blob/master/polynomial%20regression.ipynb

<<:  フロントエンド: JavaScript でのバイナリ ツリー アルゴリズムの実装

>>:  2021 年のファッションラグジュアリーの美的パラダイムとは何でしょうか?答え: テクノロジー

ブログ    
ブログ    

推薦する

...

2020 年のソフトウェア テストの 5 つのトレンド

[[285865]] [51CTO.com クイック翻訳] デジタル技術の広範な応用に伴い、ソフトウ...

...

...

知能ロボット技術の応用と開発動向

王耀南院士が2020年国家ロボット開発フォーラムで報告著者プロフィール:王耀南、中国工程院院士、湖南...

2021 年の人工知能の 4 つのビジネス アプリケーション

[[409268]] [51CTO.com クイック翻訳]人工知能は万能の機械として描かれることが多...

ロボット犬の悩み:ネットセレブの研修生になるのは簡単だが、ビジネスの研修生になるのは難しい

ニュージーランドの広大な草原で、羊の群れがのんびりと散歩しながら草を食べており、その後ろを牧羊犬が追...

...

SDNアーキテクチャに基づくデータセンターネットワークルーティングアルゴリズムの需要分析

現在のネットワーク情報技術の急速な発展に伴い、ネットワーク アーキテクチャはますます複雑になっていま...

人工知能の実用化を加速させるには

人工知能と機械学習ソリューションは、今日、さまざまな業界の組織で一般的になりつつあります。組織が A...

IBM、海洋ゴミに関する質問に答えるAIアバターを開発

海洋ゴミは世界的な問題となっている。たとえすべてのデータを収集できたとしても、海洋問題の専門家である...

...

AI に関する知っておくべき 29 の統計とトレンド

ChatGPTは2022年11月の爆発的なリリースに続いて世界を席巻し、2023年には人工知能(AI...

2022年の銀行業界における人工知能の応用

人工知能はあらゆる分野に革命をもたらしており、銀行業も例外ではありません。 調査によると、世界の人工...

...