机器学习之—单变量线性回归(吴恩达机器学习)

1.课程回顾

例1:房价和面积—预测

给定一组房价和房屋面积的数据集,通过机器学习算法(监督学习)来拟合画出一条线,根据这条线来对未知的数据进行判断。

在这里插入图片描述

假设机器通过这些房价数据学习得到一条房价—面积关系线,如上图中红线,那么如果你朋友的750英尺的房子,就可以通过这条红线来估算出房价,可以看出,大约是在150K美金左右。

这是一个典型的回归问题(Regression),因为结果(房价)可以是任意实数,且数据是可以连续的。

更进一步,由于变量1个—房屋尺寸,且预测结果(房价)和变量间的表达式可以用线性方程描述y = k*x + b。所有,此问题在机器学习中的术语叫做:单变量线性回归 Linear Regression with One Variable

例2:乳腺癌良性/恶性和尺寸关系

给定一组数据:乳腺癌肿瘤尺寸大小 和 癌症恶性/良性关系,通过机器学习,来预测一个给定肿瘤尺寸大小的患者,疾病是恶性还是良性的概率。

在这里插入图片描述

这个问题和之前的房价问题有些区别,虽然同样的,变量只有一个,即x轴上的尺寸大小,但是y轴的结果却只有两种:0和1,0表示肿瘤分类为良性;1表示分类为恶性。

所以,这是一个典型的分类问题(Classification)由于这里结果只有两种,所以此分类问题为二元分类问题

2.分类Classification

这两个例子都比较通俗易懂,新接触到的名词虽然有点多但也无需过度理解,两个例子中涉及到了监督学习中的分类问题回归问题。分类问题很好理解,机器预测值只有固定的几个类别,课程中为两种:0良性肿瘤 1 恶性肿瘤,所以称为二分类,除了二分类以外,其他的统称多分类。

3.回归Regression

与分类问题相对,回归问题的预测值范围比较自由,可以是连续的,且可取任意实数

4.监督学习Supervised Learning

课程中的两个问题:房价-房屋面积、肿瘤良恶—肿瘤尺寸都是属于监督学习。可以先简单理解,监督学习就是给定了数据集,且数据是规则明确的,有标签的。可以理解为结构化的、存储在数据库中的数据,喂给机器学习的情况,就叫做监督学习。

5.无监督学习Unsupervised Learning

与监督学习相对,如果给出的数据集、没有明确标签或者是非结构化的,那么这类数据的机器学习,就叫做无监督学习。除了监督学习、无监督学习、还有半监督学习的概念。具体可以看看知乎:https://www.zhihu.com/question/23194489/answer/25028661

6.假设hypothesis

我们以例1为例说明hypothesis(假设),这也涉及到后面的代价函数。
ℎ—hypothesis(假设),代表学习算法的解决方案或函数。
ℎ表示一个函数,实际上即模型的预测函数,在例1中,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 ℎ 根据输入的房屋面积值x 来得到此防房屋估价y,因此,ℎ是一个从x 到 y的映射,由于是单变量线性回归,映射关系可以简单表示为:等价于 :

在这里插入图片描述

举个栗子

很明显,在此例中,通过假设函数,我们可以对数据集以外的样本做预测,如果假设函数是:

在这里插入图片描述
那么如果你的朋友有一套面积为500(英尺)的房子,那么你就可以告诉他,你的房价预估在125K(12.5万)美金

误差

你那个朋友过来找到你了,说你的假设有误啊,我那套500英尺的房子,明明就是100K而已,你的数据集的数据还记录了我的房子呢......你这有误差啊?!
预测值125和真实值之间差距为25K,这里25K就被称为建模误差。

7.损失函数Cost Function

在这里插入图片描述

在这里插入图片描述

举个例子,此时我有三个样本点 (1,1),(2,2),(3,3),我怎么确定一个假设函数h,使得这条线能最优化地拟合所有数据,能更精确地预测下一个位置样本点的数据,譬如x = 5时 y的值?这里人眼很明显一看就能确定:

在这里插入图片描述
即可,不过对于机器,怎么去确定这个方程?

此时就需要用到代价函数,这里我们可以用回归问题通用的平方损失函数/平方代价函数,评估假设函数的误差水平。这里,例1的代价函数如下:

在这里插入图片描述

直白点意思就是:求每个样本点i 的误差的平方,累加求平均值,关于最后为什么是1/2m 而不是 1/m,这个其实主要是通用的约定,为了求导方便。

损失函数的意义就在于,通过求损失函数的值,我们可以评估预测函数的准确性,损失越小,则模型的预测越精准。所以,训练模型很多时候就是降低损失,找到损失函数的最小值,通过其最小值来产出最优的假设函数。

8.二元函数梯度下降Gradient Descent

图解

在这里插入图片描述

概述

目标

在这里插入图片描述

公式

这里,批量梯度下降(batch gradient descent)算法的公式为:

在这里插入图片描述

参数解释

在这里插入图片描述

正确的更新方式是:

第一步:

在这里插入图片描述
在这里插入图片描述

第二步:

在这里插入图片描述
在这里插入图片描述

其中第一步完成后才能进行第二步,且在每一步执行时,内部求temp1、temp2时也是并行的关系

学习率

在这里插入图片描述

学习率过小

在这里插入图片描述

学习率过大

在这里插入图片描述

9.梯度下降的线性回归

线性回归模型 梯度下降算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对损失函数/代价函数运用梯度下降方法,求导:

在这里插入图片描述


Tips:
j = 0时即对求导,
j = 1时即对求导

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
变量线性回归是一种用于预测数值型输出的机器学习算法。在Python中,可以使用NumPy库来实现变量线性回归。 以下是实现变量线性回归的步骤: 1. 导入NumPy库和matplotlib库(用于可视化)。 2. 读取数据集并将其存储在NumPy数组中。 3. 可以使用散点图来可视化数据集,以便更好地理解数据。 4. 初始化参数theta。 5. 定义代价函数computeCost,用于计算当前参数theta下的代价。 6. 定义梯度下降函数gradientDescent,用于更新参数theta。 7. 调用gradientDescent函数来更新参数theta,并计算代价。 8. 可以使用直线图来可视化拟合的线性模型。 以下是一个简变量线性回归的Python代码示例: ``` import numpy as np import matplotlib.pyplot as plt # 读取数据集 data = np.loadtxt('data.txt', delimiter=',') # 可视化数据集 plt.scatter(data[:, 0], data[:, 1], marker='x') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() # 初始化参数theta theta = np.zeros([2, 1]) # 定义代价函数 def computeCost(X, y, theta): m = len(y) J = 0 h = X.dot(theta) J = 1/(2*m)*np.sum(np.square(h-y)) return J # 定义梯度下降函数 def gradientDescent(X, y, theta, alpha, num_iters): m = len(y) J_history = np.zeros([num_iters, 1]) for i in range(num_iters): h = X.dot(theta) theta = theta - alpha*(1/m)*(X.T.dot(h-y)) J_history[i] = computeCost(X, y, theta) return theta, J_history # 添加一列全为1的特征 X = np.hstack((np.ones([len(data), 1]), data[:, 0].reshape(-1, 1))) y = data[:, 1].reshape(-1, 1) # 运行梯度下降算法 theta, J_history = gradientDescent(X, y, theta, 0.01, 1500) # 可视化拟合的线性模型 plt.scatter(data[:, 0], data[:, 1], marker='x') plt.plot(data[:, 0], X.dot(theta), color='r') plt.xlabel('Population of City in 10,000s') plt.ylabel('Profit in $10,000s') plt.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣椒种子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值