超初心者向け

カーブフィッティングについてわかりやすく解説

カーブフィッティングについてわかりやすく解説
曲線フィッティングのそもそもの目的を今一度思い出すと、目的に焦点を絞れば
(i) 適当なを決めて曲線 を引く
(ii) 過去のデータから計算して、曲線の係数<> カーブフィッティングについてわかりやすく解説 を決める
(iii) (ii)で決めたa_を曲線の多項式に代入して曲線を変形させる
でした。(くどいようですが、多項式に不安を感じる方は機械学習を学ぶための準備 その2(級数と積分について)をご覧ください。)
(i)カーブフィッティングについてわかりやすく解説 で適当なを決めて(ii)で曲線とフィットさせていきます。次の図のようなイメージです。

機械学習 曲線フィッテングについて 後編

詳細は後ほどの数学的背景で述べますが、前回と今回の冒頭でご説明した通り、多項式のnを増やすことで曲線の曲げる数を増やすことができます。であれば増やせば増やすほどよさそうなものですが、「過ぎたるは及ばざるが如し」で、過学習と呼ばれる現象が起こります。
過学習とは、「1. データが少ないと思うように予測できるいい曲線が引けない」ではデータの個数が少なすぎて曲線が自由になってしまいましたが、
その逆で曲線を曲げる回数を増やしすぎることで、曲線が束縛されてしまう起こる現象です。
またGIFアニメで見てみましょう。 カーブフィッティングについてわかりやすく解説

曲げる回数に束縛されてしまい、予測したいデータが予測できないことがわかるかと思います。データがたくさんある場合、なるべく多くのデータを通るような曲線を描きたくなりますが、多ければいいというものではありません。適切なnを見つけることが大事です。
「3. 計算量が増えてしまう」に関しては、数学的背景でご紹介することにします。

曲線フィッティングの数学的背景について

pf11

曲線フィッティングのそもそもの目的を今一度思い出すと、目的に焦点を絞れば
(i) 適当なを決めて曲線 を引く
(ii) 過去のデータから計算して、曲線の係数<> を決める
(iii) (ii)で決めたa_を曲線の多項式に代入して曲線を変形させる
でした。(くどいようですが、多項式に不安を感じる方は機械学習を学ぶための準備 その2(級数と積分について)をご覧ください。)
(i)で適当なを決めて(ii)で曲線とフィットさせていきます。次の図のようなイメージです。

ごちゃごちゃしていますが、「実データ(赤)カーブフィッティングについてわかりやすく解説 のy座標」と、
実データの真上か真下にある曲線のy座標の差が、そのx座標における実データと曲線との「誤差」です。
M個のデータに関してそれぞれの誤差を二乗して足しあわせたものが「誤差関数」、今回の場合は「二乗誤差」といいます。なぜ二乗するかというと、実データと曲線がどちらが上にあるかによって誤差がプラス/マイナスが反転してしまうため、誤差をプラスにそろえるために2乗します。 最後に、あとで計算を楽にするために、すべての誤差を足しあわせたものを2で割ります。

は「誤差」なので、なるべく小さい方がいいような気がします。今回、誤差関数の中にはややなどの数が入っていますが、今回我々が数値を変更することのできるのはだけです。なぜかというと、xとtの値は実データのx座標とy座標であり、定まった値です。そしてwはそもそも、曲線を描くために適当に決めたものでした。ですので、この誤差関数の全体が小さくなるような、を計算していきます。
さて、遡ること4ヶ月前、当テックブログで微分について書きました。そこで
「関数がある点で最大値、もしくは最小値を取るとき、その点で微分した値は0になる」
という事実についてお話ししました。上の事実を適用すると、
「誤差関数がある で最小値をとるとき、誤差関数をで微分した値は0になる」
ということになります。この事実を使うことで、誤差関数が最も小さくなるが求められます。
今回は、をどのように求めればいいかのところまでにし、次回はその証明と数式をコードに落とし込む方法をおまけ編として公開する予定です。

誤差関数が最小となる曲線の係数wの求め方

1698_001

いきなり行列が出てきていたりしていますが、以下がwの求め方です。

実際にコードで書いてみる

前回はscikit-learnライブラリで結果だけを求めましたが、今回は自力で最小二乗法による曲線フィッティングを書いてみました。上述の通り、コードの具体的な説明は次回行います。
umentu/least_square
※ソースコードの改変、再配布は認めますが、一切の責任は持たないことをご了承して頂いた上でご利用下さい。 カーブフィッティングについてわかりやすく解説
環境に関しては、前回の通りこちらをごらんください。また、わからない場合はFacebookでお気軽にご相談ください。

figure_1-2

以下がコードの実行結果です。

次回は、おまけ編として、今回求めたwの証明と、機械学習を始めた時に陥りがちな、どのようにしてコードに落とし込むかの方法をご紹介したいと思います。
次回まではかなりゆっくり進めていきますが、次回以降は1テーマ1回分で更新していく予定です。
お疲れ様でした。

標準曲線による補間

Prism8_標準曲線による補間_1

WelcomeダイアログのNEW TABLE & GRAPHより XY を選択します。ここではサンプルデータを使用しますので、Data table: から Start with sample data to follow a tutorial を選び、Select a tutorial dataset: から Correlation & regression (linear and nonlinear) リストにある RIA or ELISA - Interpolate unknowns from sigmoidal curve を選択します。

2. データの確認

Prism8_標準曲線による補間_RIA_ELISA_データの確認

先頭の 7 行は、2回の繰り返し測定試験で得た標準データ (標準曲線を求めるためのデータ) カーブフィッティングについてわかりやすく解説 です。その下に未知データが 3 件あります。Y の測定値だけで、X は空になっています。この分析の目標は、補間によりこの未知データの X 値 (濃度) を得ることです。なお、4 件の未知データのうち 3 件には行見出しをつけて、後で結果を照合できるようにしてあります。なぜ X が負値になっているのでしょうか。この例の場合、X 値は濃度 (モル単位) の対数です。したがって、1 カーブフィッティングについてわかりやすく解説 マイクロモル (10-6モル) ならば「-6」と入力することになります。

3. グラフの表示

Prism8_標準曲線による補間_RIA_ELISA_グラフ1

データシートのデータを反映したグラフが自動生成されます。ナビゲーターのGraphsにあるRIA data をクリックするとグラフが表示されます。

データ ポイントを表すマーカーの種類や色、軸の見出しはカスタマイズできます。繰り返しデータについては、平均値ではなく個別の値をプロットすることも可能です。未知データは X 値が分からないので、グラフには現れていません。

4. 標準曲線分析の選択

Analyzeボタンをクリックし、XY analysesのリストから Interpolate a Standard Curveを選択します。または、Analyzeボタンの上段の一番右にあるInterpolate a Standard Curveボタンをクリックします。

5.モデルの選択

Prism8_標準曲線による補間_RIA_ELISA_パラメータ1

Parameters:Interpolate a カーブフィッティングについてわかりやすく解説 Standard Curveダイアログでモデルの選択およびパラメータの設定を行います。

Model 項目から Sigmoidal, 4PL, X is log (concentration) を選択します。4PL は "4 Parameter Logistic (4パラメーターロジスティック曲線)"の略で、この種の式の別名になっています。

ここではパラメーターの設定は行いません。Outliers/robustOptionOutputの項目はすべて既定値のままにします。OKボタンをクリックとグラフが描画されます。

6.グラフの表示

Prism8_標準曲線による補間_RIA_ELISA_グラフ2

グラフに平均値とエラーバーを追加する場合は、Format Graphダイアログから行います。グラフをダブルクリックして、Format Graphダイアログを開き、Appearanceタブをクリックします。Style 項目の Appearance から Mean and Error を選択します。

グラフ上に補間により得られたデータポイントを追加する場合も、 Format Graphダイアログから行います。Format GraphダイアログのData on Graphタブを選択し、右側にあるAdd. ボタンをクリックします。Select 項目のリストからInterpolation of RIA data:Interpolated X mean values を選択して下さい。補間により得られたデータポイントがグラフに追加されます。

7. 結果のチェック

Prism8_標準曲線による補間_RIA_ELISA_結果1

ナビゲーターのResultsに Interpolation カーブフィッティングについてわかりやすく解説 of RIA data シートが作成されます。

結果シートはInterpolated X mean values タブとTable of resultsタブで構成されています。Interpolated X mean values タブには、補間により得られた値が表示されています。Table of results タブは、カーブフィッティングの結果を表すテーブルです。各パラメーターの最適合値などがまとめられています。

8. 結果の変換

Prism8_標準曲線による補間_RIA_ELISA_結果の変換

結果テーブル:Interpolated X mean valuesタブ の X 列は、補間により得られた値です。単位は X 値と同じ、濃度の対数になっています。これを濃度 (真数) に変換することもできます。

Analyzeボタンをクリックします。Analyzeダイアログの先頭にある Transform, Normalize . の Transforms 選択し、OKボタンをクリックすると、Parameters:Transformダイアログが開きます。Transform X values にチェックを入れ、リストから変換式として X = 10^X を指定しOKボタンをクリックします。

9. 結果のチェック

Prism8_標準曲線による補間_RIA_ELISA_結果のチェック2

結果シートの X 列はモル単位になりました。列見出しは変わっていないことに注意してください。Prismにはデータ変換に応じて見出しも自動的に調整する機能はありません。列見出しを「Concentration (M)」と編集してください。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる