有關(guān)機器學習的線性代數(shù)基礎(chǔ)學習資料都有哪些?
網(wǎng)友解答: 數(shù)學是機器學習的基礎(chǔ)。斯坦福大學教授 Stephen Boyd 聯(lián)合加州大學洛杉磯分校的 Lieven Vandenberghe 教授出版了一本基礎(chǔ)數(shù)學書籍,從向量到最小二乘
數(shù)學是機器學習的基礎(chǔ)。斯坦福大學教授 Stephen Boyd 聯(lián)合加州大學洛杉磯分校的 Lieven Vandenberghe 教授出版了一本基礎(chǔ)數(shù)學書籍,從向量到最小二乘法,分三部分進行講解并配以輔助資料。此外,這本書也是斯坦福 EE103 課程、UCLA EE133A 課程的教材,由劍橋大學出版社出版(允許網(wǎng)絡(luò)公開)。
項目地址:https://web.stanford.edu/~boyd/vmls/
這一本書的資料還是比較齊全的,除了本身 473 頁的教材,還有另一本 178 頁的對應代碼講解。當然如果讀者只需要了解數(shù)學部分的話,代碼部分是不需要了解的。但是如果比較關(guān)注線性代數(shù)的應用,可能就需要閱讀這些基礎(chǔ)代碼,并順便學一學 Julia 語言了。最后,這一本書還提供了對應的課程 PPT,讀者也可以把它們作為輔助資料。
書籍簡介
這本書旨在介紹向量、矩陣和最小二乘方法等應用線性代數(shù)的基礎(chǔ)內(nèi)容,它的目標是為只有很少或根本沒有線性代數(shù)基礎(chǔ)的初學者提供入門方法,包括線性代數(shù)的基本思想以及在數(shù)據(jù)科學和機器學習等領(lǐng)域的應用方法。
不過讀者還是需要熟悉一般的數(shù)學符號,并且在一些地方也會用到微積分,但它們并不起關(guān)鍵作用,因此基本上以前學過高數(shù)就差不多了。這本書包含了很多傳統(tǒng)概率論與統(tǒng)計學所討論的話題,例如使用數(shù)學模型擬合數(shù)據(jù)等,但讀者不一定需要這一方面的背景知識。
這本書比一般的應用線性代數(shù)課本要有更少的數(shù)學成分,只會詳細介紹基本線性代數(shù)、線性獨立性等理論概念,以及 QR 因式分解這一計算工具。而這本書討論的大多數(shù)機器學習等方面的應用只會使用一種方法,即最小二乘法及其擴展。在某種意義下,該書更強調(diào)的是應用,即依賴于少量基本數(shù)學概念和方法,而覆蓋大多數(shù)應用。但是這本書所呈現(xiàn)的數(shù)學是完整的,因為它會仔細證明每一個數(shù)學聲明。然而,與大多數(shù)介紹性的線性代數(shù)課本相比,這本書描述了許多實際應用。包括一些通常被認為是高級主題的應用,如文檔分類、狀態(tài)估計和投資組合優(yōu)化等。
這本書并不需要任何計算機編程的知識,因此可以作為傳統(tǒng)的教學課程,我們只需要閱讀對應章節(jié)并完成一些不涉及數(shù)值計算的練習題就行了。然而,這種方法會并不能使我們完全理解這本書,同時也得不到實際鍛煉,例如我們可以使用這本書的觀點與方法構(gòu)建一個基于數(shù)據(jù)的預測模型、增強圖像數(shù)據(jù)或優(yōu)化投資組合等。隨著計算力的不斷增長,以及 NumPy 等高效矩陣運算庫的發(fā)展,這本書中的描述的方法可以輕松地應用到實踐中。因此讀者還可以使用 Python 等編程語言練習不同的項目而補充學習資源,只有使用真實數(shù)據(jù)搭建應用才能真切地理解理論思想。本書提供了一些需要數(shù)值計算的練習題,且數(shù)據(jù)文件與編程語言的資源都可在線獲得。
這本書主要分為三部分。第一部分介紹了向量及各種向量運算和函數(shù),例如加法、向量內(nèi)積、距離和角度等。本書還展示了如何使用向量表示文檔中的詞數(shù)、時間序列、目標屬性、產(chǎn)品規(guī)格、音頻數(shù)據(jù)和圖像等。第二部分如同前一部分重點關(guān)注矩陣的概念與應用,包括矩陣的求逆和解線性方程等。第三部分介紹了最小二乘法,它不僅展示了如何簡單而自然地近似求解一個超定方程組,同時還有一些可應用到很多方法的最小二乘擴展知識。
該書還可用于自學,并輔以在線提供的資料,例如下面這份 470 頁的 PPT。
地址:https://web.stanford.edu/~boyd/vmls/vmls-slides.pdf
按照設(shè)計,本書的進度會逐漸加快,也就是說第一部分和第二部分有許多細節(jié)和簡單的例子,第三部分有更多高級的例子和應用。對于只有很少線性代數(shù)基礎(chǔ)或根本沒有的讀者而言,課程可以側(cè)重于第一部分和第二部分,并且僅簡單了解一些更高級的應用。而熟悉背景知識的讀者可以快速過一遍前面兩部分,并將重點放在最后的應用部分上。
除了線性代數(shù)等數(shù)學基礎(chǔ),這本書還介紹了很多機器學習應用,包括比較流行的 K 均值聚類等。而這些機器學習算法主要都介紹了數(shù)學表現(xiàn)形式和偽算法,并不涉及具體的代碼,讀者可另外查看這本書的配套代碼實現(xiàn)。這本書提供的了基于 Julia 語言的配套代碼!
下面我們將簡要介紹聚類這一方面課本內(nèi)容與對應的 Julia 代碼。聚類也就是說將同類的無監(jiān)督數(shù)據(jù)聚在一起,它的目標函數(shù)可以簡單地定義為各樣本到對應聚類中心的距離和。如果這個距離和非常大,那么聚類的效果就不好,我們會希望通過最優(yōu)化算法最小化這個距離。在這本書中,距離可以定義為:
而 K 均值聚類會更形象地利用圖像展示聚類效果,下圖展示了 K 均值聚類迭代一次的更新過程:
而這一更新過程會有對應的為代碼:
除了這些基礎(chǔ)內(nèi)容外,這本書還會展示很多可視化內(nèi)容以幫助理解理論知識,例如展示了最終聚類結(jié)果的圖 4.4 和展示了損失函數(shù)下降趨勢的圖 4.5:
當然,K 均值聚類還提供了對應 Julia 實現(xiàn),如下展示了實現(xiàn)該算法的代碼,讀者在學習這本書的同時還能順便學學 Julia 語言。
function kmeans(X, k; maxiters = 100, tol = 1e-5) if ndims(X) == 2 X = [X[:,i] for i in 1:size(X,2)] end; N = length(X) n = length(X[1]) distances = zeros(N) reps = [zeros(n) for j=1:k] assignment = [ rand(1:k) for i in 1:N ] Jprevious = Inf for iter = 1:maxiters for j = 1:k group = [i for i=1:N if assignment[i] == j] reps[j] = sum(X[group]) / length(group); end; for i = 1:N (distances[i], assignment[i]) = findmin([norm(X[i] - reps[j]) for j = 1:k]) end; J = norm(distances)^2 / N println("Iteration ", iter, ": Jclust = ", J, ".") if iter 1 && abs(J - Jprevious) < tol * J return assignment, reps end Jprevious = J endend最后,這本書的對應代碼和數(shù)據(jù)都可以在 GitHub 中找到:https://github.com/VMLS-book。
網(wǎng)友解答:強烈推薦:
3blue1brown《線性代數(shù)的本質(zhì)》系列
B站上就有
這個系列用幾何直觀幫助我們理解線性代數(shù)的幾何本質(zhì),用于入門是最好的