码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习(2)之正规方程组

时间:2019-11-29 15:44:48      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:mic   block   cli   back   rev   log   click   部分   梯度下降   

另外一种线性回归,它是利用矩阵求导的方式来实现梯度下降算法一样的效果。

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]]
技术图片

 

http://www.cnblogs.com/rcfeng/

机器学习(2)之正规方程组

标签:mic   block   cli   back   rev   log   click   部分   梯度下降   

原文地址:https://www.cnblogs.com/bind/p/11957972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!