集成学习-机器学习数学基础笔记

高数线代概率论

高数

常用的梯度下降算法(gradient decent)不可缺少高数中梯度的概念:梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
gradf ( x , y ) = ∇ 𝑓 ( 𝑥 , 𝑦 ) = ∂ 𝑓 ∂ 𝑥 , ∂ 𝑓 ∂ 𝑦 = 𝑓 x ( 𝑥 , 𝑦 ) 𝑖 + 𝑓 y ( 𝑥 , 𝑦 ) 𝑗 \text{gradf}(x,y)=∇𝑓(𝑥,𝑦)={\frac{∂𝑓}{∂𝑥} ,\frac{∂𝑓}{∂𝑦}}=𝑓_x(𝑥,𝑦)𝑖+𝑓_y(𝑥,𝑦)𝑗 gradf(x,y)=f(x,y)=xf,yf=fx(x,y)i+fy(x,y)j
推广到多维空间就是Jacobian矩阵:
[ ∂ y 1 ∂ x 1 ⋯ ∂ y 1 ∂ x n ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ⋯ ∂ y m ∂ x n ] \begin{bmatrix} \frac{\partial y_1}{\partial x_1}&\cdots&\frac{\partial y_1}{\partial x_n}\\ \vdots&\ddots&\vdots\\ \frac{\partial y_m}{\partial x_1}&\cdots&\frac{\partial y_m}{\partial x_n} \end{bmatrix} x1y1x1ymxny1xnym
海森矩阵(Hessian matrix 或 Hessian)是二阶偏导的矩阵
[ ∂ 2 y ∂ x 1 2 ∂ 2 y ∂ x 1 x 2 ⋯ ∂ 2 y ∂ x 1 x n ∂ 2 y ∂ x 2 x 1 ∂ 2 y ∂ x 2 2 ⋯ ∂ 2 y ∂ x 2 x n ⋮ ⋮ ⋱ ⋮ ∂ 2 y ∂ x n x 1 ∂ 2 y ∂ x n x 2 ⋯ ∂ 2 y ∂ x n ] \begin{bmatrix} \frac{\partial ^{2} y}{\partial x_1^2}&\frac{\partial ^{2} y}{\partial x_1x_2}&\cdots&\frac{\partial^2 y}{\partial x_1x_n}\\ \frac{\partial ^{2} y}{\partial x_2x_1}&\frac{\partial ^{2} y}{\partial x_2^2}&\cdots&\frac{\partial^2 y}{\partial x_2x_n}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\partial^2 y}{\partial x_nx_1}&\frac{\partial^2 y}{\partial x_nx_2}&\cdots&\frac{\partial^2 y}{\partial x_n} \end{bmatrix} x122yx2x12yxnx12yx1x22yx222yxnx22yx1xn2yx2xn2yxn2y
由此衍生两种常用的用于求函数最小值的方法,不能保证求出精确解,但可以求出近似最优解或局部最优解

  • 梯度下降法
    梯度下降法就是沿着当前函数下降最快的方向寻找最小值,原理很简单:
    θ i = θ i − α ∂ ∂ θ i J ( θ 0 , θ 2 , . . . , θ n ) \theta_i=\theta_{i}-\alpha\frac{\partial}{\partial \theta_i}J(\theta_0,\theta_2,...,\theta_n) θi=θiαθiJ(θ0,θ2,...,θn)
  • 牛顿迭代法
    牛顿迭代法基于牛顿法求解函数零点的原理,将求函数最小值的问题转化成求函数一阶导数的零点的问题,原理如下:
    θ : = θ − α H − 1 ∇ θ J ( θ ) \theta:=\theta-\alpha H^{-1}\nabla_{\theta}J(\theta) θ:=θαH1θJ(θ)
    1.牛顿法:收敛速度很快。海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。
    缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。
    2.梯度下降法:越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。

概率论线代

概率论是常用工具,比较熟悉,不再赘述
线性代数:

  • 矩阵范数
    1-范数(也称为列范数):
    ∣ ∣ A ∣ ∣ 1 = max ⁡ 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ ||A||_1=\max_{1\le j \le n}\sum_{i=1}^n|a_{ij}| A1=1jnmaxi=1naij
    2-范数(也称为谱范数):
    ∣ ∣ A ∣ ∣ 2 = λ 1 ||A||_2=\sqrt{\lambda_1} A2=λ1
    λ 1 \lambda_1 λ1是矩阵 A A T AA^T AAT的最大特征值
    ∞ \infin -范数(也称为行范数):
    ∣ ∣ A ∣ ∣ 3 = max ⁡ 1 ≤ i ≤ n ∑ j = 1 n ∣ a i j ∣ ||A||_3=\max_{1\le i \le n}\sum_{j=1}^n|a_{ij}| A3=1inmaxj=1naij

随机过程

  • 随机过程:设T为 (−∞,+∞) 的子集,若对每个 𝑡∈𝑇 , 𝑋𝑡 是随机变量,则称随机变量的集合 {𝑋𝑡|𝑡∈𝑇} 是随机过程。当每个t都有一次观测,那么会形成一条曲线,则称这条曲线为一条轨道或一条轨迹。
  • 有限维分布:对于任何正整数m和T中互不相同的 t 1 , t 2 , . . . , t m t_1,t_2,...,t_m t1,t2,...,tm ,称 ( X t 1 , X t 2 , . . . X t m ) (X_{t_1},X_{t_2},...X_{t_m}) (Xt1,Xt2,...Xtm) 的联合分布为随机过程 { X t ∣ t ∈ T } \begin {Bmatrix}X_t|t \in T\end{Bmatrix} {XttT} 的一个有限维分布,称全体的有限维分布为该随机过程的概率分布。
  • 随机序列:如果时间集合T是整数,就是一个随机序列(时间序列),记作 X n X_n Xn

马尔可夫过程

马尔可夫链: 随机过程 { X n ∣ n = 0 , 1 , 2 , . . . } \begin {Bmatrix} X_n|n=0,1,2,... \end{Bmatrix} {Xnn=0,1,2,...}称为 Markov 链,若它只取有限或可 列个值(若不另外说明,以非负整数集 {0,1,2,⋯} 来表示),并且对任意的 𝑛⩾0 , 及任意状态 i , j , i 0 , i 1 , ⋯ , i n − 1 i,j,i_0,i_1,⋯,i_{n-1} i,j,i0,i1,,in1, 有
P { X n + 1 = j ∣ X n = i , X n − 1 = i n − 1 ⋯ , X 1 = i 1 , X 0 = i 0 } = P { X n + 1 = j ∣ X n = i } P\{X_{n+1}=j|X_n=i,X_{n-1}=i_{n-1}⋯,X_1=i_1,X_0=i_0\}=P\{X_{n+1}=j|X_n=i\} P{Xn+1=jXn=i,Xn1=in1,X1=i1,X0=i0}=P{Xn+1=jXn=i}
直观理解:已知现在 B = X n = i B={X_n=i} B=Xn=i,将来 A = X n + 1 = j A=X_{n+1}=j A=Xn+1=j与过去 𝐶 = 𝑋 𝑛 − 1 = i 𝑛 − 1 , . . . , 𝑋 0 = 𝑖 0 𝐶={𝑋𝑛−1=i_{𝑛−1},...,𝑋_0=𝑖_0} C=Xn1=in1,...,X0=i0 独立。
转移概率矩阵: 𝑃=(𝑝𝑖𝑗)=(𝑝𝑖𝑗)𝑖,𝑗∈𝐼

阶段一作业:

1) 为不同的a,b取值,绘制该函数的3D表面。请问 a,b取值对该表面形状有大的影响吗?
对不同a,b值组合,绘制图形

import math
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def Rosenbrock(x1,x2,a,b):
    return (a-x1)**2+b*(x2-x1*x1)**2
x1,x2=np.arange(-10,11,0.1),np.arange(-10,11,0.1)
x1_list,x2_list=np.meshgrid(x1,x2)
y=Rosenbrock(x1_list,x2_list,-1,-1)
a=np.arange(-2,3,1)
b=np.arange(-2,3,1)

fig=plt.figure(figsize=(50,50))
for i in range(len(a)):
    for j in range(len(b)):
        ax=fig.add_subplot(5,5,i*len(b)+j+1,projection='3d')
        y=Rosenbrock(x1_list,x2_list,a[i],b[j])
        ax.plot_surface(x1_list, x2_list, y, alpha=0.3, cmap='rainbow')

在这里插入图片描述
明显可以看出a的值对图形形状影响不大,b<0,b=0和b>0使图形分为3类
2) 编写一个算法来找到它的全局最小值及相应的最小解,并在3D图中标出。
用梯度下降算法求解最小值,因为b<0时函数有最大值无最小值,所以对另外两种情况求最小值

def df1(x_1,x_2,a_,b_):
    return 2*(x_1-a_)+4*x_1*b_*(x_1*x_1-x_2)
def df2(x_1,x_2,a_,b_):
    return 2*b_*(x_2-x_1*x_1)

learning_rate=0.01
x1,x2=np.arange(-10,11,0.1),np.arange(-10,11,0.1)
x1_list,x2_list=np.meshgrid(x1,x2)

x1_init=float(0.0)
x2_init=float(0.0)

maxloop=100
a=np.arange(-2,3,1)
b=np.arange(-2,3,1)
fig=plt.figure(figsize=(50,50))

for i in range(len(a)):
    for j in range(len(b)):
        ax=fig.add_subplot(5,5,i*len(b)+j+1,projection='3d')
        y=Rosenbrock(x1_list,x2_list,a[i],b[j])
        ax.plot_surface(x1_list, x2_list, y, alpha=0.3, cmap='rainbow')
        x1_=x1_init
        x2_=x2_init
        for k in range(maxloop):
            dx1=df1(x1_,x2_,a[i],b[j])
            dx2=df2(x1_,x2_,a[i],b[j])
            x1_=x1_-learning_rate*dx1
            x2_=x2_-learning_rate*dx2
        ax.scatter(x1_,x2_,Rosenbrock(x1_,x2_,a[i],b[j]),color='r',s=20)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值