第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Machine Learning(吴恩达) 学习笔记(一)

Machine Learning(吴恩达) 学习笔记(一)

时间:2023-11-29 03:22:12

相关推荐

Machine Learning(吴恩达) 学习笔记(一)

Machine Learning(吴恩达) 学习笔记(一)

1.什么是机器学习?2.监督学习3.无监督学习4.单变量线性回归4.1代价函数4.2 梯度下降5.代码回顾

最近在听吴恩达老师的ML网课,作为一个即将入学的研一菜鸟,我觉得有必要将一些自认为比较重要的知识点记录下来,同时我还找到了对应的练习题以及对应的代码,每一次分享的学习笔记都会对关键代码进行一个review。

本人才疏学浅,不足之处请多指正!

1.什么是机器学习?

卡内基梅隆大学Tom Mitchell教授提出了如下定义:

A computer programm is said to learn from experience E with respect to some task T and some performance P, if its performance on T, as measured by P, improves with experince E.

读一下就会发现这段话十分押韵。

2.监督学习

监督学习就是通过对已有的带标志(label)的数据集(data set)进行学习,从而能够对无标记数据进行标志的预测。

上图是一个监督学习的模型,假设我们要通过已知的房屋的大小(长、宽、高等)信息来预测房屋的价格,可以用学习算法通过训练集数据的训练找到这样的一个预测函数hhh,达到预测的目的。

3.无监督学习

无监督学习就是通过对不带标志的数据集的学习,从而能够对数据进行分类,找到数据的结构

4.单变量线性回归

回归:根据之前的数据预测出一个准确的输出值

如果将预测函数hhh设置为一个单变量的线性方程如:

hθ(x)=θ0+θ1x(1)h_{\theta}(x)=\theta_0+\theta_1x\tag{1}hθ​(x)=θ0​+θ1​x(1)

这样就变成了单变量线性回归问题

4.1代价函数

选好了模型之后,对于单变量线性回归,我们需要找到一组最理想的参数θ0\theta_0θ0​和θ1\theta_1θ1​来让模型的预测结果达到最精确。为此我们用代价函数来评估当前参数下模型的性能。

代价函数可以有多种选择,其中一种为模型预测值与真实值的差值,差值越小,代表预测结果越好。代价函数JJJ表示如下:

J(θ0,θ1)=12m∑i=1M(hθ(x(i))−y(i))2(2)J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^M(h_\theta(x^{(i)})-y^{(i)})^2\tag{2}J(θ0​,θ1​)=2m1​i=1∑M​(hθ​(x(i))−y(i))2(2)

于是我们可以得到如下的无约束优化问题:

minimizeθ0,θ1J(θ0,θ1)(3)\mathop{minimize}\limits_{\theta_0,\theta_1} J(\theta_0,\theta_1) \tag{3}θ0​,θ1​minimize​J(θ0​,θ1​)(3)

4.2 梯度下降

梯度下降法是解决这类问题的常用算法,其主要思想就是从初始的参数开始,不断改变参数以使得函数值不断变小,其找到的最小值被称为局部最优值(local minimum),对于凸问题,其局部最优值即为全局最优值(global minimum)。针对问题(3)的梯度下降法的具体表示为:

Gradient Decent Algorithm:

repeatuntillconvergence{θj:=θj−α∂∂θjJ(θ0,θ1)(forj=0andj=1)}(4)repeat\ untill\ convergence\ \{\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad (for\ j=0\ and\ j=1)\} \tag{4}repeatuntillconvergence{θj​:=θj​−α∂θj​∂​J(θ0​,θ1​)(forj=0andj=1)}(4)

其中α\alphaα是学习率(learning rate)。我们可以简单地将整个流程理解为不停地沿着与梯度相反的方向“走一步”,这个步长由α\alphaα决定,α\alphaα越大步长越长。合理地选择α\alphaα,经过多次迭代后就能够找到最优解

5.代码回顾

用机器学习算法去解决实际问题的过程大致可以分为六个步骤:

1、根据需要选取合适的模型

2、获取数据

3、选择评价标准并设计代价函数

4、选择一个合适的解法

5、训练模型

6、检验模型

假设我们要预测一家餐厅的年收益与餐厅附近人口数量的关系,并且选择了单变量线性回归模型(由公式(1)给出)。

接下来应该去获取各个餐厅的收益以及附近的人口数量

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltpath = 'ex1data1.txt'data = pd.read_csv(path, header=None, names=['Population', 'Profit'])data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))plt.show()

在这里,与之相应的数据事先存放在了ex1data1.txt文件中并且被提取出来,进而得到了data这样的一个DataFrame类。接着我们将数据画出来得到如下结果

接着我们选择最小二乘法最为评判标准(由公式(2)给出),定义代价函数。

def computeCost(X, y, theta):inner = np.power(((X * theta.T) - y), 2)return np.sum(inner) / (2 * len(X))

接着再用gradient desent的解法迭代地使代价函数收敛,这部分代码太长,于是就以空函数体的形式给出。

def gradientDescent(X, y, theta, alpha, iters):return theta, cost

其中X代表人口数量,y代表年收益,theta是与X相对应的权重,alpha代表学习率,iters代表迭代的数量。最后两个参数可以根据用户需要来设置。该函数返回经过iters次迭代后的theta值与cost值。

这可以看做是选择解法与训练模型一起完成的过程,得到了使cost最小(非严格)的theta之后,带回公式(1)就能够得到训练后的模型。

最后,要想检验模型,必须要有在训练集之外的测试集数据,在这个练习中并没有这些数据,所以我们只能看到模型的拟合程度(cost),而不能看到泛化程度。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。