最小二乗法の学習忘備録
該当記事のディテールを補足する個人的な忘備録
以下のサイトを参考に最小二乗法の仕組みを学習する
qiita.com
最小化する
「極大極小の考え方でいうと、a, bそれぞれに対して、微分して0になるところが最小点になります。」の語句の意味をIOSアプリのPocketCasを利用して再確認すると以下になる
例えば二次関数の微分に対して0になる方程式を解くと以下の様に最小点のx=1.5が算出できる
これは他のn次数関数に対しても同様で三次関数の場合、グラフの谷山になるx位置
x=-3.0とx=-1/3が算出できる。つまりグラフの傾きが0になる位置がわかる仕組みを利用する
5次関数で以下のようになる。微分の強力な解析能力が実感できる
この解析能力をaとbの二変数関数であるに対して利用する為に偏微分しようという訳である。偏微分はaとbに対して行い他の変数は定数と扱われる。導かれた導関数が0になる連立方程式を解くと最小点の位置を通る一次関数の係数が解るという仕組みになる
実際の計算
あてはめる関数式は直線をあらわす一次関数。これを回帰式と呼ぶ
回帰式と実際に集計した値との誤差を求める式が以下になる
y値、x値はN次のベクトル。これらを総和を利用しながら誤差の総和Jの値を導く
aとbは未知数でJの値を最小にしながら、これらの値を求める事が目的となる
シグマの中身は常に二乗されるので値は絶対値、距離、正数となる
従って、この二次関数の微分された関数式は0になる所が最小点に必ずなる(最大値になる可能性は無い。だからこの計算手法は「最小二乗法」と呼ばれる)
関数式の中にaとbの二変数の未知数があるので、それぞれ偏微分して0になる式を導き連立方程式を組む必要がある
偏微分には例題となるブログでは合成関数「」を利用している
最終的な回帰式は行列計算の形になる
これは連立方程式を計算機で解く為で、機械を使って問題を解く適切な形となっている
この行列式に実測値をあてはめ計算していく
pocketcasで計算させると以下になる
数について
どんな数も合成数である
数には人間に理解の及ぶ範疇と及ばない範疇があり、それは例えば前者の場合、自然数や有理数、後者の場合、無理数や虚数等となってイメージされる
それらを大雑把にふたつにわけ、「良い数」「悪い数」と考えることもできる
良い数を、悪い数をと考え、数そのものを「」という合成数で考えることもできる
たとえば以下のような式がある
両辺にがあるので解(根)は求まっていない。とりあえず両辺にがある状態を無くす必要がある。なので、これを変形していく。すると解は黄金数になる。変形にはややアクロバティックな正方完成の考えが利用される
この場合、がよい数でが悪い数になる。こういう合成数の図式はあらゆる場面で見られる。たとえば複素数もそうであるし、サインコサインの出力値、漸化式の解や別の形に表現された無理数もよく見ると、この形になっていたりする(0は良い数、悪い数、両方の性質を持つと考える)
そういったセンスを持っておくと色々得をしそう?(テイラー展開でとか??)
循環小数の作成
参考資料:
www.4gamer.net
のような循環小数の作成
基本的に以下の様な仕組みを利用する。これはゲーム開発では乱数の作成の基礎などに利用できる
等比数列の和の公式 を利用して
となる。簡単に言うと39÷99で循環小数を作れるし、例えば0.1234512345...のような場合は、12345÷99999で作れる。乱数にしたいなら、この99の部分を98や97にずらしていく。(もちろんこんなものは乱数ではないのだが、ぱっとみて乱数と勘違させることは出来る)この循環少数の狙った桁や並んだ数字部分を抽出したいのなら以下のような考え方を利用する(10なら一桁づつだが100にすればふたつずつ抽出するなども出来る)
unityチュートリアル 「2D UFO」のメモ
- テクスチャ画像をシーンにドラッグすると勝手にスプライトレンダーコンポーネントが付加される
- ソーティングレイヤーは描画順
- コライダーコンポーネントはひとつのゲームオブジェクトに複数作り組み合わせることができる
- プレハブは青く表示される。ヒエラルキーからプロジェクトにドラッグすると自動的に作れる
- ctrl+cとctrl+vでもコピーできるが、ctrl+dでも出来る
- コライダーの設定で「Is Trigger」をオンにすると物理的な跳ね返りがなくなる(通り抜けてトリガーが発行される)
- RigedBody2DのBodyTypeを「Kinematic」にするとunity内の物理作用はゼロになり、トランスフォームのみで動くようになる
これにより処理が軽くなる
- 以前のバージョンと違ってunityのUIは名前空間 unityengine.UIで拡張されている
仕様がまるで変っている。textひとつとっても扱い方が変わっているので再学習の必要アリ
UI関連
- 今までと違いCanvas内のオブジェクトに対してはショートカットtで色々なトランスフォームとは別の操作が可能となる
(posやwidth、heightなど)
- RectTransformを持つオブジェクトの場合ヒエラルキーウインドウ内で選択した状態で右クリック->CreateEmptyすると
空のUIの子が簡単に作れる
- レンダーテクスチャはCreate -> RenderTexture で作成できる。これをカメラに設定すると良い
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<カメラ操作tips>
カメラオブジェクトを選択した状態で ctrl+Shift+f で カメラをビューの視点に出来る
ビューはビュー内のどこかをクリックして選択状態にするとカーソルキーが使えるようになる
ゲーム性を向上させる確率の考え方
指数と確率の考え方
>20%の5連撃を1発でも当てれば…なんて時にサクーッと概算できるようになっても
>2の10乗が1000って覚えとくと便利よね
>全部外れる確率は
>0.8の5乗 → 2の15乗の上一桁の数字だけほしい → 3
>だから7割くらいは1発当たるはず
この7割ってのは必ず5回連続攻撃して、その内7割の確率でヒットするという考え方
つまり20%、40%、80%、と言う確率は計算しやすい。又、5回攻撃前提でワンパック(大数の法則)になっている点も強く意識しておく事が大事
ワンボタンで一度に5回攻撃が出るRPGの戦闘みたいな場面を想像すると良い
<メモ>
桁と小数点位置の感覚がつかめていないと痛い目にあうので注意
指数関数はネイピア数を利用した指数関数と同相になる。対数関数とは逆関数の関係となる
(このグラフで考えると横軸に対する拡大縮小率で何回試行すれば充分かという考え方ができる筈。つまりネイピア数に対する係数がある筈)
第一回年末ジャンボと第二回年末ジャンボは写像が変わるので同相でなく不連続となる?
この場合、第一回と第二回を一緒にした写像を作れば連続となるが解は変わるか?
一桁のパーセンテージというのは、ほぼ大数の法則に支配されると考える。場の親であるなら
結果を安定させるために試行の単価(ランニングコスト)を安くして試行回数を増やす必要があると予想できる
「同相」という考え方は重要で強力
https://kotobank.jp/word/%E5%90%8C%E7%9B%B8-1189069
http://rikei-index.blue.coocan.jp/syugou/dousousya.html