機械学習(2)回帰

記事ディレクトリ


前回のブログでは、Regressionを使用してPM2.5を予測しました。実際、回帰には他にも多くの用途があります。

  • 株式市場予測(株式市場予測)

インプットは過去10年間のさまざまな株の浮き沈みである可能性があり、アウトプットが明日のダウジョーンズ工業平均であることを願っています。
ここに写真の説明を挿入

  • 自走式車(自動運転)

入力は無人の車が見るものとその赤外線が知覚するものであり、出力はステアリングホイールの角度です
ここに写真の説明を挿入

  • 推薦(推薦システム)

入力はユーザーAと製品Bであり、出力はユーザーAが製品Bを購入する可能性です。
ここに写真の説明を挿入

以下では、より興味深い例を見ていきます。進化後のポケモンの戦闘力(CP)の推定。これは、回帰問題に変換することもできます。

次に、関数を見つける必要があります。この関数の入力は特定のポケモンのすべての情報であり、出力は進化後のこのポケモンのCP値(スカラー値)です。

たとえば、ポケモンをx、CP値をXcp、Xsが属する種、Xhpが寿命値、Xwが重量、Xhが高さを表します。yを使用して、展開後のCP値を置き換えます。
ここに写真の説明を挿入
では、この問題をどのように解決するのでしょうか。次の3つのステップがあります。

  • ステップ1:モデル

関数セットを見つける必要があり、この関数セットがモデルです。
ここに写真の説明を挿入

そして、この関数セットはどのように見えるべきですか?
たとえば、ランダムに例を見てみましょう。y = b + w * Xcp(yは進化後のCP値、Xcpは進化前のCP値、bとwはパラメータであり、任意の値にすることができます)
ここに写真の説明を挿入
bとwは任意の値にすることができるため、この関数セットを意味します。無限の機能が存在する可能性があります。ただし、f3など、計算結果が負の関数は一見間違っている場合があります。

y = b + w * Xcpこのようなモデルは線形モデルです。モデルを次の式で記述できる場合、それを線形モデルと呼びます。
ここに写真の説明を挿入

xi:入力xの属性(健康値、高さ、体重、その他の属性)、これをfeature
wi:体重
b:バイアス(勾配)と呼びます。

  • ステップ2:機能の良さ

次に、トレーニングデータを収集します。収集するのは、関数の入力と出力です。


たとえば、次の例では、x1(1は上スクリプト)で示されるジェニートータスを入力し、上スクリプトが完全なオブジェクトを表し、下スクリプトが属性を表すことを指定します。y1を使用します(1は上スクリプトです)。ここでのy1は数値ですが、コンポーネントは後続の学習に関与するため、ここでは上付き文字で一律に表されます。
ここに写真の説明を挿入
明らかに1つだけでは不十分です。たくさん集める必要があります。たとえば、以下に10匹の動物を収集し、画像を使用してこれらの10匹の動物のCP値を次のように表します。x軸は進化前のポケモンのCP値を表し、y軸は進化後のCP値を表します。
ここに写真の説明を挿入
これらのトレーニングデータを使用して、関数の品質を定義できます。じゃあ何をすればいいの?別の関数を定義する必要があります。損失関数(Lで示されます)、損失関数の入力は関数であり、出力はそれがどれほど悪いかです。L(f) = L(w, b)
ここに写真の説明を挿入
上記のLはあまり直感的ではないかのように記録することができ、表現するためにプロットすることができます。図の各点は関数を表しています。この色はL(w、b)を表します。色が赤に近いほど値が大きくなり、損失が大きくなり、これらの関数は比較的劣ります。より良い機能は青に近いです。
ここに写真の説明を挿入

  • ステップ3:最高の機能

これで、関数セットから最適な関数を選択するだけです。損失の最小関数を見つけることです。これは、
ここに写真の説明を挿入
勾配降下を使用して計算できるため、記録されます。

  • 1つのパラメータwを持つ損失関数L(w)を考えます。L(wを最小化するwを見つけるだけです。
    ここに写真の説明を挿入
    これはどのように計算されますか?最も暴力的な方法は、すべてのwを使い果たしてから、そのL(w)を計算することです。
    ここに写真の説明を挿入
    ただし、徹底的な方法が最も非効率的であることは誰もが知っているので、勾配降下を使用できます。

以下は、パラメータが1つしかない場合です。
ここに写真の説明を挿入勾配が負になっていると仮定すると、wを増やす必要があります。どれだけ増やす必要がありますか?
ここに写真の説明を挿入
w1を取得した後、上記の手順を繰り返してw1での微分を計算します。
ここに写真の説明を挿入
何度も繰り返した後、ローカル最適(ローカル最適)の場所に到達します。つまり、差は0です。ただし、これには、ローカル最適値に達すると移動しなくなるなどの問題が発生します。ただし、このローカル最適化はグローバル最適化ではない場合があります。幸い、この問題はRegressionの問題ではなく、LinearRegressionにはローカル最適化はありません。

上記は、パラメータが1つしかない場合を示していますが、パラメータが2つある場合はどうなりますか?実際、それはパラメータと同じです。最初のステップは、2つの初期値(w0、b0)をランダムに選択することです。次に、w = w0とb = b0の場合を計算し、それぞれwの損失に対する部分微分とbの損失に対する部分微分を計算します。
ここに写真の説明を挿入
追加する必要があるのは、Gradient Descentのどの勾配が指すのですか?
ここに写真の説明を挿入
次に、それを座標軸に表示します。x軸はbを表し、y軸はwを表します。各wとbは関数を表します。それでも、青に近いほど、損失は小さくなります。

ここに写真の説明を挿入
次の質問はそれをどのように解決するかです。
ここに写真の説明を挿入
それで、上記の式によると、最終的な結果は何ですか?

b = -188.4およびw = 2.7と仮定して、それをに入れy = b + w * Xcpます。座標軸上で次のように
ここに写真の説明を挿入
表します次に、トレーニングデータの平均エラー(つまり、各ポイントと赤い線の間の距離)を計算できます。
ここに写真の説明を挿入
ここに写真の説明を挿入
しかし、この値は私たちが本当に気にしていることではなく、私たちが気にしているのは一般化です。私たちが本当に気にかけているのは、データ(テストデータ)のエラーです。そこで、テストデータとしてさらに10個のポケモンを捕まえました。これらの10は、トレーニング前の10とはまったく異なります。

ここに写真の説明を挿入
次にそれを計算します。この値は、トレーニングデータによって計算された値よりも大きいことがわかります。
ここに写真の説明を挿入
それで、もっとうまくやる方法はありますか?それはあなたのモデルを再設計することです。モデルが単なる直線ではなく、2次のように複雑になる可能性があります。
ここに写真の説明を挿入
また、上記の方法に従って、最良の関数を見つけます。これは、見つけた最良の関数がw1 = 1.0、w2 = 2.7 * 0.001であると仮定して、座標軸上で表現します。
ここに写真の説明を挿入
次に、その平均誤差= 15.4を計算しますが、私たちが本当に気にしているのはデータのテストです。また、それを座標軸で表し、その平均誤差= 18.4を計算します。
ここに写真の説明を挿入
以前の線形モデルと比較して、正方形を追加した後、結果は比較的良好ですが、より良いものを取得することは可能ですか?次に、より複雑なモデルを検討する必要があります。たとえば、次の式。
ここに写真の説明を挿入
次に、最高の機能を取得します。各種パラメータは以下のとおりです。
ここに写真の説明を挿入
その場合、対応する曲線は2次曲線とあまり変わりません。計算された平均誤差= 15.3。
ここに写真の説明を挿入
次に、テストデータを使用して平均エラー= 18.1を計算します
ここに写真の説明を挿入
。これは、2回取得した18.4よりもわずかに優れています。

引き続き4度を検討します。トレーニングデータで14.9を取得しましたが、そのテストデータは実際にはもっと悪いです。
ここに写真の説明を挿入
最後に、もう一度5度をテストしてみましょう。結果はさらに悪化します。
ここに写真の説明を挿入

要約すると、合計5つのモデルをテストしたため、モデル選択の問題が発生します。
ここに写真の説明を挿入
次に、それに応じてテストデータを作成します。
ここに写真の説明を挿入
1回目から5回目まで、それに応じてトレーニングデータが減少していることがわかりますが、テストデータはまったく異なります。したがって、結論を導き出すことができます。より複雑なモデルは、必ずしもデータのテストのパフォーマンスを向上させるとは限りません。これは過剰適合です。したがって、最適なモデルを選択する必要があります。たとえば、この例では、 3次式がより適切です。

上記の例ではポケモンを10個しか集めていないので、ポケモンを60個集めると座標軸に表示されます。以下に示すように。
ここに写真の説明を挿入
実際、前の例では考慮されていなかったいくつかの隠れた要因があります。たとえば、ポケモンの種、そして私たちは異なる色で異なる種を区別します。
ここに写真の説明を挿入
次に、種ごとに異なるモデルを設計する必要があります。たとえば、Xを使用して種を表す場合は、最初のステップであるモデルの再設計に戻ります。
ここに写真の説明を挿入
このように書く表現はたくさんあるかもしれませんが、実際にはそれらを1つの表現に組み合わせることができます。
ここに写真の説明を挿入
種がPidgeyの場合、対応するパラメーターは次のように設定できます。
ここに写真の説明を挿入
その後、座標軸でそれを表し
ここに写真の説明を挿入
、平均誤差3.8を取得します。したがって、私たちが本当に気にかけているのは、データのテストです。その平均誤差は14.3
ここに写真の説明を挿入
ですが、種の隠れた要因の他に、他の隠れた要因がありますか?たとえば、進化後のCP値は、体重、身長、HPに関連していますか?次に、次の式を取得できます。
ここに写真の説明を挿入
この式で得られたトレーニングエラー= 1.9およびTsetingエラー= 102.3は、明らかに過適合です。

おすすめ

転載: blog.csdn.net/qq_41033011/article/details/108899424