無料の 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 年のファッションラグジュアリーの美的パラダイムとは何でしょうか?答え: テクノロジー

ブログ    
ブログ    
ブログ    

推薦する

PaddlePaddle と TensorFlow の比較分析

【51CTO.comオリジナル記事】この記事では主に、フレームワークの概要、システム アーキテクチャ...

あなたの写真を「秘密裏に」使用した顔認識システムはいくつありますか?ツールを使って確認する時が来た

テクノロジー企業が「個人のプライバシーを侵害する」顔認識システムを開発する際、彼らはあなたが予想して...

...

アルゴリズムのインテリジェントなアップグレードにより、将来のデジタルライフはより明るくなります

[[120716]]研究者たちは現在、検索結果の改善、自動運転車、スマート携帯電話のアップグレード、...

デンマークはロボット工学をリードしています – IoT はどのような役割を果たすのでしょうか?

デンマークは、1970年代初頭から国家政策の一環として風力タービンに投資した最初の国の一つであり、こ...

...

ナレッジグラフの紹介と応用

[[376661]]人間は知識を獲得する過程で、物事の本質にますます注意を払うようになります。人工知...

...

...

自動運転の知識 ポピュラーサイエンス 自動運転車の7つのコア技術

自動運転技術の本質は、機械の観点から人間のドライバーの行動をシミュレートすることです。その技術的フレ...

ディープラーニングを使った顔認証

[[390275]]今日は、ディープラーニングを使用して顔認証アルゴリズムを作成します。 私たちのタ...

一時停止トークンを使用して大規模モデルを再トレーニングすると、AIは行動する前によく考えることを学ぶ

ChatGPT に回答を出す前に手順について考えてもらうことで、精度を向上させることができます。では...

ビジネスインテリジェンスを通じて脆弱性と危険な行動を特定する方法

[[389855]]ビジネスに関連するすべてのリスクを排除できると主張しても、多くの人はそれを信じま...

...

マスク氏とクック氏は秘密協定を結んだのか?アップルは「アップル税」でテスラに数百万ドルの節約をもたらす

ビッグデータダイジェスト制作著者: カレブ周知のとおり、Apple の App Store のポリシ...