點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達

本文介紹了 10 個常見機器學習案例,這些案例需要用線性代數(shù)才能得到最好的理解。
線性代數(shù)是數(shù)學的分支學科,涉及矢量、矩陣和線性變換。
它是機器學習的重要基礎,從描述算法操作的符號到代碼中算法的實現(xiàn),都屬于該學科的研究范圍。
雖然線性代數(shù)是機器學習領域不可或缺的一部分,但二者的緊密關系往往無法解釋,或只能用抽象概念(如向量空間或特定矩陣運算)解釋。
如何在處理數(shù)據(jù)時使用線性代數(shù)結構,如表格數(shù)據(jù)集和圖像。
數(shù)據(jù)準備過程中用到的線性代數(shù)概念,例如 one-hot 編碼和降維。
深度學習、自然語言處理和推薦系統(tǒng)等子領域中線性代數(shù)符號和方法的深入使用。
1. Dataset and Data Files 數(shù)據(jù)集和數(shù)據(jù)文件
2. Images and Photographs 圖像和照片
3. One-Hot Encoding one-hot 編碼
4. Linear Regression 線性回歸
6. Principal Component Analysis 主成分分析
7. Singular-Value Decomposition 奇異值分解
8. Latent Semantic Analysis 潛在語義分析
9. Recommender Systems 推薦系統(tǒng)
1. 數(shù)據(jù)集和數(shù)據(jù)文件
在機器學習中,你可以在數(shù)據(jù)集上擬合一個模型。
這是表格式的一組數(shù)字,其中每行代表一組觀察值,每列代表觀測的一個特征。
例如,下面這組數(shù)據(jù)是鳶尾花數(shù)據(jù)集的一部分
數(shù)據(jù)集:http://archive.ics.uci.edu/ml/datasets/Iris
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
這些數(shù)據(jù)實際上是一個矩陣:線性代數(shù)中的一個關鍵數(shù)據(jù)結構。
接下來,將數(shù)據(jù)分解為輸入數(shù)據(jù)和輸出數(shù)據(jù),來擬合一個監(jiān)督機器學習模型(如測量值和花卉品種),得到矩陣(X)和矢量(y)。矢量是線性代數(shù)中的另一個關鍵數(shù)據(jù)結構。
每行長度相同,即每行的數(shù)據(jù)個數(shù)相同,因此我們可以說數(shù)據(jù)是矢量化的。這些行數(shù)據(jù)可以一次性或成批地提供給模型,并且可以預先配置模型,以得到固定寬度的行數(shù)據(jù)。
你使用的每個圖像本身都是一個固定寬度和高度的表格結構,每個單元格有用于表示黑白圖像的 1 個像素值或表示彩色圖像的 3 個像素值。
與圖像相關的操作,如裁剪、縮放、剪切等,都是使用線性代數(shù)的符號和運算來描述的。
可能是用于解決分類問題的類別標簽,也可能是分類輸入變量。
對分類變量進行編碼以使它們更易于使用并通過某些技術進行學習是很常見的。one-hot 編碼是一種常見的分類變量編碼。
one-hot 編碼可以理解為:創(chuàng)建一個表格,用列表示每個類別,用行表示數(shù)據(jù)集中每個例子。在列中為給定行的分類值添加一個檢查或「1」值,并將「0」值添加到所有其他列。
red, green, blue
1, 0, 0
0, 1, 0
0, 0, 1
...
每一行都被編碼為一個二進制矢量,一個被賦予「0」或「1」值的矢量。這是一個稀疏表征的例子,線性代數(shù)的一個完整子域。
線性回歸是一種用于描述變量之間關系的統(tǒng)計學傳統(tǒng)方法。
該方法通常在機器學習中用于預測較簡單的回歸問題的數(shù)值。
描述和解決線性回歸問題有很多種方法,即找到一組系數(shù),用這些系數(shù)與每個輸入變量相乘并將結果相加,得出最佳的輸出變量預測。
如果您使用過機器學習工具或機器學習庫,解決線性回歸問題的最常用方法是通過最小二乘優(yōu)化,這一方法是使用線性回歸的矩陣分解方法解決的(例如 LU 分解或奇異值分解)。
即使是線性回歸方程的常用總結方法也使用線性代數(shù)符號:
其中,y 是輸出變量,A 是數(shù)據(jù)集,b 是模型系數(shù)。
在應用機器學習時,我們往往尋求最簡單可行的模型來發(fā)揮解決問題的最佳技能。
較簡單的模型通常更擅長從具體示例泛化到未見過的數(shù)據(jù)。
在涉及系數(shù)的許多方法中,例如回歸方法和人工神經(jīng)網(wǎng)絡,較簡單的模型通常具有較小的系數(shù)值。
一種常用于模型在數(shù)據(jù)擬合時盡量減小系數(shù)值的技術稱為正則化,常見的實現(xiàn)包括正則化的 L2 和 L1 形式。
這兩種正則化形式實際上是系數(shù)矢量的大小或長度的度量,是直接脫胎于名為矢量范數(shù)的線性代數(shù)方法。
通常,數(shù)據(jù)集有許多列,列數(shù)可能達到數(shù)十、數(shù)百、數(shù)千或更多。
對具有許多特征的數(shù)據(jù)進行建模具有一定的挑戰(zhàn)性。而且,從包含不相關特征的數(shù)據(jù)構建的模型通常不如用最相關的數(shù)據(jù)訓練的模型。
我們很難知道數(shù)據(jù)的哪些特征是相關的,而哪些特征又不相關。
自動減少數(shù)據(jù)集列數(shù)的方法稱為降維,其中也許最流行的方法是主成分分析法(簡稱 PCA)。
該方法在機器學習中,為可視化和模型創(chuàng)建高維數(shù)據(jù)的投影。
PCA 方法的核心是線性代數(shù)的矩陣分解方法,可能會用到特征分解,更廣義的實現(xiàn)可以使用奇異值分解(SVD)。
另一種流行的降維方法是奇異值分解方法,簡稱 SVD。
如上所述,正如該方法名稱所示,它是源自線性代數(shù)領域的矩陣分解方法。
該方法在線性代數(shù)中有廣泛的用途,可直接應用于特征選擇、可視化、降噪等方面。
在機器學習中我們會看到以下兩個使用 SVD 的情況。
在用于處理文本數(shù)據(jù)的機器學習子領域(稱為自然語言處理),通常將文檔表示為詞出現(xiàn)的大矩陣。
例如,矩陣的列可以是詞匯表中的已知詞,行可以是文本的句子、段落、頁面或文檔,矩陣中的單元格標記為單詞出現(xiàn)的次數(shù)或頻率。
這是文本的稀疏矩陣表示。矩陣分解方法(如奇異值分解)可以應用于此稀疏矩陣,該分解方法可以提煉出矩陣表示中相關性最強的部分。以這種方式處理的文檔比較容易用來比較、查詢,并作為監(jiān)督機器學習模型的基礎。
這種形式的數(shù)據(jù)準備稱為潛在語義分析(簡稱 LSA),也稱為潛在語義索引(LSI)。
涉及產(chǎn)品推薦的預測建模問題被稱為推薦系統(tǒng),這是機器學習的一個子領域。
例如,基于你在亞馬遜上的購買記錄和與你類似的客戶的購買記錄向你推薦書籍,或根據(jù)你或與你相似的用戶在 Netflix 上的觀看歷史向你推薦電影或電視節(jié)目。
推薦系統(tǒng)的開發(fā)主要涉及線性代數(shù)方法。一個簡單的例子就是使用歐式距離或點積之類的距離度量來計算稀疏顧客行為向量之間的相似度。
像奇異值分解這樣的矩陣分解方法在推薦系統(tǒng)中被廣泛使用,以提取項目和用戶數(shù)據(jù)的有用部分,以備查詢、檢索及比較。
人工神經(jīng)網(wǎng)絡是一種非線性機器學習算法,它受大腦中信息處理元素的啟發(fā),其有效性已經(jīng)在一系列問題中得到驗證,其中最重要的是預測建模。
深度學習是近期出現(xiàn)的、使用最新方法和更快硬件的人工神經(jīng)網(wǎng)絡的復興,這一方法使得在非常大的數(shù)據(jù)集上開發(fā)和訓練更大更深的(更多層)網(wǎng)絡成為可能。深度學習方法通常會在機器翻譯、照片字幕、語音識別等一系列具有挑戰(zhàn)性的領域取得最新成果。
神經(jīng)網(wǎng)絡的執(zhí)行涉及線性代數(shù)數(shù)據(jù)結構的相乘和相加。如果擴展到多個維度,深度學習方法可以處理向量、矩陣,甚至輸入和系數(shù)的張量,此處的張量是一個兩維以上的矩陣。
線性代數(shù)是描述深度學習方法的核心,它通過矩陣表示法來實現(xiàn)深度學習方法,例如 Google 的 TensorFlow Python 庫,其名稱中包含「tensor」一詞。
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。
下載2:Python視覺實戰(zhàn)項目52講
在「小白學視覺」公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。
在「小白學視覺」公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~