线性回归的cost function 2D图形分析法

原创 2018-03-04 17:52 阅读(136)次

在 线性回归的求解原理和cost function 一文中我们已经介绍了线性回归的cost function和他的作用。

本文我们从cost function 的图形上来发现J的最小值。


预测函数 :          

cost function :  

为了理解方便,我们假设θ0 =  0 ,这样预测函数为 h(x) = 0 + θ1x =   θ1x  ,   对于cost function的自变量就只有θ1和因变量y,也就可以用2D图像来表示。

把预测函数代入到cost function中,, 其中x(i) ,y(i) 都是已知的训练样本数据。所以J(θ1)的是关于θ1的函数,我们以θ1作为横坐标,J(θ1)作为纵坐标做图。

这里我们假设训练样本数据同上文:五个点分别是:(1,3) ,(2,4),(3  6.4),(4  7.8),(5 11),使用octave,

首先定义5个训练样本的数据

>> x = [1;2;3;4;5]
x =

   1
   2
   3
   4
   5
>> y = [3;4;6.4;7.8;11]
y =

    3.0000
    4.0000
    6.4000
    7.8000
   11.0000

定义θ的范围,这时候我们不知道应该多少才是最合适的范围,我们根据经验取-5到10的整数值来尝试,

注意这里的x,y,theta都是矩阵,用矩阵计算是避免我们分别把x,y,theta循环放入计算来得到数据,那需要循环很多次。

>> theta = [-5:1:10]
>>function J = computeCost(x, y, theta)
	m = length(y);
	J = 0;
	p = x * theta;
	errors = p - y;
	sqrerrors = errors.^2;
	J = 1/(2*m) * sum(sqrerrors);
	end

画图

>> plot(theta,computeCost(x,y,theta))
>> xlabel("theta1")
>> ylabel("J()")



 得到如下图:




从这张图我们可以看出cost function是一个抛物线图,而且刚好在我们选取的-5<θ1<10的范围内出现了最低点。而这一点的θ1取值就是最拟合训练数据的h(x)的θ1取值。θ1的取值在0和5之间,看起来很可能是2。而J看起来最低值是0。

我们缩放图形,再看一下

>> axis([1.5,2.5,0,1])



可以看出,cost function最小值其实不是0,而是在0.2左右,而θ是2 。

这时候我们已经可以从图形上确认出J 的最低值了。也就完成了文章开头的目的。但我们不可能每次都从图形来找结果,之后我们将介绍梯度下降法求解的方式。不过从本文的图形分析法还是能用来更容易的理解cost function。

详细内容见: 


线性回归的cost function 3D图形分析法

梯度下降 gradient descent


本站作品的版权皆为作品作者所有。

本站文字和内容为本站编辑或翻译,部分内容属本站原创,所以转载前务必通知本站并以超链接形式注明内容来自本站,否则以免带来不必要的麻烦。

本站内容欢迎分享,但拒绝有商业目的的转载!