5

データ ポイントのセットがあり、データが線形関数または対数関数のどちらを表しているか知りたいです。

データセットは 2 次元です。

理想的なデータ ポイントのセットが関数 f(x) = x に従っているとします。データ ポイントをプロットすると、線形であることがわかります。

同様に、データ ポイントが関数 f(x) = log(x) に従っている場合、対数であることが視覚的にわかります。

一方、一連のデータが線形であるか対数的であるかをプログラムに判断させることは自明ではありません。これにどのようにアプローチしますか?

4

1 に答える 1

9

1 つのオプションは、データ セットに対して線形回帰を実行して、最適な線を取得することです。データが線形の場合、非常によく適合し、平均二乗誤差は低くなります。そうしないと、適切な適合と妥当なエラーが発生します。

または、各点 (x 0 , x 1 , ..., x n , y) を (x 0 , x 1 , ..., x n , e y )に変換して、データ セットを変換することを検討できます。データが線形の場合は指数関数になり、データが対数の場合は線形になります。線形回帰を実行して平均二乗誤差を取得すると、対数データの誤差は小さくなり、線形データの誤差は驚くほど大きくなります。これは、指数関数が非常に急速に爆発するためです。

回帰を実際に実装するには、最小二乗回帰を使用する方法があります。これには、モデルに加えて相関係数が得られるという追加の利点があり、2 つのデータセットを区別するためにも使用できます。

Java でこれを行う方法を尋ねたので、Google で簡単に検索すると、線形回帰を行うためにこの Java コードが見つかりました。ただし、これらの種類のクエリを実行するために特に最適化されている Matlab のような言語の方が適している場合があります。たとえば、Matlab では、次のように記述して、この回帰を 1 行のコードで実行できます。

linearFunction = inputs / outputs

お役に立てれば!

于 2011-08-24T19:20:32.707 に答える