[Week 1] Machine-learning Notes 4 ——Linear Algebra(一些線性代數(shù)基礎(chǔ))

矩陣實(shí)際上是二維數(shù)組的另一個(gè)名字:而維度(Dimension of matrix)就是矩陣的行數(shù)乘以列數(shù)(一般分開說,比如4行2列,不說8維矩陣,只說4X2的矩陣,意思就是維度是4X2維,即4X2matrix,)。

但是矩陣在書寫上也有些不同,如下:


Paste_Image.png

也被稱為集合R4X2的元素(an element of the set R 4 by 2)

Paste_Image.png

A32代表的是第3行第2列的元素

向量(Vector)
向量是特殊的矩陣,一個(gè)向量是只有一列的矩陣(An n x 1 martix)
所以我們一般直接把向量的行數(shù)當(dāng)作維數(shù),一個(gè)4行的向量我們就稱他為一個(gè)4維(4 dimension)的向量。即

Paste_Image.png

另外,矩陣通常是使用大寫字母來表示的。

回顧一下矩陣乘法(矩陣跟向量相乘)

矩陣乘法

一個(gè)小技巧:(很重要,尤其是在寫程序的時(shí)候)
假設(shè)我有四間房子,這些房子有四種大小,現(xiàn)在有一個(gè)假設(shè)函數(shù)用于預(yù)測房子的價(jià)格,我需要計(jì)算四間房子的大小作為h(x)的大小,即預(yù)測的房價(jià)。

這里有一種簡單的方法:可以同時(shí)計(jì)算四間房子的預(yù)測價(jià)格,將它簡單地利用矩陣向量相乘的思想來計(jì)算,首先我要構(gòu)建一個(gè),如下所示的矩陣,第一列是是4個(gè)1, 然后把四個(gè)房子的大小寫在第二里,再構(gòu)造一個(gè)向量,一個(gè) 二維向量,即 40 和 0.25 這是預(yù)測函數(shù)的兩個(gè)系數(shù) θ0 和 θ1

接下來將構(gòu)造好的矩陣和向量相乘,就是預(yù)測的結(jié)果矩陣了

這個(gè)例子的一個(gè)小技巧是:當(dāng)你在程序中實(shí)現(xiàn)這個(gè)過程的時(shí)候,當(dāng)你有四間房子,你想使用自己的預(yù)測函數(shù),來預(yù)測房子的價(jià)格,完成這些工作,你可以用一行代碼搞定,我們后面會(huì)談到Octave 以及編程語言,你可以只寫一行代碼就完成整個(gè)過程,你可以這樣寫

 prediction = DataMatrix × Parameters

在程序中即為,(注意這里,這個(gè)h是一個(gè)矩陣,求得的是所有訓(xùn)練集的預(yù)測值,不同于Note 5中多元的那個(gè)h,那個(gè)h求得是一個(gè)訓(xùn)練集的預(yù)測值,這兩個(gè)h代表的數(shù)據(jù)是不一樣的,不要搞混了。)

matrix_h = matrix_X * matrix_Theta

分別是預(yù)測結(jié)果矩陣、數(shù)據(jù)矩陣、參數(shù)矩陣。
這就是一個(gè)矩陣向量乘法,如果你這么做了,這個(gè)變量prediction
只需要實(shí)現(xiàn)這一行代碼 如果你有一個(gè)做矩陣向量相乘的函數(shù)庫的話 ,右側(cè)的prediction變量就會(huì)形成 一個(gè)4維向量從而給你所有的預(yù)測價(jià)格。

小技巧

另一種計(jì)算方式是:
作為一種矩陣向量相乘的方式 實(shí)際上就是一種 通過for循環(huán) for 1 to 4 。
如果說你有一千間房子 就將是 for 1 to 1000 或者別的任何數(shù) 然后如果i等于的話 你必須有一個(gè)假設(shè)條件I相等,然后需要做比矩陣向量相乘多得多的工作,當(dāng)你有大量的房子的時(shí)候如果你試圖預(yù)測不只是四座,或許是一千座房子的時(shí)候:
事實(shí)證明,當(dāng)你使用矩陣向量相乘的方法時(shí),在計(jì)算機(jī)中,使用任何語言,不僅僅是Octave,還有C++,Java ,Python 等高級(jí)語言, 以及其他語言, 都可以很快的實(shí)現(xiàn)。

** 事實(shí)證明:像用矩陣相乘這樣子寫代碼,不僅可以簡化代碼,現(xiàn)在只需要寫一行代碼,而不是一堆代碼,而且還有一個(gè)微妙的好處,我們后面將會(huì)了解到,就是基于你所有的房子,這樣做計(jì)算效率將會(huì)更高,比你像for循環(huán)那樣,用代碼實(shí)現(xiàn)公式的方式效率將會(huì)高很多 。后面在討論向量化的時(shí)候,會(huì)詳細(xì)地討論這個(gè)問題,**

所以,通過這種方式計(jì)算預(yù)測值。 不僅代碼更加簡潔 而且效率更高

矩陣跟矩陣相乘

核心: 討論如何將兩個(gè)矩陣相乘是因?yàn)槲覀円脕碓诰€性回歸中解決參數(shù)計(jì)算的問題
由上一部分的小技巧的啟發(fā),我們可以把把θ0、θ1等參數(shù)都放在一起來計(jì)算,也就是說,我們不需要一個(gè)迭代的梯度下降算法,

更加實(shí)用的技巧:(在矩陣和矩陣的乘法中使用)

比方說,在這之前我們有四間房子預(yù)測其價(jià)格,但是現(xiàn)在我們有三個(gè)不同的競爭假設(shè)集,因此如果想要去把這三個(gè)競爭假設(shè)集用來適應(yīng)這4個(gè)房屋的數(shù)據(jù),我們可以使用這里的矩陣乘法來計(jì)算。

左邊是我通常使用的矩陣,這與我上個(gè)視頻 一樣,這些值就是 我的住房價(jià)格 我把這些值也放在左邊 那么 我要去做的就是,構(gòu)造另一個(gè)矩陣
這個(gè)矩陣的第一列 是-40 0.25 第二列是 (200.0.1) 以此類推。
那么 實(shí)際上通過 構(gòu)建這兩個(gè)矩陣 你就可以 快速的把這三個(gè)假設(shè)集 應(yīng)用到所有四個(gè) 房子的尺寸中來計(jì)算價(jià)格了。
所有的12種預(yù)測到的價(jià)格都是通過你的假設(shè)集以及你的四個(gè)房屋數(shù)據(jù)集得到的。所以一次矩陣乘法操作就使你做出了12種預(yù)測。


多矩陣相乘,更加實(shí)用的小技巧,當(dāng)有不止一個(gè)預(yù)測函數(shù)的時(shí)候使用

更好的是,事實(shí)證明:為了做到矩陣間的乘法,有很多很好的線性代數(shù)庫函數(shù),都是為了做到這一點(diǎn),為你實(shí)現(xiàn)矩陣乘法,當(dāng)下最流行的 編程語言中的前十名都有很棒的線性代數(shù)函數(shù)庫。這是很好的事情,我們能夠在高度優(yōu)化下,做到矩陣和矩陣間高效的乘法,包括采取了一些優(yōu)化處理的方式。如并行計(jì)算,如果你的電腦支持的話,當(dāng)你的計(jì)算機(jī)有多個(gè)調(diào)度或者多個(gè)處理器。一個(gè)處理器內(nèi)有時(shí)存在并行的計(jì)算我們稱之為**SIMD Parallelism **。

在計(jì)算機(jī)管理機(jī)制下。你應(yīng)該有非常不錯(cuò)的免費(fèi)類庫,可以用來做 效的矩陣間的乘法計(jì)算,因此你就能方便地計(jì)算有很多假設(shè)集時(shí)的預(yù)測數(shù)據(jù)。

特性

  1. 矩陣乘法不滿足交換律:很簡單,首先維度就會(huì)發(fā)生變化(但是當(dāng)一方是單位矩陣的時(shí)候是滿足交換律的)
  2. 滿足結(jié)合律。
  3. 對(duì)于一個(gè)矩陣I,如果1 x I = Z x I = I,那么這個(gè)I就是一個(gè)單位矩陣(Identity matrix)
    4. 如果A是一個(gè)方陣(mxm),那么它乘以它的逆,等于單位矩陣.(另外,如果一個(gè)方陣的元素都是0,那么它沒有逆矩陣),事實(shí)上,只有方陣才有逆矩陣
    Paste_Image.png
  4. 逆矩陣不存在的矩陣,一個(gè)專有名詞是退化矩陣或者奇異矩陣(singular或者degenerate)
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容