机器学习从零开始系列【第一话】线性回归与基础概念

有监督学习 (Supervised Learning)

  • Regression problem(回归问题)
  • Classicfication problem(分类问题)

Regression problem predict real-value output and Classicification predict discrete value ouput.

分类问题输出已知的离散预测值
回归问题输出实际的预测值

符号 (Notations)

( x i , y i ) (x^i,y^i) (xi,yi)
m = Number of training examples (样本总数量)
x = input features
y = output features

假设函数 (Hypothesis function)

Hypothesis function 是我们需要进行训练参数的那个函数。
比如:线性模型的假设函数
h ( θ ) = ∑ j = 0 n θ j x j h(\theta) = \sum_{j = 0} ^n \theta_j x_j h(θ)=j=0nθjxj
我们通过大量的数据训练,给n个 θ \theta θ 找出最合适的值 θ j \theta_j θj

损失函数 (Cost function)

我们到底怎样去给参数找出最合适的值呢?
想矫正需要做两件事情

  • 首先知道理想正确数值离我们目前数值的差距(这是损失函数能实现的)

  • 接着去靠近这个理想正确数值
    在这里插入图片描述
    损失函数的作用就是让我们知道目前离理想正确数值到底有多大差距。
    比较常见的一个损失函数(用在线性回归中)

  • 均方差损失函数 J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) J(\theta_0,\theta_1,\theta_2,...,\theta_n) J(θ0,θ1,θ2,...,θn)

J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) = 1 2 m ∑ i = 0 m ( y i − h θ ( x i ) ) 2 J(\theta_0,\theta_1,\theta_2,...,\theta_n) = \frac{1}{2m}\sum_{i = 0} ^m(y^i - h_\theta (x^i))^2 J(θ0,θ1,θ2,...,θn)=2m1i=0m(yihθ(xi))2

我们的目标就是寻找当 J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) J(\theta_0,\theta_1,\theta_2,...,\theta_n) J(θ0,θ1,θ2,...,θn) 取最小值(损失最小)的时候, θ 0 , θ 1 , θ 2 , . . . , θ n \theta_0,\theta_1,\theta_2,...,\theta_n θ0,θ1,θ2,...,θn的值是多少。

这就变成了一个求最值问题了。

我们利用两个变量的损失函数来示例: θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2
二元函数
等高线图:
等高线图
在同一条等高线上的J值(损失)都是一样的

寻找最小值方法之——梯度下降算法 (Gradient descent)

为了解决最小值问题,我们需要利用梯度下降算法来不断迭代寻找,也就是实现上文所说的:让变量们去靠近这个理想正确数值

梯度下降算法:

θ j : = θ j − α ∂ J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) ∂ θ j \theta_j:=\theta_j-\alpha\frac{\partial J(\theta_0,\theta_1,\theta_2,...,\theta_n)}{\partial\theta_j} θj:=θjαθjJ(θ0,θ1,θ2,...,θn)

for θ j \theta_j θj ​in range(0,n) #对每个变量进行一次梯度下降处理,中途仍然使用所在同一轮的参数值

α \alpha α = 学习率(Learning rate)决定每一步迈出的大小

∂ J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) ∂ θ j \frac{\partial J(\theta_0,\theta_1,\theta_2,...,\theta_n)}{\partial\theta_j} θjJ(θ0,θ1,θ2,...,θn) = 偏导项 决定每一步迈的方向

我们会在高处开始,经过不断的迭代逐渐走进深渊:

梯度下降

【偏导项】

思考:为什么偏导项能够决定每一次迭代的方向?
因为偏导项可以反映一个函数的增减性。
在这里插入图片描述

【学习率】

学习率则是每一步迭代的大小,他的选择的大小决定了惩罚程度的大小,不能过大也不能过小,如果学习率过小,会导致迭代缓慢,若果过大,会导致迭代震荡。
学习率的选择
补充:变量的初始值选择有可能会导致梯度下降走向不同的谷点。
变量的初始值选择有可能会导致梯度下降走向不同的谷点

【Batch】

Batch:Each step of gradient descent uses all the training examples
一个 Batch 指使用所有样本进行的一次迭代修正
我们在代码中所描述的batch_size,意思就是all training examples 的数量。
适当Batch Size使得梯度下降方向更加准确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值