那么机器学习到底是什么东东呢?是造一个机器人来学习吗,非也。按照李宏毅老师的说法,机器学习相当于找一个函数(looking for a Function)。
ML的一般步骤:
step1: Model(a set of functions)
第一步就是找个模型,也就是找一个函数/算法模板。线性回归的模型呢,就是一个线性的函数啦: y = wx+b (w和x为向量)
step2: Goodness of functionon(Loss function)
确定了模型的构造方法,下一步就是确定模型的具体参数。这一步通常会构建损失函数来衡量模型的好坏,线性回归用到的损失函数是均方误差,也就是经典的“最小二乘法”
step3: Pick the ‘best’ function
得到了损失函数,接着就是怎么求解了。也许你会直接背出公式,但对于计算机来说,采用梯度下降的方法可能更简单一些.
中心极限定理:
设随机变量X1,X2,…Xn,…独立同分布,并且具有有限的数学期望和方差:E(Xi)=μ,D(Xi)=σ^2(i=1,2…),则对任意x,分布函数
F n ( x ) = P { ∑ i = 1 n − n μ n σ ≤ x } F_{n}(x)=P\left\{\frac{\sum_{i=1}^{n}-n \mu}{\sqrt{n} \sigma} \leq x\right\} Fn(x)=P{nσ∑i=1n−nμ≤x}
满足: lim n → ∞ F n ( x ) = lim n → ∞ { ∑ i = 1 n X i − n μ n σ ≤ x } = 1 2 π ∫ − ∞ x e − t 2 2 d t = Φ ( x ) \lim _{n \rightarrow \infty} F_{n}(x)=\lim _{n \rightarrow \infty}\left\{\frac{\sum_{i=1}^{n} X_{i}-n \mu}{\sqrt{n} \sigma} \leq x\right\}=\frac{1}{\sqrt{2} \pi} \int_{-\infty}^{x} e^{-\frac{t^{2}}{2}} d t=\Phi(x) n→∞limFn(x)=n→∞lim{nσ∑i=1nXi−nμ≤x}=2π1∫−∞xe−2t2dt=Φ(x)
正态分布的概率密度函数:
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}} f(x)=2πσ1e−2σ2(x−μ)2
记作: X ∼ N ( μ , σ 2 ) X \sim N\left(\mu, \sigma^{2}\right) X∼N(μ,σ2)
当 μ = 0 , σ 2 = 1 \mu =0,\sigma^{2}=1 μ=0,σ2=1 时, 记作 : X ∼ N ( 0 , 1 ) X \sim N\left(0, 1\right) X∼N(0,1) 为标准正态分布函数 : Φ ( x ) \Phi(x) Φ(x)
极大似然估计:
极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。最大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。
求极大似然估计步骤:
1、写出似然函数(连续性):
L ( θ ∣ x 1 , x 2 , ⋯   , x n ) = f ( x 1 , x 2 , ⋯   , x n ∣ θ ) = ∏ f ( x i ∣ θ ) L\left(\theta | x_{1}, x_{2}, \cdots, x_{n}\right)=f\left(x_{1}, x_{2}, \cdots, x_{n} | \theta\right)=\prod f\left(x_{i} | \theta\right) L(θ∣x1,x2,⋯,xn)=f(x1,x2,⋯,xn∣θ)=∏f(xi∣θ)
2、取对数
ln L ( θ ∣ x 1 , … , x n ) = ∑ i = 1 n ln f ( x i ∣ θ ) \ln L\left(\theta | x_{1}, \ldots, x_{n}\right)=\sum_{i=1}^{n} \ln f\left(x_{i} | \theta\right) lnL(θ∣x1,…,xn)=i=1∑nlnf(xi∣θ)
3、求出使得对数似然函数取最大值的参数的值
让 ∂ ln L ( θ ∣ x 1 , … , x n ) ∂ θ j = 0 , j = 1 , 2 , … , k \frac{\partial \ln L(\theta| x_{1}, \ldots, x_{n})}{\partial \theta_{j}}=0, j=1,2, \ldots, k ∂θj∂lnL(θ∣x1,…,xn)=0,j=1,2,…,k解得: θ \theta θ
线性回归模型可以表示为:
1、 y = h θ ( x ) + ϵ y=h_{\theta}(x)+\epsilon y=hθ(x)+ϵ
2、 ϵ ( i ) ∼ N ( 0 , δ 2 ) , ϵ ( i ) \epsilon^{(i)} \sim N\left(0, \delta^{2}\right), \epsilon^{(i)} ϵ(i)∼N(0,δ2),ϵ(i)服从正态分布
即y由模型拟合以及随机扰动构成,而由中心极限定理,我们假设随机扰动ϵ服从均值为0方差为 δ 2 \delta^{2} δ2的正态分布。
由于中心极限定理和大数定理:
p ( y ( i ) ∣ y ( i ) ; θ ) = 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p\left(y^{(i)} | y^{(i)} ; \theta\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) p(y(i)∣y(i);θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
1、求得到极大似然函数:
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ y ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) \begin{array}{c}{L(\theta)=\prod_{i=1}^{m} p\left(y^{(i)} | y^{(i)} ; \theta\right)} \\{=\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right)}\end{array} L(θ)=∏i=1mp(y(i)∣y(i);θ)=∏i=1m2πσ1exp(−2σ2(y(i)−θTx(i))2)
2、取对数
log L ( θ ) = log ∏ i = 1 m 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = ∑ i = 1 m log 1 2 π σ exp ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = m log 1 2 π σ − 1 σ 2 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \log L(\theta)=\log \prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) =\sum_{i=1}^{m} \log \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) =m \log \frac{1}{\sqrt{2 \pi} \sigma}-\frac{1}{\sigma^{2}} \frac{1}{2} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} logL(θ)=logi=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑mlog2πσ1exp(−2σ2(y(i)−θTx(i))2)=mlog2πσ1−σ2121i=1∑m(y(i)−θTx(i))2
3、取最大值:
要取得上述函数的最大值,只能使得: 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{2} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} 21i=1∑m(y(i)−θTx(i))2
所以我们得到线性Loss function
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} J(θ)=21i=1∑m(y(i)−θTx(i))2
为了消除数据量的影响,改进线性损失函数为:
J ( θ ) = 1 2 m ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} J(θ)=2m1i=1∑m(y(i)−θTx(i))2
如果损失函数是凸函数(convex)的,梯度下降算法就一定能达到全局最优解。
损失函数在梯度下降的过程中,可能会下降到局部最优点,局部最优点为极小值,而并非全局最优的最小值
如果损失函数为凸函数时,梯度下降能达到全局最优
导数:
f ′ ( x 0 ) = lim Δ x → 0 Δ y Δ x = lim Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f^{\prime}\left(x_{0}\right)=\lim _{\Delta x \rightarrow 0} \frac{\Delta y}{\Delta x}=\lim _{\Delta x \rightarrow 0} \frac{f\left(x_{0}+\Delta x\right)-f\left(x_{0}\right)}{\Delta x} f′(x0)=Δx→0limΔxΔy=Δx→0limΔxf(x0+Δx)−f(x0)
泰勒展开:
f ( x ) = f ( x 0 ) 0 ! + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + … + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + R n ( x ) f(x)=\frac{f\left(x_{0}\right)}{0 !}+\frac{f^{\prime}\left(x_{0}\right)}{1 !}\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\ldots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+R_{n}(x) f(x)=0!f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+…+n!f(n)(x0)(x−x0)n+Rn(x)
常用的拉格朗日余项: R n ( x ) = f ( n + 1 ) [ x 0 + θ ( x − x 0 ) ] ( x − x 0 ) n + 1 ( n + 1 ) ! R_{n}(x)=f^{(n+1)}\left[x_{0}+\theta\left(x-x_{0}\right)\right] \frac{\left(x-x_{0}\right)^{n+1}}{(n+1) !} Rn(x)=f(n+1)[x0+θ(x−x0)](n+1)!(x−x0)n+1
梯度下降公式的推导:
假设函数: h θ ( x 0 ) = θ 0 + θ 1 x i , i = 1 , ⋯   , n h_{{\theta}}\left(x_{0}\right)=\theta_{0}+\theta_{1} x_{i}, i=1, \cdots, n hθ(x0)=θ0+θ1xi,i=1,⋯,n
代价函数: J ( θ ) = 1 2 n ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2n} \sum_{i=1}^{n}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} J(θ)=2n1∑i=1n(y(i)−θTx(i))2
梯度下降公式:
θ 0 : = θ 0 − α ⋅ ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \theta_{0} :=\theta_{0}-\alpha \cdot \frac{\partial}{\partial \theta_{0}} J\left(\theta_{0}, \theta_{1}\right) θ0:=θ0−α⋅∂θ0∂J(θ0,θ1)
θ 1 : = θ 1 − α ⋅ ∂ ∂ θ 1 ⋅ J ( θ 0 , θ ) \theta_{1} :=\theta_{1}-\alpha\cdot \frac{\partial}{\partial \theta_{1}} \cdot J\left(\theta_{0}, \theta\right) θ1:=θ1−α⋅∂θ1∂⋅J(θ0,θ)
梯度下降推导公式:
θ 0 = θ 0 − α ⋅ 1 n ∑ i = 1 n ( h 0 ( x i ) − y i ) \theta_{0}=\theta_{0}- \alpha\cdot \frac{1}{n} \sum_{i=1}^{n}\left(h_{0}\left(x_{i}\right)-y_{i}\right) θ0=θ0−α⋅n1i=1∑n(h0(xi)−yi)
θ 1 = θ 1 − α ⋅ 1 n ∑ i = 1 n x i ( h g ( x 2 ) − y i ) \theta_{1}=\theta_{1}-\alpha \cdot \frac{1}{n} \sum_{i=1}^{n} x_{i}\left(h_{g}\left(x_{2}\right)-y_{i}\right) θ1=θ1−α⋅n1i=1∑nxi(hg(x2)−yi)
def batchGradientDescent(x, y, theta, alpha, m, maxIterations):
xTrains = x.transpose()
for i in range(0, maxIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
# print loss
gradient = np.dot(xTrains, loss) / m
theta = theta - alpha * gradient
return theta
L0范数表示向量中非零元素的个数,也就是如果我们使用L0范数,即希望矩阵的大部分元素都是0. (矩阵是稀疏的)所以可以用于ML中做稀疏编码,特征选择。通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最优化问题是一个NP,hard问题,而且理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替。
L1范数表示向量中每个元素绝对值的和,
∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \|x\|_{1}=\sum_{i=1}^{n}\left|x_{i}\right| ∥x∥1=i=1∑n∣xi∣
L2范数表示欧氏距离:
∥ x ∥ 2 = ∑ i = 1 n x i 2 \|x\|_{2}=\sqrt{\sum_{i=1}^{n} x_{i}^{2}} ∥x∥2=i=1∑nxi2
正则化公式:
min f e F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \min _{f e \mathcal{F}} \frac{1}{N} \sum_{i=1}^{N} L\left(y_{i}, f\left(x_{i}\right)\right)+\lambda J(f) feFminN1i=1∑NL(yi,f(xi))+λJ(f)
其中,第1项是经验风险,第2项是正则化项, λ \lambda λ≥0为调整两者之间关系的系数
1范数:
L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ ∥ w ∥ 1 L(w)=\frac{1}{N} \sum_{i=1}^{N}\left(f\left(x_{i} ; w\right)-y_{i}\right)^{2}+\lambda\|w\|_{1} L(w)=N1i=1∑N(f(xi;w)−yi)2+λ∥w∥1
2范数:
L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ 2 ∥ w ∥ 2 L(w)=\frac{1}{N} \sum_{i=1}^{N}\left(f\left(x_{i} ; w\right)-y_{i}\right)^{2}+\frac{\lambda}{2}\|w\|_{2} L(w)=N1i=1∑N(f(xi;w)−yi)2+2λ∥w∥2
L0范数的最优化问题是一个NP,hard问题,而且理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替。
因为w通常是一个高维参数矢量,w几乎涵盖了所有参数,b只是众多参数的中的一个,这样加上b来做regularization的作用不大,也可以加,只是作用不大