Spark MLlib 偽逆演算法
阿新 • • 發佈:2019-02-19
數學概念
1.矩陣的逆
定義:
設A是數域上的一個n階方陣,若在相同數域上存在另一個n階矩陣B,使得: AB=BA=I。 則我們稱B是A的逆矩陣,而A則被稱為可逆矩陣。
條件:
A是可逆矩陣的充分必要條件:A是非奇異矩陣(當
性質:
- 矩陣A可逆的充要條件是A的行列式不等於0。
- 可逆矩陣一定是方陣。
- 如果矩陣A是可逆的,A的逆矩陣是唯一的。
- 可逆矩陣也被稱為非奇異矩陣、滿秩矩陣。
- 兩個可逆矩陣的乘積依然可逆。
- 可逆矩陣的轉置矩陣也可逆。
- 矩陣可逆當且僅當它是滿秩矩陣。
求逆方法
伴隨矩陣法:
矩陣A 可逆,
初等變換法:
2.偽逆矩陣
定義:
偽逆矩陣又稱廣義逆,由於奇異矩陣或者非方陣不存在逆矩陣。
方法:
直接求解:
SVD分解:
S1.
S2.將
S3.
QR求解:
SparkSVD分解演算法
建立RowMatrix,檔案test.txt可以寫入:
1 2 6 4
5 3 8 2
4 9 5 4
3 7 9 4
程式碼:
val rdd = sc.textFile("file/test.txt" )
.map(_.split(' ')
.map(_.toDouble))
.map(line => Vectors.dense(line));
val rm = new RowMatrix(rdd);
val SVD = rm.computeSVD(2, computeU = true);
println(SVD);
參考文獻:
[1]. 數學概念
[2]. 求偽逆的三種方法
[3]. Spark MLlib機器學習實戰 王曉華著. 清華大學出版社