- F# for Machine Learning Essentials
- Sudipta Mukherjee
- 400字
- 2021-07-16 13:07:02
QR decomposition of a matrix
The general linear regression model calculation requires us to find the inverse of the matrix, which can be computationally expensive for bigger matrices. A decomposition scheme, such as QR and SVD, helps in that regard.
QR decomposition breaks a given matrix into two different matrices—Q and R, such that when these two are multiplied, the original matrix is found.

In the preceding image, X is an n x p matrix with n rows and p columns, R is an upper diagonal matrix, and Q is an n x n matrix given by:

Here, Q1 is the first p columns of Q and Q2 is the last n – p columns of Q.
Using the Math.Net method QR you can find QR factorization:

Just to prove the fact that you will get the original matrix back, you can multiply Q and R to see if you get the original matrix back:
let myMatAgain = qr.Q * qr.R
SVD of a matrix
SVD stands for Single Value Decomposition. In this a matrix, X is represented by three matrices (the definition of SVD is taken from Wikipedia).
Suppose M is an m × n matrix whose entries come from the field K, which is either the field of real numbers or the field of complex numbers. Then there exists a factorization, called a singular value decomposition of M, of the following form:

In this preceding formula, you will find the following:
- U is an m × m unitary matrix.
- Σ is an m × n diagonal matrix with non-negative real numbers on the diagonal.
- V* is an n × n unitary matrix over K (If K = R, unitary matrices are orthogonal matrices). V* is the conjugate transpose of the n × n unitary matrix, V.
The diagonal entries, σi, of Σ are known as the singular values of M. A common convention is to list singular values in descending order. In this case, the diagonal matrix, Σ, is uniquely determined by M (though not the matrices U and V).

Using Math.NET, you can find the decomposed values of SVD as shown next:

SVD and QR decomposition of a matrix allow you to perform the multiple linear regression without performing the inverse of the matrix. Math.NET offers a couple of methods called Svd and QR to perform multiple linear regression using these decomposition schemes.
- Mastering Entity Framework Core 2.0
- Learning RxJava
- RTC程序設計:實時音視頻權威指南
- Learning SQLite for iOS
- 精通API架構:設計、運維與演進
- 重學Java設計模式
- C語言程序設計案例精粹
- INSTANT Django 1.5 Application Development Starter
- 高級語言程序設計(C語言版):基于計算思維能力培養
- 軟件測試教程
- App Inventor創意趣味編程進階
- Web前端應用開發技術
- Learning JavaScript Data Structures and Algorithms(Second Edition)
- Vue.js 3應用開發與核心源碼解析
- 計算機系統解密:從理解計算機到編寫高效代碼