web-dev-qa-db-ja.com

シグモイドをデータに適合させる

Polyfit(または私が見つけたこのNice logfitツールボックス ここ )のような多くのカーブフィッティングおよび補間ツールがありますが、sigmoid関数に適合するものを見つけることができないようです。私のxyデータ。

そのようなツールは存在しますか、それとも自分で作成する必要がありますか?

10
lollercoaster

Statistics Toolboxがインストールされている場合は、 非線形回帰nlinfit を使用できます。

sigfunc = @(A, x)(A(1) ./ (A(2) + exp(-x)));
A0 = ones(size(A)); %// Initial values fed into the iterative algorithm
A_fit = nlinfit(x, y, sigfunc, A0);

ここで、sigfuncはシグモイド関数の単なる例であり、Aはフィッティング係数のベクトルです。

13
Eitan T

nlinfit、特にgatoolは、この問題の大きなハンマーです。シグモイドは特定の関数ではありません。最も一般的には、ロジスティック関数と同じであると見なされます(計算するのに最も効率的であることがよくあります)。

y = 1./(1+exp(-x));

または一般化されたロジスティック。しかし、あらゆる種類の曲線は シグモイド形状 を持つことができます。データが特定のデータに対応するかどうかがわかっている場合は、フィッティングを改善し、より効率的な方法を適用できます。たとえば、 エラー関数erf)はシグモイド形状であり、 [〜#〜] cdf [〜#〜]正規分布 。データがガウス過程の結果であることがわかっていて(つまり、データがCDFである)、統計ツールボックスがある場合は、normfit関数を使用できます。この関数は 最尤推定 (MLE)に基づいています。パフォーマンス上の理由から、カスタムのフィッティング関数を作成する必要が生じた場合は、フィッティングしたい特定の形式のシグモイドのMLE手法を調査します。

9
horchler

MATLABの Global Optimization Toolbox 、特に Genetic Algorithm Solver を使用することをお勧めします。これは、最適化(=データに最適なものを見つける)によって問題に使用できます。 )遺伝的アルゴリズムによるシグモイド関数のパラメーター。使いやすいGUIを備えています。

遺伝的アルゴリズムソルバー のGUI。gatoolを使用して呼び出すことができます。 enter image description here

1