Notebook ini menyajikan cara menyesuaikan model non linier pada kumpulan data menggunakan python. Dua jenis algoritma akan disajikan. Pertama, pendekatan kuadrat terkecil standar menggunakan fungsi _1 dari 2 di mana kita akan mempertimbangkan ketidakpastian respons, yaitu y. Kedua cocok dengan regresi jarak ortogonal (ODR) menggunakan 3 di mana kita akan memperhitungkan ketidakpastian pada x dan y Show
Piton disiapkan
Membaca dan memplot dataBaca data dari file csv dengan panda _xyDy001. 371300-0. 021016110. 747050-0. 089438220. 5875800. 017098330. 5101100. 089353440. 4245610. 083885550. 3949600. 121319660. 157880-0. 152851770. 223860-0. 016393 Plot data dengan bilah kesalahan
Paskan model pada dataKami ingin menyesuaikan model berikut, dengan parameter, $a$ dan $b$, pada data di atas $$f(x) = \ln \dfrac{(a + x)^2}{(x-c)^2}$$ Langkah pertama. fungsiPertama, kami mendefinisikan fungsi yang sesuai dengan model
Tahap kedua. inisialisasi parameterHitung nilai y untuk model dengan perkiraan
xyDymodel001. 371300-0. 0210160. 810930110. 747050-0. 0894380. 575364220. 5875800. 0170980. 446287330. 5101100. 0893530. 364643440. 4245610. 0838850. 308301550. 3949600. 1213190. 267063660. 157880-0. 1528510. 235566770. 223860-0. 0163930. 210721 Sekarang plot perkiraan pertama Anda tentang model tersebut _Langkah ketiga. Lakukan yang cocokSekarang kami secara eksplisit melakukan penyesuaian dengan _1 menggunakan fungsi 5 kami dan tebakan awal untuk parameter. Jalankan _6 dan baca dokumentasi tentang fungsi tersebut. 1 mengikuti pendekatan kuadrat terkecil dan akan meminimalkan$$\sum_k \dfrac{\left(f(\text{xdata}_k, \texttt{*popt}) - \text{ydata}_k\right)^2}{\sigma_k^2}$$
Itu dia Langkah keempat. Hasil pasParameter ada di 8 _0 _1Anda dapat menghitung kesalahan standar deviasi dari 9 _2 _3Anda dapat menghitung koefisien determinasi dengan \begin{equation} R^2 = \frac{\sum_k (y^{calc}_k - \overline{y})^2}{\sum_k (y_k - \overline{y})^2} \end{equation _4 _5Buat plotSekarang, lihat hasilnya di plot _6xyDymodel001. 371300-0. 0210161. 373491110. 747050-0. 0894380. 807266220. 5875800. 0170980. 573842330. 5101100. 0893530. 445561440. 4245610. 0838850. 364284 _Atau menggunakan lebih banyak nilai x untuk model, agar mendapatkan kurva yang lebih mulus _8Ketidakpastian pada x dan yx dan y masing-masing disebut variabel independen (atau penjelas) dan dependen (respons). Seperti pada contoh di atas, ketidakpastian seringkali hanya memperhitungkan variabel respon (y). Di sini, kita akan melakukan fit yang sama tetapi dengan ketidakpastian pada variabel x dan y Dalam pendekatan kuadrat terkecil, untuk setiap nilai x, jarak antara respons model dan data diminimalkan. Saat Anda melakukan ini untuk setiap nilai x tertentu, Anda tidak dapat memasukkan x ketidakpastian. Untuk memasukkannya, kami akan menggunakan pendekatan regresi jarak ortogonal (ODR). Lihatlah dari mana berikut ini ditulis Tambahkan x ketidakpastianTambahkan, secara artifisial, ketidakpastian normal acak pada x _9xyDyDx001. 371300-0. 0210160. 091596110. 747050-0. 089438-0. 015025220. 5875800. 0170980. 230026330. 5101100. 089353-0. 113324440. 4245610. 0838850. 232209 0Buat yang cocok1) Tentukan modelnyaFungsi model harus didefinisikan dengan cara yang sedikit berbeda. Argumen pertama (disebut _0 di sini) harus berupa daftar parameter 1Tentukan data dan modelnya 22) Jalankan algoritmaDua perhitungan akan dilakukan
Untuk setiap perhitungan, kami membuat iterasi pertama dan memeriksa apakah konvergensi tercapai dengan 3. Jika tidak, kami menjalankan paling banyak 100 kali lagi algoritma sementara konvergensi tidak tercapaiPertama, Anda dapat melihat bahwa pendekatan kuadrat terkecil memberikan hasil yang sama dengan fungsi 1 yang digunakan di atas
Bagaimana Anda menjalankan regresi non linier dengan Python?Untuk masalah regresi non-linier, Anda dapat mencoba SVR(), KNeighborsRegressor() atau DecisionTreeRegression() dari sklearn , dan membandingkan . Simpan jawaban ini.
Apakah XGBoost linier atau nonlinier?Namun, seperti yang ditunjukkan oleh banyak kompetisi machine learning Kaggle, beberapa jenis model non-linear seperti XGBoost dan AutoML Tables bekerja sangat baik pada struktur .
Bisakah regresi digunakan untuk non linier?Salah satu contoh bagaimana regresi nonlinier dapat digunakan adalah untuk memprediksi pertumbuhan populasi dari waktu ke waktu . Sebuah scatterplot dari data populasi yang berubah dari waktu ke waktu menunjukkan bahwa tampaknya ada hubungan antara waktu dan pertumbuhan populasi, tetapi itu adalah hubungan nonlinier, yang memerlukan penggunaan model regresi nonlinier.
Bisakah GLM menjadi non linier?Sebagai rangkuman, kita telah melihat bahwa GLM dapat digunakan untuk menyesuaikan data linear dan non-linear . Faktanya, ada beberapa fungsi tautan non-kanonik lainnya yang dapat kita gunakan untuk distribusi probabilitas agar sesuai dengan data dengan cara yang paling efisien. |