作者|Soner Y?ld?r?m
編譯|VK
來源|Towards Data Science

機器學習和深度學習模型需要大量的資料,它們的性能在很大程度上取決于資料量,因此,我們傾向于收集盡可能多的資料,以建立一個穩健和準確的模型,資料以多種不同的格式收集,從數字到影像,從文本到聲波,然而,我們需要將資料轉換為數字以便對其進行分析和建模,
僅僅將資料轉換為標量(單個數字)是不夠的,隨著資料量的增加,使用標量的操作開始變得低效,我們需要向量化或矩陣運算來有效地進行計算,這就是線性代數發揮作用的地方,
線性代數是資料科學領域的重要課題之一,在這篇文章中,我們將通過使用NumPy的例子來介紹線性代數的基本概念,
NumPy是Python的一個科學計算庫,是許多庫(比如Pandas)的基礎,
線性代數中的物件型別
線性代數中的物件(或資料結構)型別:
-
標量:單個數字
-
向量:數字陣列
-
矩陣:二維數字陣列
-
張量:N>2的N維數列
標量就是一個數字,我們將在下面的示例中看到,它可以用于向量化操作,
向量是一組數字,例如,5個元素的向量:

我們可以在向量化運算中使用標量,對向量的每個元素執行指定的操作,例如

矩陣是二維向量

它看起來像是一個包含行和列的pandas資料框,實際上,pandas資料幀被轉換成矩陣,然后輸入到機器學習模型中,
張量是一個N維數陣列,其中N大于2,張量主要用于輸入資料為三維的深度學習模型,

很難用數字來表示,但是可以把T看成3個3x2形狀的矩陣,
shape方法可用于檢查numpy陣列的形狀,

陣列的大小是通過乘以每個維度的大小來計算的,

常用矩陣術語
如果行數等于列數,矩陣稱為方陣,因此,上面的矩陣A是一個方陣,
單位矩陣,表示為I,是一個方陣,對角線上有是,其他位置全是0,NumPy的identity函式可以用來創建任意大小的單位矩陣,

一個單位矩陣的特殊之處在于矩陣乘上它不會改變,從這個意義上講,它與實數中的數字1相似,我們將在這篇文章的矩陣乘法部分用單位矩陣做例子,
矩陣的逆矩陣是與原始矩陣相乘得到單位矩陣的矩陣,

不是每個矩陣都有一個逆矩陣,如果矩陣A有一個逆矩陣,那么它被稱為可逆或非奇異
點乘與矩陣乘法
點乘和矩陣乘法是復雜機器學習和深度學習模型的組成部分,因此對它們進行全面的了解是非常有價值的,
兩個向量的點積是元素相對于其位置的乘積之和,第一個向量的第一個元素乘以第二個向量的第一個元素,依此類推,這些積的和就是點積,在NumPy中計算點積的函式是dot(),
讓我們首先以numpy陣列的形式創建兩個簡單的向量并計算點積,

點積計算為(1*2)+(2*4)+(3*6),即28,
因為我們在相同的位置相乘,所以這兩個向量的長度必須相同才能得到點積,
在資料科學領域,我們主要處理矩陣,矩陣是一組以結構化方式組合的行和列向量,因此,兩個矩陣的相乘涉及向量的許多點積運算,我們再看一些例子就會更清楚了,我們先用NumPy創建兩個2x2矩陣,


2x2矩陣有2行2列,行和列的索引以0開頭,例如,A(索引為0的行)的第一行是[4,2]的陣列,A的第一列是[4,0]的陣列,第一行和第一列的元素是4,
我們可以訪問單個行、列或元素,如下所示:

這些是理解矩陣乘法的重要概念,
兩個矩陣的相乘涉及到第一個矩陣的行和第二個矩陣的列之間的點乘,第一步是A的第一行和B的第一列之間的點積,這個點積的結果是在位置[0,0](即第一行,第一列)處得到的矩陣的元素,

因此,得到的矩陣C在第一行和第一列將有一個 (4*0) + (2*4) ,C[0,0]=18,
下一步是A的第一行和B的第二列的點積,

C在第一行和第二列有一個(4*0)+(2*4),C[0,1]=8,
第一行A已完成,因此我們從A的第二行開始,并遵循相同的步驟,

C在第二行和第一列有一個(0*4)+(3*1),C[1,0]=3,
最后一步是A的第二行和B的第二列之間的點積,

C在第二行和第二列有一個(0*0)+(3*4),C[1,1]=12,
我們已經看到它是如何一步一步完成的,所有這些操作都是用np.dot操作:

你可能還記得,我們已經提到過,單位矩陣乘以任何矩陣時不會改變矩陣,讓我們舉個例子,

我們還提到,當一個矩陣乘以它的逆矩陣時,結果就是單位矩陣,讓我們先創建一個矩陣,然后求它的逆矩陣,我們可以利用NumPy函式linalg.inv()求矩陣的逆,

用B的逆矩陣C乘以B:

我們得到了單位矩陣,
正如我們在向量點積中回憶的那樣,兩個向量的長度必須相同才能有一個點積,矩陣乘法中的每個點積運算都必須遵循這個規則,點積是在第一個矩陣的行和第二個矩陣的列之間進行的,因此,第一個矩陣的行和第二個矩陣的列的長度必須相同,
矩陣乘法的要求是第一個矩陣的列數必須等于第二個矩陣的行數,
例如,我們可以用一個3x2矩陣乘以一個2x3矩陣,

結果矩陣的形狀將是3x3,因為我們對A的每一行進行3點積運算,A有3行,確定結果矩陣形狀的一種簡單方法是從第一個矩陣中提取行數,從第二個矩陣中提取列數:
- 3x2和2x3相乘回傳3x3
- 3x2和2x2相乘回傳3x2
- 2x4和4x3相乘回傳2x3
我們已經討論了線性代數的基本運算,這些基本操作是復雜機器學習和深度學習模型的構建基礎,在模型優化程序中,需要進行大量的矩陣乘法運算,因此,了解基礎知識也是非常重要的,
謝謝你的閱讀,如果你有任何反饋,請告訴我,
原文鏈接:https://towardsdatascience.com/linear-algebra-for-data-scientists-explained-with-numpy-6fec26519aea
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/135504.html
標籤:其他
