让咱们以预测住房价格的例子开始:首先要使用一个数据集,数据集包含不一样房屋尺寸所售出的价格,根据数据集画出个人图表。比方说,若是你朋友的房子是 1250 平方尺大小,你要告诉他们这房子能卖多少钱。那么,你能够作的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你能够告诉你的朋友,他能以大约220000(美圆)左右的价格卖掉这个房子。这就是监督学习算法的一个例子。html
总结来讲,须要作的就是利用数据集中的数据,找出能够描述该数据集中输入和输出的关系的数学模型。在程序中咱们要首先设定这么一个函数h(假设函数)。算法
咱们将要用来描述这个回归问题的标记以下:微信
𝑚 ——表明训练集中实例的数量机器学习
𝑥 ——表明特征/输入变量函数
𝑦 ——表明目标变量/输出变量 学习
(𝑥, 𝑦) —— 表明训练集中的实例 spa
(𝑥(𝑖), 𝑦(𝑖)) ——表明第𝑖 个观察实例 3d
h ——表明学习算法的解决方案或假设函数(hypothesis) htm
对于只有一个输入的问题,咱们能够将h表达为:ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥。只含有一个特征/输入变量的问题叫作单变量线性回归问题。blog
由上节可知,问题的核心在于找到一种能够描述数据集中输入和输出的关系的数学模型,即求解假设函数ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥。求解假设函数要作的就是为该函数选择合适的参数(parameters)𝜃0 和 𝜃1。咱们选择的参数决定了咱们获得的直线相对于咱们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模偏差(modeling error)。
咱们的目标即是选择出可使得建模偏差的平方和可以最小的模型参数。 即便得代价函数最小。找到了最小的代价函数,就找到了最能准确表达输入和输出之间关系的数学模型。
对于代价函数J,咱们能够绘制出选择不一样的参数𝜃0 和 𝜃1时,J的等高线图。从图中能够看出,在三维空间中存在一个使得𝐽(𝜃0, 𝜃1)最小的点。
可是,绘出图形而后人工的方法来读出这些点的数值,找到最小的J,显然是个很麻烦的办法。所以须要找到一种算法,能够自动找到能使代价函数J最小化的参数𝜃0和𝜃1的值。梯度降低算法就是一种较好的选择。
梯度降低的思想:
批量梯度降低(batch gradient descent)算法的公式为:
其中𝑎是学习率(learning rate),它决定了咱们沿着能让代价函数降低程度最大的方向向下迈出的步子有多大。
值得注意的是:parameters:𝜃0, 𝜃1, . . . , 𝜃𝑛要同时更新。
梯度降低的算法以下:
描述:对𝜃赋值,使得𝐽(𝜃)按梯度降低最快方向进行,一直迭代下去,最终获得局部最小值。其中𝑎是学习率(learning rate),它决定了咱们沿着能让代价函数降低程度最大的方向向下迈出的步子有多大。
经过上图对梯度降低的过程进行理解:①若是函数处于降低趋势,则代价函数J的偏导数为负数,减去一个负数等于加上一个正数,那么𝜃的值就会变大,随着𝜃的变大,代价函数J逐渐减少,达到了下降J的目的;
②若是函数处于上升趋势,则代价函数J的偏导数为正数,减去一个正数,那么𝜃的值就会变小,随着𝜃的变小,代价函数J逐渐减少,一样也达到了下降J的目的。
再来看看学习率𝑎:①若𝑎过小,那么数据的挪动很是细致,一样也很是慢,须要不少步才能到达最低点。②若是𝑎太大,那么梯度降低法可能会越过最低点,甚至可能没法收敛,甚至发散。
将梯度降低应用在线性回归中,具体的程序实现为:
%单变量线性回归中的梯度降低 for iter = 1:num_iters theta = theta-alpha*(1/m)*X'*((theta'*X')'-y); %求解参数𝜃 J_history(iter) = computeCost(X, y, theta); %计算代价函数J end
以上,就是吴恩达机器学习课程第二章的主要内容。