Selama ini, saya belajar tentang mesin penambangan, dan belajar tentang penambangan logistic regression dari bab 5, yang terasa cukup sulit. Saya dapat melacak sumbernya, mulai dari penambangan logistic regression ke penambangan linear regression, dan kemudian ke penambangan binomial minimal. Akhirnya, saya menyesuaikan dengan penambangan matematika lanjutan (edit ke-6, buku bawah) di bab 9, bagian 10, dan kemudian saya tahu dari mana asumsi matematika di balik penambangan binomial minimal berasal. Kerucut dua kali paling kecil adalah implementasi dari rumus empiris dalam masalah optimasi. Memahami prinsipnya sangat berguna untuk mempelajari kerucut regression Logistic dan kerucut yang mendukung mesin vektor.
Sejarah munculnya dua kali lipat paling kecil dari dua kali lipat adalah sangat menarik.
Pada tahun 1801, astronom Italia Giuseppe Piazzi menemukan asteroid pertama, Nereus. Setelah 40 hari pengamatan, Piazzi kehilangan posisi Nereus karena Nereus berjalan di belakang Matahari. Para ilmuwan di seluruh dunia kemudian menggunakan data pengamatan Piazzi untuk mencari Nereus, tetapi tidak ada hasil dari hasil perhitungan kebanyakan orang.
Metode penggambaran dua kali minimum yang digunakan Gauss diterbitkan pada tahun 1809 dalam bukunya The Theory of the Movement of the Cosmos, dan ilmuwan Prancis Le Jeannard secara independen menemukan penggambaran dua kali minimum pada tahun 1806, tetapi tidak diketahui oleh orang-orang saat itu.
Pada tahun 1829, Gauss memberikan bukti bahwa pengoptimalan dua kali lipat minimal lebih kuat daripada metode lain, lihat Gauss-Markov.
Inti dari rumus perkalian kuadrat terendah adalah memastikan bahwa semua data yang menyimpang adalah kuadrat dan terkecil.
Misalkan kita mengumpulkan data panjang dan lebar dari beberapa kapal perang.
Dari data ini, kami menggunakan Python untuk menggambar grafik titik-titik:
Kode untuk menggambar gambar berdetik adalah sebagai berikut:
import numpy as np # -*- coding: utf-8 -*
import os
import matplotlib.pyplot as plt
def drawScatterDiagram(fileName): # 改变工作路径到数据文件存放的地方
os.chdir("d:/workspace_ml")
xcord=[];ycord=[]
fr=open(fileName)
for line in fr.readlines():
lineArr=line.strip().split()
xcord.append(float(lineArr[1]));ycord.append(float(lineArr[2]))
plt.scatter(xcord,ycord,s=30,c='red',marker='s')
plt.show()
Jadi jika kita mengambil dua titik pertama, kita bisa mendapatkan dua persamaan. 152 oranga+b=15,5 328a + b = 32,4 Solusi kedua persamaan ini adalah a = 0.197, dan b = -14.48. Jadi kita bisa mendapatkan grafik yang seperti ini:
Baiklah, ini adalah pertanyaan baru, apakah a dan b adalah yang optimal? Dengan kata-kata profesional, apakah a dan b adalah parameter yang optimal dalam model?
Jawabannya adalah: memastikan bahwa semua data memiliki kekosongan kuadrat dan minimal. Pada prinsipnya, kita akan berbicara tentang hal itu di kemudian hari. Pertama, kita akan melihat bagaimana menggunakan alat ini untuk menghitung a dan b yang terbaik.
Sekarang yang harus kita lakukan adalah mencari M untuk membuat minimal a dan b. Perhatikan dalam persamaan ini, kita sudah tahu yi dan xi.
Pada kenyataannya, persamaan ini adalah fungsi biner dengan a, b sebagai variabel sendiri dan M sebagai variabel akibat.
Ingat kembali bagaimana dalam bilangan tinggi fungsi tunggal memiliki nilai maksimum. Kita menggunakan alat derivatif. Jadi dalam fungsi biner, kita masih menggunakan derivatif. Hanya saja di sini derivatif memiliki nama baru. Dengan mencari derivatif dari M, kita mendapatkan himpunan persamaan.
X dan Y dalam kedua persamaan ini diketahui.
Karena saya menggunakan data dari Wikipedia, saya langsung menggambar gambar yang sesuai dengan jawabannya:
# -*- coding: utf-8 -*importnumpy as npimportosimportmatplotlib.pyplot as pltdefdrawScatterDiagram(fileName):
# 改变工作路径到数据文件存放的地方os.chdir("d:/workspace_ml")xcord=[];
# ycord=[]fr=open(fileName)forline infr.readlines():lineArr=line.strip().split()xcord.append(float(lineArr[1]));
# ycord.append(float(lineArr[2]))plt.scatter(xcord,ycord,s=30,c='red',marker='s')
# a=0.1965;b=-14.486a=0.1612;b=-8.6394x=np.arange(90.0,250.0,0.1)y=a*x+bplt.plot(x,y)plt.show()
# -*- coding: utf-8 -*
import numpy as np
import os
import matplotlib.pyplot as plt
def drawScatterDiagram(fileName):
#改变工作路径到数据文件存放的地方
os.chdir("d:/workspace_ml")
xcord=[];ycord=[]
fr=open(fileName)
for line in fr.readlines():
lineArr=line.strip().split()
xcord.append(float(lineArr[1]));ycord.append(float(lineArr[2]))
plt.scatter(xcord,ycord,s=30,c='red',marker='s')
#a=0.1965;b=-14.486
a=0.1612;b=-8.6394
x=np.arange(90.0,250.0,0.1)
y=a*x+b
plt.plot(x,y)
plt.show()
Dalam pencocokan data, mengapa memaksimalkan parameter model dengan memaksimalkan nilai absolut dan minimal, bukan dengan memaksimalkan suku dari perbedaan data prediksi model dengan data yang sebenarnya?
Ada yang sudah menjawab pertanyaan ini, lihat linknya.http://blog.sciencenet.cn/blog-430956-621997.html)
Secara pribadi saya merasa penjelasan ini sangat menarik. Terutama asumsi di dalamnya: semua titik yang menyimpang dari f (x) memiliki kebisingan.
Semakin jauh sebuah titik menyimpang, semakin besar kebisingan, semakin kecil kemungkinan titik tersebut muncul. Lalu, apa hubungan antara tingkat penyimpangan x dan kemungkinan f (x) muncul?
Hal-hal di atas adalah dua dimensi, yaitu hanya ada satu variabel diri. Tetapi di dunia nyata, yang mempengaruhi hasil akhir adalah penumpukan berbagai faktor, yaitu akan ada lebih dari satu variabel diri.
Untuk fungsi non-linear umum, mencari dengan matriks terbalik dalam matriks aljabar linier tidak apa-apa; karena sementara tidak ada contoh yang cocok, tinggal di sini sebagai derivatif.
Tentu saja alam lebih banyak tentang penyesuaian multipolar, bukan linearitas sederhana, yang merupakan konten yang lebih tinggi.
Karya asli, izin untuk menyalin, ketika menyalin, pastikan untuk menandai artikel asal, informasi penulis dan pernyataan ini dalam bentuk hyperlink; jika tidak, akan dikenakan tanggung jawab hukum.http://sbp810050504.blog.51cto.com/2799422/1269572