基本符号

输入变量(特征或输入特征) = x

输出变量(目标变量) = y

训练示例 = (x,y)

训练示例总数 = m

单个训练示例 = (x(i),y(i))或(xi,yi)

监督学习

x>f(模型)>y^y的估计值)x -> f(模型) -> ŷ(y的估计值)

线性回归模型

fw,b(x)=wx+b你可以认为它等同于f(x)=kx+bwb=模型参数(系数、权重)f_{w,b}(x)=wx+b你可以认为它等同于f(x)=kx+b\\ w、b=模型参数(系数、权重)

平方误差代价函数

在这之前这是篇很好的文章极值-最值 - yesandnoandperhaps

y^(i)=fw,b(x(i))fw,b(x(i))=wx(i)+bŷ^{(i)}= f_{w,b}(x^{(i)})\\ f_{w,b}(x^{(i)}) = wx^{(i)} + b

j(w,b)=i=1m(y^(i)y(i))22mJ(w,b)=i=1m(fw,b(x(i))y(i))22mmin(j(w,b))j(w,b)=\frac{\sum_{i=1}^m(\hat{y}^{(i)}- y^{(i)})^2}{2m}\\ J(w,b)=\frac{\sum_{i=1}^m(f_{w,b}(x^{(i)}) - y^{(i)})^2}{2m}\\ min(j(w,b))

b=0时

fw(x)=wxJ(w)=i=1m(fw(x(i))y(i))22m目标:求min(j(w))f_w(x)=wx\\ J(w)=\frac{\sum_{i=1}^m(f_{w}(x^{(i)}) - y^{(i)})^2}{2m}\\ 目标:求min(j(w))

成本函数可视化

很显然:J(w,b)在三维空间中若将它省略J可得到一个二维平面图,显然by轴,wx很显然:J(w,b)在三维空间中\\ 若将它省略J可得到一个二维平面图,显然b是y轴,w是x轴

梯度下降

w,b的基础值设为0α=学习率将w,b的基础值设为0\\ \alpha = 学习率\\

梯度下降算法{w=wαJ(w,b)wb=bαJ(w,b)b梯度下降算法 \begin{cases} w = w-\alpha\frac{\partial J(w,b)}{\partial w}\\ b = b-\alpha\frac{\partial J(w,b)}{\partial b} \end{cases}\\

实时更新的梯度下降算法{tmpw=wαJ(w,b)ww=tmpwtmpb=bαJ(w,b)bb=tmpb实时更新的梯度下降算法 \begin{cases} tmp_w = w-\alpha\frac{\partial J(w,b)}{\partial w}\\ w = tmp_w\\ tmp_b = b-\alpha\frac{\partial J(w,b)}{\partial b}\\ b = tmp_b \end{cases}\\

将以上合并

第一步

求出J(w,b)w,J(w,b)b求出\frac{\partial J(w,b)}{\partial w},\frac{\partial J(w,b)}{\partial b}\\

得:i=1m(fw,b(x(i))y(i))x(i)m,i=1m(fw,b(x(i))y(i))m得:\frac{\sum_{i=1}^m(f_{w,b}(x^{(i)}) - y^{(i)})x^{(i)}}{m},\frac{\sum_{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)})}{m}

第二步

w=wαi=1m(fw,b(x(i))y(i))x(i)mw = w-\frac{\alpha\sum_{i=1}^m(f_{w,b}(x^{(i)}) - y^{(i)})x^{(i)}}{m}\\

b=bαi=1m(fw,b(x(i))y(i))mb = b-\frac{\alpha\sum_{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)})}{m}

总结步骤:梯度下降->平方误差代价函数->线性回归

一些符号

xj=jthfeature(特征)n=number of feature(特征总数)x(i)=features of ith training example(训练集)xj(i)=value of feature j in iih training example(训练集的第几个值)x_j = j^{th}feature(特征)\\ n = number\ of\ feature(特征总数)\\ \vec{x}^{(i)}= features\ of\ i^{th}\ training\ example (训练集)\\ x^{(i)}_j= value\ of\ feature\ j\ in\ i^{ih}\ training\ example(训练集的第几个值)

多元线性回归

如果有n个特征,即可以得到如下:fw,b(x)=w1x1+w2x2++wnxn+b进一步即可得到:fw,b(x)=wTx+b或表示为:fw,b(x)=wx+b   Without vectorization(未向量化):fw,b(x)=j=1nwjxj+bvectorization(向量化):fw,b(x)=wx+b如果有n个特征,即可以得到如下:\\ f_{w,b}(x)=w_{1}x_{1}+w_{2}x_{2}+…+w_nx_n+b\\ 进一步即可得到:f_{\textbf{w},b}(\textbf{x})=\textbf{w}^T\textbf{x}+b\\ 或表示为:f_{\vec{w},b}(\vec{x}) = \vec{w}·\vec{x}+b\\ \ \ \ \\ Without \ vectorization (未向量化):f_{\vec{w},b}(\vec{x})=\sum_{j=1}^nw_jx_j+b\\ vectorization(向量化):f_{\vec{w},b}(\vec{x}) = \vec{w}·\vec{x}+b\\

Without vectorization代码示例

f = 0
for j in range(0,n):
f = f+w[j]*x[j]
f=f+b

vectorization 代码示例

f = np.dot(w,x)+b
多元线性回归-成本函数

J(w,b)J(\vec{w},b)

多元线性回归-梯度下降

{wj=wjαJ(w,b)wjb=bαJ(w,b)b\begin{cases} w_j = w_j-\alpha\frac{\partial J(\vec{w},b)}{\partial w_j}\\ b = b-\alpha\frac{\partial J(\vec{w},b)}{\partial b} \end{cases}\\

{j=nwn=wnαi=1m(fw,b(x(i))y(i))x1(i)mb=bαi=1m(fw,b(x(i))y(i))msimultaneously update(同时更新)wj(for j=1,,n)and b\begin{cases} j = n\\ w_n = w_n-\frac{\alpha\sum_{i=1}^m(f_{\vec{w},b}(\vec{x}^{(i)}) - y^{(i)})x^{(i)}_1}{m}\\ b = b-\frac{\alpha\sum_{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)})}{m}\\ simultaneously\ update(同时更新)\\ w_j(for\ j=1,…,n)and\ b \end{cases}\\

其它方法

Normal equation正规方程

它只适用与线性回归中

特征缩放

yx1zμ=训练集x1的平均值σ=标准差(1):使用最大值进行:x1,scaled=x1zyzx1,scaled1(2):使用mean normalization(归一化)进行:x1=x1μ1zyyμ1zyx1zμ1zy(3):使用Zscore normalization(标准化)进行:x1=x1μ1σ1yμ1σx1zμ1σy\leq x_1\leq z\\ \mu = 训练集x_1的平均值\\ \sigma = 标准差\\ (1):使用最大值进行:\\ x_{1,scaled} = \frac{x_1}{z}\\ \frac{y}{z}\leq x_{1,scaled}\leq 1\\ (2):使用mean\ normalization(归一化)进行:\\ x_1 = \frac{x_1-\mu_1}{z-y}\\ \frac{y-\mu_1}{z-y}\leq x_1 \leq \frac{z-\mu_1}{z-y}\\ (3):使用Z-score\ normalization(标准化)进行:\\ x_1=\frac{x_1-\mu_1}{\sigma_1}\\ \frac{y-\mu_1}{\sigma}\leq x_1 \leq \frac{z-\mu_1}{\sigma}\\

检测梯度下降是否收敛

设置一个ϵ等于一个较小的值,例如0.001,当ϵJ(w,b)时通常认为它经收敛了设置一个\epsilon等于一个较小的值,例如0.001,当\epsilon\leq J(\vec{w},b)时通常认为它经收敛了

学习率的选择

α=学习率你可以从较大的值开始,逐步调试,必须要说明的是:设置过大,会导致易损失值爆炸、易振荡设置过小,会导致易过拟合、收敛速度很慢通常建议在0.010.001逐步测试\alpha = 学习率\\ 你可以从较大的值开始,逐步调试,必须要说明的是:\\ 设置过大,会导致易损失值爆炸、易振荡\\ 设置过小,会导致易过拟合、收敛速度很慢\\ 通常建议在0.01\sim0.001逐步测试

更好的办法,请参看Leslie N. Smith在2015年发表的论文[Cyclical Learning Rates for Training Neural Networks]

特征工程

它可以让模型更加准确

例:

预测一个长方体的的价格假设它的价格与长x1,x2,x3有关显然可以得到:fw,b(x)=w1x1+w2x2+w3x3+b观察到它们的关系得到:长方体体积x4=x1x2x3长方体底面积x5=x1x2故得到:fw,b(x)=w1x1+w2x2+w3x3+w4x4+w5x5+b预测一个长方体的的价格\\ 假设它的价格与长x_1,宽x_2,高x_3有关\\ 显然可以得到:\\ f_{\vec{w},b}(\vec{x}) = w_1x_1+w_2x_2+w_3x_3+b\\ 观察到它们的关系得到:\\ 长方体体积x_4=x_1x_2x_3\\长方体底面积x_5=x_1x_2\\ 故得到:f_{\vec{w},b}(\vec{x}) = w_1x_1+w_2x_2+w_3x_3+w_4x_4+w_5x_5+b\\

多项式回归

拟合非线性函数

例:

若数据近似二次函数,即得此模型:

fw,b(x)=w1x+w2x2+bf_{\vec{w},b}(x) = w_1x+w_2x^2+b

Motivations

这是一种分类方法

线性回归 -> 定义分类位置 -> 完成

**缺陷:**数据复杂时,分类位置定义不完善时,会导致例如将好的数据分类至坏的

逻辑回归

它将输出0到1之间的数

g(z)=11+ez0<g(z)<1线性回归:z=wx+b将它们合并:fw,b(x)=g(wx+b)=11+e(wx+b)g(z)= \frac{1}{1+e^{-z}}\\ 0<g(z)<1\\ 线性回归: z =\vec{w}\cdot \vec{x}+b\\ 将它们合并:\\f_{\vec{w},b}(\vec{x})=g(\vec{w}\cdot \vec{x}+b)=\frac{1}{1+e^{-(\vec{w}\cdot \vec{x}+b)}}

决策边界

它可以用于预测逻辑回归

z=wx+b=0z =\vec{w}\cdot \vec{x}+b = 0