/ / Визначити, якщо набір даних з лінійної або логарифмічної функції? - алгоритм, математика, статистика, аналіз даних

Визначте, чи є набір даних з лінійної чи логарифмічної функції? - алгоритм, математика, статистика, аналіз даних

У мене є набір точок даних і мені цікаво, якщо дані представляють лінійну функцію або логарифмічну функцію.

Набір даних 2-мірний.

Припустимо, що ідеальний набір точок даних слідував за функцією f (x) = х.

Аналогічно, якщо точки даних слідують за функцією f (x) = log (x), я б змогла візуально сказати, що це логарифмічна.

З іншого боку, наявність програми визначає, чи є набір даних лінійним або логарифмічним, нетривіальним. Як я можу підійти до цього?

Відповіді:

9 для відповіді № 1

Одним з варіантів було б зробити лінійна регресія на наборі даних, щоб отримати найкращу лінію. Якщо дані є лінійними, ви отримаєте дуже хорошу підгонку і середня квадратична помилка має бути низьким. Інакше ви отримаєте правильну підгонку та розумну помилку.

Крім того, можна розглянути можливість перетворення набору даних шляхом перетворення кожної точки (x0, x1, ..., xн, y) to (x0, x1, ..., xн, eу). Якщо дані були лінійними, тепер вона буде експоненційною, і якщо дані були логарифмічними, тепер вона буде лінійною. Запуск лінійної регресії і отримання помилки середнього квадрата тепер матиме низьку помилку для логарифмічних даних і приголомшливо величезну помилку для лінійних даних, оскільки експоненціальна функція виникає надзвичайно швидко.

Щоб реально реалізувати регресію, одним з варіантів було б використовувати a регресія найменших квадратів. Це матиме додаткову перевагу, надаючи Вам коефіцієнт кореляції на додаток до моделі, яка також може бути використана для розрізнення двох наборів даних.

Тому що ви попросили, як це зробити в Java, з'явився швидкий пошук Google цей код Java зробити лінійну регресію. Тим не менш, ви могли б краще вписуватися в мову, як Matlab, який спеціально оптимізований для виконання таких видів запитів. Наприклад, у Matlab ви можете зробити цю регресію в одному рядку коду, написавши

linearFunction = inputs / outputs

Сподіваюся, це допомагає!