web-dev-qa-db-ja.com

この表の機能を正規化する

これは非常にイライラする質問になりましたが、私はCourseraの議論で尋ねましたが、彼らは助けにはなりません。以下が質問です。

enter image description here

6回間違えました。機能を正規化するにはどうすればよいですか?ヒントは私が求めているすべてです。

1のx_0列を追加しない限り、x_2 ^(2)の値は5184であると想定していますが、1のx_0列については言及していませんが、講義でデザインマトリックスXの作成について話すときは必ず言及しています。その場合x_2 ^(2)は値72です。どちらかが正しいと仮定すると(推測ゲームをプレイしています)、それを正規化するには何を使用すればよいですか?彼は、講義で正規化する3つの異なる方法について話します。1つは最大値を使用し、もう1つは最大と最小の範囲/差を使用し、もう1つは標準偏差を使用します-彼らは1/1 =。どちらを使用しますか?これはとても紛らわしいです。

51
bjd2385

...両方の機能スケーリングを使用(で除算"max-min"またはフィーチャの範囲)およびは正規化を意味します。

したがって、個々の機能fの場合:

_f_norm = (f - f_mean) / (f_max - f_min)
_

例えばx2、(中間試験)^ 2 = {7921、5184、8836、4761}

_> x2 <- c(7921, 5184, 8836, 4761)
> mean(x2)
 6676
> max(x2) - min(x2)
 4075
> (x2 - mean(x2)) / (max(x2) - min(x2))
 0.306  -0.366  0.530 -0.470
_

したがって、norm(5184)= 0.366

(R言語を使用します。これは、このような式のベクトル化に優れています)

表記法x2(2)を使用して[x2(norm) =またはx2 '


編集:実際には、誰もが組み込みの scale(...) 関数を呼び出しますが、これは同じことを行います。

44
smci

フィーチャスケーリングと平均正規化の両方を使用して、2番目の列の下にある2番目のフィーチャを正規化するよう求めています。したがって、

(5184 - 6675.5) / 4075 = -0.366

4
user6552158

私は同じ問題を抱えていましたが、私の場合は、各x2値を例の数で割ったものの代わりに、最大x2値(8836)から最小x2値(4761)を2で割った値を平均として使用していました。

0
jordileft

「x_2 ^(2)の値は5184であると仮定しています」は、リストの2番目の項目であり、添え字_2を使用しているためですか? x_2は数学の単なる変数IDであり、リスト内のすべての行に適用されます。最高の生の中間試験の結果(つまり、二乗されていないもの)は最終テストで低下し、最低の生の中間試験の結果は最終試験の結果で最も増加することに注意してください。シータは固定値、係数であるため、この動作を可能にするには、x_1およびx_2値の正規化が(EDIT:負ではなく、1未満)になる必要があります。うまくいけば、ピボットポイントがどこにあるかを特定することにより、出発点が得られるはずです。

0
roganjosh

通常、それらはすべて平均がゼロになるように正規化し、[-1、1]の間に入ります。

絶対値の最大値で除算し、サンプルの平均値を削除することで簡単にできます。

0
Royi

私は現時点でこのコースを受講していますが、この質問に最初に答えた本当に些細な間違いは、答えにドットではなくカンマを使用することでした。なぜなら、私は手で行ったので、国では小数を示すためにコンマを使用しているためです。例:(0.52ではなく0.52)

そこで、2回目にドットを使用し、正常に動作するようにしました。

0