中ridge_10种线性代数在数据科学中的强大应用(内附多种资源)
原文選自 | Analytics Vidhya
作者 | Khyati?Mahendru
本文轉(zhuǎn)載自?TalkingData數(shù)據(jù)學(xué)堂?,未經(jīng)允許禁止轉(zhuǎn)載
本文摘要
線性代數(shù)為各種各樣的數(shù)據(jù)科學(xué)算法和應(yīng)用提供支持
在這里,我會(huì)向您介紹通過線性代數(shù)幫助您成為更好的數(shù)據(jù)科學(xué)家的10種實(shí)際應(yīng)用
我們已將這些應(yīng)用程序分類到各個(gè)領(lǐng)域 - 基本機(jī)器學(xué)習(xí),降維,自然語言處理和計(jì)算機(jī)視覺
介紹
如果數(shù)據(jù)科學(xué)是蝙蝠俠,線性代數(shù)將是羅賓。這種忠實(shí)的伙伴經(jīng)常被忽視。但實(shí)際上,它支持?jǐn)?shù)據(jù)科學(xué)的主要領(lǐng)域,包括自然語言處理和計(jì)算機(jī)視覺等熱門領(lǐng)域。
我個(gè)人看到很多數(shù)據(jù)科學(xué)愛好者選擇跳過這個(gè)主題,因?yàn)樗麄儼l(fā)現(xiàn)數(shù)學(xué)太難理解了。當(dāng)數(shù)據(jù)科學(xué)的編程語言提供了大量用于處理數(shù)據(jù)的軟件包時(shí),人們并不會(huì)對(duì)線性代數(shù)感到煩惱。
但這是個(gè)錯(cuò)覺。我們熟悉的所有強(qiáng)大的機(jī)器學(xué)習(xí)算法的背后都是線性代數(shù)。它是數(shù)據(jù)科學(xué)家技能的重要組成部分。我們很快就會(huì)看到,您應(yīng)該將線性代數(shù)視為學(xué)習(xí)數(shù)據(jù)科學(xué)必須掌握的主題。
相信我,線性代數(shù)真的是無處不在!它將開啟您以前無法想象的數(shù)據(jù)的可操作的可能性。
在本文中,我詳細(xì)解釋了十大線性代數(shù)在數(shù)據(jù)科學(xué)中的應(yīng)用。我將應(yīng)用大致分為四個(gè)領(lǐng)域供您參考:
機(jī)器學(xué)習(xí)
維度降低
自然語言處理(NLP)
計(jì)算機(jī)視覺
我還為每個(gè)應(yīng)用提供了資源,您可以深入了解您感興趣的那個(gè)應(yīng)用。
注意:在您繼續(xù)閱讀之前,我建議您閱讀這篇精湛的文章 -?數(shù)據(jù)科學(xué)的線性代數(shù)。理解我們將在這里介紹的內(nèi)容并不是強(qiáng)制性的,但它對(duì)于您技能的進(jìn)步來說是一篇很有價(jià)值的文章。
目錄
為什么學(xué)習(xí)線性代數(shù)?
機(jī)器學(xué)習(xí)中的線性代數(shù)
損失函數(shù)
正則
協(xié)方差矩陣
支持向量機(jī)分類
維數(shù)降維中的線性代數(shù)
主成分分析(PCA)
奇異值分解(SVD)
自然語言處理中的線性代數(shù)
Word嵌入
潛在語義分析
計(jì)算機(jī)視覺中的線性代數(shù)
圖像表示作為張量
卷積和圖像處理
為什么學(xué)習(xí)線性代數(shù)?
我曾經(jīng)多次遇到過這個(gè)問題。當(dāng)你只需用Python導(dǎo)入包并構(gòu)建模型時(shí),為什么要花時(shí)間學(xué)習(xí)線性代數(shù)?
我認(rèn)為線性代數(shù)是數(shù)據(jù)科學(xué)的基礎(chǔ)之一。沒有堅(jiān)實(shí)的基礎(chǔ),你無法建造一座摩天大樓,對(duì)嗎?想想這種情況:
您希望使用主成分分析(PCA)來減少數(shù)據(jù)維度。如果您不知道它將如何影響您的數(shù)據(jù),您將如何決定要保留多少主要組件?顯然,您需要真正了解算法的機(jī)制才能做出此決定。
通過對(duì)線性代數(shù)的理解,您將能夠更加了解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法,這將允許您選擇適當(dāng)?shù)某瑓?shù)并開發(fā)更好的模型。
您還可以從頭開始編寫算法,并對(duì)它們進(jìn)行自己的變換。這不是我們最初喜歡數(shù)據(jù)科學(xué)的原因嗎?那我們需要將線性代數(shù)視為解鎖一個(gè)全新世界的關(guān)鍵。
機(jī)器學(xué)習(xí)中的線性代數(shù)
最大的問題 - 線性代數(shù)都適合機(jī)器學(xué)習(xí)的哪些部分?讓我們來看看你們都非常熟悉的四個(gè)應(yīng)用。
1.損失函數(shù)
您必須非常熟悉模型(如線性回歸模型)如何擬合給定數(shù)據(jù):
您從一些任意預(yù)測(cè)函數(shù)開始(線性回歸模型的線性函數(shù))
在數(shù)據(jù)的獨(dú)立功能上使用它來預(yù)測(cè)輸出
計(jì)算預(yù)測(cè)輸出與實(shí)際輸出的距離
使用這些計(jì)算值可以使用Gradient Descent等策略優(yōu)化預(yù)測(cè)函數(shù)
但是等等 - 您如何計(jì)算預(yù)測(cè)與預(yù)期輸出的差異?用損失函數(shù)。
虧損函數(shù)是Vector Norm在線性代數(shù)中的應(yīng)用。矢量的范數(shù)可以簡單地說就是它的大小。有許多類型的矢量規(guī)范。我會(huì)很快解釋其中兩個(gè):
L1范數(shù):也稱為曼哈頓距離或出租車標(biāo)準(zhǔn)。如果從原點(diǎn)到矢量,如果唯一允許的方向與空間軸平行,則L1范數(shù)是您行進(jìn)的距離。
在這個(gè)2D空間中,您可以通過沿x軸行進(jìn)3個(gè)單位然后沿y軸平行移動(dòng)4個(gè)單位(如圖所示)到達(dá)矢量(3,4)。或者您可以先沿y軸行進(jìn)4個(gè)單位,然后沿x軸行進(jìn)3個(gè)單位。在任何一種情況下,您將共旅行7個(gè)單位。
?L2范數(shù):也稱為歐幾里德距離。L2 范數(shù)是矢量距原點(diǎn)的最短距離,如下圖中的紅色路徑所示:
這個(gè)距離是用畢達(dá)哥拉斯定理計(jì)算的。它是(3 ^ 2 + 4 ^ 2)的平方根,等于5。
但是,常規(guī)如何用于找出預(yù)測(cè)值與預(yù)期值之間的差異?假設(shè)預(yù)測(cè)值存儲(chǔ)在矢量P中,并且期望值存儲(chǔ)在矢量E中。然后PE是差異向量。PE的標(biāo)準(zhǔn)是預(yù)測(cè)的總損失。
2.正則化
正則化是數(shù)據(jù)科學(xué)中非常重要的概念。這是我們用來防止模型過度擬合的技術(shù)。正則化實(shí)際上是規(guī)范的另一個(gè)應(yīng)用。
據(jù)說一個(gè)模型在適合訓(xùn)練數(shù)據(jù)時(shí)過度擬合。這樣的模型對(duì)新數(shù)據(jù)表現(xiàn)不佳,因?yàn)樗踔烈呀?jīng)學(xué)習(xí)了訓(xùn)練數(shù)據(jù)中的噪聲。它無法概括之前從未見過的數(shù)據(jù)。下面的插圖總結(jié)了這個(gè)想法:
正則化通過將權(quán)重向量的范數(shù)添加到成本函數(shù)來懲罰過于復(fù)雜的模型。由于我們希望最小化成本函數(shù),因此我們需要最小化此規(guī)范。這導(dǎo)致權(quán)重向量的不需要的分量減少到零并且防止預(yù)測(cè)功能過于復(fù)雜。
您可以閱讀以下文章,了解正則化背后的完整數(shù)學(xué)原理:
????如何避免過度擬合使用正則化(見下方鏈接)
https://www.analyticsvidhya.com/blog/2015/02/avoid-over-fitting-regularization/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science我們上面討論的L1和L2規(guī)范用于兩種類型的正則化:
L1正則化與Lasso?回歸一起使用
L2正則化與嶺回歸一起使用
請(qǐng)參閱我們關(guān)于Python中的Ridge和Lasso回歸的完整教程(見下方鏈接),以了解有關(guān)這些概念的更多信息。
https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-ridge-lasso-regression-python/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science3.協(xié)方差矩陣
雙變量分析是數(shù)據(jù)探索中的重要一步。我們想研究變量對(duì)之間的關(guān)系。協(xié)方差或相關(guān)性是用于研究兩個(gè)連續(xù)變量之間的關(guān)系的度量。
協(xié)方差表示變量之間線性關(guān)系的方向。正協(xié)方差表示一個(gè)變量的增加或減少的同時(shí),另一個(gè)變量發(fā)生了相同的變化。負(fù)協(xié)方差表明一個(gè)變量的增加或減少伴隨另一個(gè)變量相反的變化。
另一方面,相關(guān)性是協(xié)方差的標(biāo)準(zhǔn)化值。相關(guān)值告訴我們線性關(guān)系的強(qiáng)度和方向,范圍從-1到1。
現(xiàn)在,您可能會(huì)認(rèn)為這是統(tǒng)計(jì)學(xué)而非線性代數(shù)的概念。好吧,記得我告訴過你線性代數(shù)是無處不在的嗎?使用線性代數(shù)中的轉(zhuǎn)置和矩陣乘法的概念,我們對(duì)協(xié)方差矩陣有一個(gè)非常簡潔的表達(dá)式:
這里,X是包含所有數(shù)字特征的標(biāo)準(zhǔn)化數(shù)據(jù)矩陣。
我鼓勵(lì)您閱讀我們的數(shù)據(jù)探索完整教程(見下方鏈接),以了解有關(guān)協(xié)方差矩陣,雙變量分析以及探索性數(shù)據(jù)分析中涉及的其他步驟的更多信息。
https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science4.支持向量機(jī)分類
支持向量機(jī),是最常見的分類算法之一,經(jīng)常產(chǎn)生令人印象深刻的結(jié)果。它是矢量空間概念在線性代數(shù)中的應(yīng)用。
支持向量機(jī)或SVM,是一種判別分類器,通過查找決策面來工作。它是一種有監(jiān)督的機(jī)器學(xué)習(xí)算法。
在此算法中,我們將每個(gè)數(shù)據(jù)項(xiàng)繪制為n維空間中的點(diǎn)(其中n是您已知的要素?cái)?shù)),每個(gè)要素的值是特定坐標(biāo)的值。然后,我們通過找到非常好地區(qū)分兩個(gè)類的超平面來進(jìn)行分類,即具有最大余量,在這種情況下是C.
超平面是一個(gè)子空間,其維數(shù)比其對(duì)應(yīng)的向量空間小1,因此它將是2D向量空間的直線,3D向量空間的2D平面等等。再次使用Vector Norm來計(jì)算邊際。
但是,如果數(shù)據(jù)不能像下面的情況那樣線性分離呢?
我們的直覺說決策面必須是圓形或橢圓形,對(duì)吧?但你怎么找到它?在這里,內(nèi)核轉(zhuǎn)換的概念發(fā)揮作用。在線性代數(shù)中,從一個(gè)空間轉(zhuǎn)換到另一個(gè)空間的想法非常普遍。
讓我們介紹一個(gè)變量z = x ^ 2 + y ^ 2。如果我們沿z軸和x軸繪制數(shù)據(jù),這就是數(shù)據(jù)的外觀:
現(xiàn)在,這顯然可以通過線z = a進(jìn)行線性分離,其中a是一些正常數(shù)。在轉(zhuǎn)換回原始空間時(shí),我們得到x ^ 2 + y ^ 2 = a作為決策面,這是一個(gè)圓圈!
最好的是,我們不需要自己添加其他功能。SVM有一種稱為內(nèi)核技巧的技術(shù)。閱讀有關(guān)支持向量機(jī)的這篇文章(見下方鏈接),了解SVM,內(nèi)核技巧以及如何在Python中實(shí)現(xiàn)它。
https://www.analyticsvidhya.com/blog/2017/09/understaing-support-vector-machine-example-code/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
維度降低
您將經(jīng)常使用具有數(shù)百甚至數(shù)千個(gè)變量的數(shù)據(jù)集。這就是行業(yè)運(yùn)作的方式。對(duì)每個(gè)變量進(jìn)行查看并確定哪個(gè)變量更切合實(shí)際是有必要的么?
這沒有多大意義。我們需要降低變量的數(shù)量來執(zhí)行任何類型的連貫分析。這就是維數(shù)減少的原因。現(xiàn)在,我們來看看這里常用的兩種降維方法。
5.主成分分析(PCA)
主成分分析(PCA)是一種無監(jiān)督降維技術(shù)。PCA找到最大方差的方向并沿著它們投影數(shù)據(jù)以減小尺寸。
在不使用數(shù)學(xué)的情況下,這些方向是數(shù)據(jù)的協(xié)方差矩陣的特征向量。
方陣的特征向量是特殊的非零向量,即使在對(duì)矩陣應(yīng)用線性變換(乘法)之后,其方向也不會(huì)改變。它們顯示為下圖中的紅色矢量:
您可以使用scikit-learn包中的PCA類輕松地在Python中實(shí)現(xiàn)PCA:
我在sklearn 的Digits數(shù)據(jù)集上應(yīng)用了PCA - 一組8×8手寫數(shù)字圖像。我獲得的圖像令人印象深刻,數(shù)字看起來似乎很好地聚集在一起:
請(qǐng)參閱我們的用Python代碼進(jìn)行12種降維技術(shù)綜合指南(見下方鏈接),深入了解PCA和其他11種降維技術(shù)。這是關(guān)于這個(gè)主題的最好的文章之一。
https://www.analyticsvidhya.com/blog/2018/08/dimensionality-reduction-techniques-python/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science?
6.奇異值分解
在我看來,奇異值分解(SVD)被低估了,沒有獲得足夠多的討論。這是一種令人驚嘆的矩陣分解技術(shù),具有多種應(yīng)用。我將在以后的文章中嘗試介紹其中的一些內(nèi)容。
現(xiàn)在,讓我們談?wù)劸S度降低中的SVD。具體而言,這稱為截?cái)郤VD。
我們從大的mxn數(shù)值數(shù)據(jù)矩陣A開始,其中m是行數(shù),n是特征的數(shù)量
將其分解為3個(gè)矩陣,如下所示:
????????????????????????????????????????????????資料來源:hadrienj.github.io
根據(jù)對(duì)角矩陣選擇k個(gè)奇異值,并相應(yīng)地截?cái)?修剪)3個(gè)矩陣:
最后,將截?cái)嗟木仃囅喑艘垣@得變換后的矩陣A_k。它的尺寸為mx k。因此,它具有k
以下是在Python中實(shí)現(xiàn)截?cái)嗟腟VD的代碼(它與PCA非常相似):
在將截?cái)嗟腟VD應(yīng)用于Digits數(shù)據(jù)時(shí),我得到了下面的圖。您會(huì)注意到它不像我們?cè)赑CA之后獲得的那樣集群:
自然語言處理(NLP)
自然語言處理(NLP)是目前數(shù)據(jù)科學(xué)領(lǐng)域最熱門的領(lǐng)域。這主要取決于過去18個(gè)月的重大突破。如果您還未決定選擇哪個(gè)分支 - 您應(yīng)該強(qiáng)烈考慮NLP。
讓我們看一下NLP中線性代數(shù)的幾個(gè)有趣的應(yīng)用。這應(yīng)該有助于你進(jìn)行決定!
7. Word嵌入
機(jī)器學(xué)習(xí)算法不適用于原始文本數(shù)據(jù)。我們需要將文本轉(zhuǎn)換為一些數(shù)字和統(tǒng)計(jì)特征來創(chuàng)建模型輸入。文本數(shù)據(jù)中有許多使用工程特征的方法,例如:
文本的元屬性,如字?jǐn)?shù),特殊字符數(shù)等。
使用詞性標(biāo)簽和語法關(guān)系(如專有名詞的數(shù)量)的文本的NLP屬性
Word矢量符號(hào)或Word嵌入
Word嵌入是一種將單詞表示為數(shù)字的低維向量同時(shí)在文檔中保留其上下文的方式。這些表示是通過在大量文本上訓(xùn)練不同的神經(jīng)網(wǎng)絡(luò)而獲得的,這些文本被稱為語料庫。它們還有助于分析單詞之間的句法相似性:
Word2Vec和GloVe是兩種最受歡迎的用來創(chuàng)建Word曲面嵌入的模型。
在使用Word2Vec進(jìn)行一些輕度預(yù)處理后,我在莎士比亞語料庫上訓(xùn)練了我的模型,并獲得了“世界”這個(gè)詞的嵌入詞:
太酷了!但更棒的是我獲得了下面的這張圖。觀察到語法相似的單詞會(huì)彼此更加接近。我圈出了一些這樣的詞匯。結(jié)果并不完美,但仍然非常驚人:
還有其他幾種獲取Word嵌入的方法。閱讀我們的文章直觀了解Word嵌入:從計(jì)數(shù)向量到Word2Vec。(見下方鏈接)
https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
8.潛在語義分析(LSA)
當(dāng)你聽到這組話語時(shí),你首先想到的是什么 - “王子,王室,國王,貴族”?這些非常不同的詞幾乎是同義詞。
現(xiàn)在,考慮以下句子:
主隊(duì)的投手似乎身體不適
桌上有一罐果汁可供您享用
(投手和罐子的英文都是pitcher)
“pitcher”這個(gè)詞基于句子的語境會(huì)有不同的含義。
這些單詞對(duì)于我們?nèi)祟悂碚f很容易通過多年的語言經(jīng)驗(yàn)來解釋。但是機(jī)器怎么辦?在這里,主題模型的NLP概念發(fā)揮作用:
主題模型是一種無監(jiān)督的技術(shù),可以在各種文本文檔中查找主題。這些主題只不過是相關(guān)單詞的集群。每個(gè)文檔可以有多個(gè)主題。主題模型輸出各種主題,它們?cè)诿總€(gè)文檔中的分布以及它包含的不同單詞的頻率。
潛在語義分析(LSA)或潛在語義索引是主題建模的技術(shù)之一。它是奇異值分解的另一種應(yīng)用。
潛在意味著'隱藏'。正如其名稱一樣,LSA試圖通過利用單詞周圍的上下文從文檔中捕獲隱藏的主題。
我將簡要介紹LSA中的步驟,因此請(qǐng)確保使用Python中的代碼查看使用潛在語義分析的主題建模的簡介(見下方鏈接),以便進(jìn)行適當(dāng)和深入的理解。
https://www.analyticsvidhya.com/blog/2018/10/stepwise-guide-topic-modeling-latent-semantic-analysis/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
首先,為您的數(shù)據(jù)生成Document-Term矩陣
使用SVD將矩陣分解為3個(gè)矩陣:
文檔主題矩陣
主題重要性對(duì)角矩陣
主題詞矩陣
根據(jù)主題的重要性截?cái)嗑仃?/p>
有關(guān)自然語言處理的實(shí)踐經(jīng)驗(yàn),您可以查看我們的課程用Python處理NLP。該課程對(duì)初學(xué)者友好,您將構(gòu)建5個(gè)真實(shí)生活中的項(xiàng)目!
計(jì)算機(jī)視覺
深度學(xué)習(xí)的另一個(gè)領(lǐng)域是計(jì)算機(jī)視覺。如果您希望將技能組擴(kuò)展到表格數(shù)據(jù)之外,那么請(qǐng)學(xué)習(xí)如何使用圖像。
這將拓寬您目前對(duì)機(jī)器學(xué)習(xí)的理解,并幫助您快拿下面試。
9.圖像表示為張量
您如何解釋計(jì)算機(jī)視覺中的“視覺”?顯然,計(jì)算機(jī)不像人類那樣處理圖像。就像我之前提到的,機(jī)器學(xué)習(xí)算法需要使用數(shù)字特征。
數(shù)字圖像由稱為像素的小不可分割單元組成。請(qǐng)看下圖:
這個(gè)灰度圖像數(shù)字零的由8×8 = 64個(gè)像素。每個(gè)像素的值在0到255的范圍內(nèi)。值0表示黑色像素,255表示白色像素。
mxn灰度圖像可以表示為具有m行和n列的2D矩陣,其中單元格包含相應(yīng)的像素值:
但彩色圖像怎么樣?彩色圖像通常存儲(chǔ)在RGB系統(tǒng)中。每個(gè)圖像可以被認(rèn)為是由三個(gè)2D矩陣表示,R,G和B通道各有一個(gè)。R通道中的像素值0表示紅色的零強(qiáng)度,255表示紅色的全強(qiáng)度。
然后,每個(gè)像素值是三個(gè)通道中相應(yīng)值的組合:
實(shí)際上,不是使用3個(gè)矩陣來表示圖像,而是使用張量。張量是廣義的n維矩陣。對(duì)于RGB圖像,使用第三有序張量。想象一下,三個(gè)二維矩陣一個(gè)接一個(gè)堆疊:
????????????????????????????????????????????????????????圖片來源:slidesharecdn
10.卷積和圖像處理
2D卷積是圖像處理中非常重要的操作。它包括以下步驟:
從一個(gè)小的權(quán)重矩陣開始,稱為內(nèi)核或過濾器
在2D輸入數(shù)據(jù)上滑動(dòng)此內(nèi)核,執(zhí)行逐元素乘法
添加獲得的值并將總和放在單個(gè)輸出像素中
該功能看起來有點(diǎn)復(fù)雜,但它廣泛用于執(zhí)行各種圖像處理操作,如銳化和模糊圖像和邊緣檢測(cè)。我們只需要知道正在嘗試完成的任務(wù)的正確Kernel。以下是一些可以使用的Kernel:
您可以下載我使用過的圖像,并使用上面的代碼和內(nèi)核自己嘗試這些圖像處理操作。另外,試試這個(gè)關(guān)于圖像分割技術(shù)的計(jì)算機(jī)視覺教程!(見下方鏈接)
https://www.analyticsvidhya.com/blog/2019/04/introduction-image-segmentation-techniques-python/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
這是迄今為止我最喜歡的線性代數(shù)在數(shù)據(jù)科學(xué)中的應(yīng)用。
現(xiàn)在您已熟悉計(jì)算機(jī)視覺的基礎(chǔ)知識(shí),現(xiàn)在是時(shí)候通過16個(gè)超棒的OpenCV功能開始您的計(jì)算機(jī)視覺之旅(見下方鏈接)。我們還有一個(gè)關(guān)于使用深度學(xué)習(xí)的計(jì)算機(jī)視覺的綜合課程(見下方鏈接),您可以在其中進(jìn)行真實(shí)的計(jì)算機(jī)視覺案例研究!
https://www.analyticsvidhya.com/blog/2019/03/opencv-functions-computer-vision-python/?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
https://courses.analyticsvidhya.com/courses/computer-vision-using-deep-learning-version2?utm_source=blog&utm_medium=10-applications-linear-algebra-data-science
結(jié)束筆記
我的目標(biāo)是將線性代數(shù)變得比你之前想象的更有趣。就個(gè)人而言,了解一個(gè)主題的應(yīng)用會(huì)激勵(lì)我學(xué)習(xí)更多關(guān)于它的知識(shí)。
歡迎大家關(guān)注我們的微信公眾號(hào)數(shù)據(jù)幫club↓
總結(jié)
以上是生活随笔為你收集整理的中ridge_10种线性代数在数据科学中的强大应用(内附多种资源)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阵列信号处理基础知识
- 下一篇: Luyten反编译工具