機器學習(2)之正規方程組


機器學習(2)之正規方程組

上一章介紹了梯度下降算法的線性回歸,本章將介紹另外一種線性回歸,它是利用矩陣求導的方式來實現梯度下降算法一樣的效果。

1. 矩陣的求導

首先定義表示m×n的矩陣,那么對該矩陣進行求導可以用下式表示,可以看出求導后的矩陣仍然為m×n

這里要用到矩陣跡的特性,trace. 對於一個n階的方陣(n×n),它的跡(tr)為對角線元素之和:

1. 對於一個實數,它的跡即為它本身

tr a = a

2. 如果AB是一個方陣,那么

tr AB = tr BA

3. 由此可推導出 

trABC = trCAB = trBCA  

trABCD = trDABC = trCDAB = trBCDA 

4. 假設A 和 B為方陣,a為實數,那么又可以推導出以下的特性:

trA = trAT

tr(A + B) = trA + trB

tr aA = atrA 

5.對跡進行求導,具有以下特性:

2. Least squares revisited 

現在就可以利用1中矩陣求導的相關知識來重新求解線性回歸問題。

假設訓練樣本:

定義目標集合:

因為,所以

又因為,根據最小二乘規則,代價函數可以寫成:

對J(θ)進行求導:

上述推導使用了第1部分的特性。

miniminzes J(θ) 即 

 

3. 代碼實例 

python代碼實現

 1 # coding=utf-8
 2 #!/usr/bin/python
 3 
 4 '''
 5 Created on 2014年9月10日
 6  
 7 @author: Ryan C. F.
 8 
 9 '''
10 
11 import numpy
12 
13 #Training data set
14 #each element in x represents (x0,x1,x2)
15 #x = [(1,0.,3) , (1,1.,3) ,(1,2.,3), (1,3.,2) , (1,4.,4)]
16 #y[i] is the output of y = theta0 * x[0] + theta1 * x[1] +theta2 * x[2]
17 #y = [95.364,97.217205,75.195834,60.105519,49.342380]
18 
19 def linearRegression(X,Y):
20     A=numpy.dot(X.T,X)              #XT*X     X的轉置矩陣點乘X
21     Ai=A.I                          #(XT*X)-1 求逆
22     B=numpy.dot(Ai,X.T)             #(XT*X)-1 XT 點乘
23     C=numpy.dot(B,Y.T)              #((XT.X)-1)XT點乘Y
24     return C      
25 
26 if __name__ == "__main__":
27     X=numpy.matrix([[1,0.,3],
28                    [1,1.,3],
29                    [1,2.,3],
30                    [1,3.,2],
31                    [1,4.,4]]);
32     print X.transpose();
33     
34     Y=numpy.matrix([95.364,97.217205,75.195834,60.105519,49.342380]);
35     print Y;
36     
37     print numpy.dot(numpy.dot(numpy.dot(X.T,X).I,X.T),Y.T)
38     
39     print (linearRegression(X,Y))

輸出結果

 1 X:
 2 [[ 1.  0.  3.]
 3  [ 1.  1.  3.]
 4  [ 1.  2.  3.]
 5  [ 1.  3.  2.]
 6  [ 1.  4.  4.]]
 7 
 8 Y:
 9 [[ 95.364     97.217205  75.195834  60.105519  49.34238 ]]
10 
11 linear Regression result:
12 [[ 98.10408328]
13  [-13.02877437]
14  [  1.13281768]]

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM