AI基础整理

AI基本概念

一、算法复杂度

1. 归并排序

A=[3,4,1,6,7,2,5,9]  # 将A划分成两个数组B、C
B,C=[3,4,1,6],[7,2,5,9] # 总体时间复杂度=两个递归运算时间复杂度相加(递归时间复杂度):T(n)=T(n/2)+T(n/2)
B,C=[1,3,4,6],[2,5,7,9] # 再对B、C进行排序。
res=[1,2,3,4,5,6,7,9] # 再将B、C分别取出逐一对比大小,按照由小到大排序。每确定一个元素对比一次,n个元素需要对比n次。所以总的时间复杂度:T(n)=T(n/2)+T(n/2)+n
# 如果划分成3堆,在最后对比时候,每确定一个元素需要对比2次,T(n)=T(n/3)+T(n/3)+T(n/3)+2n

递归时间复杂度主定理分析 T ( n ) = a T ( n / b ) + f ( n ) T(n)=aT(n/b)+f(n) T(n)=aT(n/b)+f(n),可以从以下角度考虑:
( 1 ) i f n l o g b a > f ( n ) → 时 间 复 杂 度 = O ( n l o g b a ) ( 2 ) i f n l o g b a = f ( n ) 先 不 考 虑 l o g n 的 部 分 f ( n ) = n l o g b a l o g k n → 时 间 复 杂 度 = O ( n l o g b a l o g k + 1 n ) ( 3 ) i f n l o g b a < f ( n ) → 时 间 复 杂 度 = f ( n ) (1)if\quad n^{log_ba}>f(n)\quad →\quad 时间复杂度=O(n^{log_ba})\\ (2)if\quad n^{log_ba}=f(n)先不考虑logn的部分\quad f(n)=n^{log_ba}log^kn\quad →\quad 时间复杂度=O(n^{log_ba}log^{k+1}n)\\ (3)if\quad n^{log_ba}<f(n)\quad →\quad 时间复杂度=f(n)\\ (1)ifnlogba>f(n)=O(nlogba)(2)ifnlogba=f(n)lognf(n)=nlogbalogkn=O(nlogbalogk+1n)(3)ifnlogba<f(n)=f(n)
以上面归并排序为例: T ( n ) = 2 T ( n / 2 ) + n T(n)=2T(n/2)+n T(n)=2T(n/2)+n,其中a=2划分为2个子问题,b=2每个子问题数据为原来的一半,f(n)=n最后再遍历一遍进行合并。

n l o g b a = n l o g 2 2 = n = f ( n ) 并 且 f ( n ) = n = n ∗ l o g 0 n 所 以 k = 0 n^{log_ba}=n^{log_22}=n=f(n)\quad 并且f(n)=n=n*log^0n\quad 所以k=0 nlogba=nlog22=n=f(n)f(n)=n=nlog0nk=0

所以归并排序时间复杂度为 = O ( n l o g b a l o g k + 1 n ) = O ( n ∗ l o g n ) =O(n^{log_ba}log^{k+1}n)=O(n*logn) =O(nlogbalogk+1n)=O(nlogn)

2. 斐波那契数列时间复杂度

运用递归树的思想:因为递归会重复的计算树节点值,所以时间复杂度= O ( 2 n ) O(2^n) O(2n)

在这里插入图片描述

斐波那契空间复杂度:操作系统会进行上下文切换,最多只会用到n的内存空间,所以空间复杂度为O(n)。

在这里插入图片描述

3. 动态规划(DP)优化斐波拉契

递归是自顶向下求解,动态规划自底向上求解。动态规划DP核心是:将大问题转化为同类型小问题来求解,并存储子问题的解,避免重复计算子问题,最终通过子问题的解得到原问题的解。降低复杂度,目标仍然是全局最优解,相当于能看到全局最优解。

动态规划算法基本要素:最优子结构性质、重叠子问题。(1)最优子结构性质:问题的最优解包含着它的子问题的最优解。(2)重叠子问题:用递归算法自顶向下解时,每次产生的子问题并不总是新问题,有些问题被反复计算多次。

# 利用列表将前面的值存储下来,不用每次都去求一次前面两个值,减少了计算量,优化了时间复杂度。
# 时间复杂度为:O(n),空间复杂度为:O(n)
import numpy as np
def fib(n):
    fiblist=np.zeros(n)
    fiblist[0]=1
    fiblist[0]=1
    for i in range(2,n):
        fiblist[i]=fiblist[i-2]+fiblist[i-1]
    return fiblist[n-1]

# 时间复杂度为:O(n),空间复杂度为:O(1)
def fib(n):
    a,b=1,1
    c=0
    for i in range(2,n):
        c=a+b
        a,b=b,c
    return c

4. P和NPHard问题

在这里插入图片描述

任何一个问题根据时间复杂度的不同都能分成:指数级复杂度( O ( p n ) O(p^n) O(pn))、多项式复杂度两个大类( O ( n p ) O(n^p) O(np))。多项式复杂度问题是能够解决的问题(P问题),指数级复杂度问题是不可以解决的问题(NPHard问题)。对于指数级复杂度问题可以通过三个方法进行解决:(1)对于小型的问题,可以直接采用指数级复杂度方法进行求解。(2)运用Approximate Algorithm(近似算法)进行求解,但是不保证获得精确结果。(3)利用量子计算机进行求解。

Approximate Algorithm(近似算法)步骤:①指出近似算法。②指出算法时间复杂度。③给出近似算法最后解离我们想要的最优解的距离。

二、建模基础

选择模型就是确定目标函数,训练模型就是优化目标函数。

1. 模型分类

在这里插入图片描述

有监督模型:逻辑回归、朴素贝叶斯、SVM、随机森林、神经网络等。

无监督模型:K-means聚类、PCA降维、ICA降维、MF矩阵分解、LSA潜在语义分析、LDA主题模型等。

在这里插入图片描述

生成式模型(P(x,y)):生成模型就是生成样本。生成模型是根据山羊的特征首先学习出一个山羊特征模型,然后根据绵羊的特征学习出一个绵羊特征模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。

判别式模型(P(y|x)):判别模型是从历史数据中学习到区别模型,然后提取样本的特征通过区别模型来预测出这是山羊的概率、绵羊的概率。

判别式模型是根据一只羊的特征可以直接给出这只羊的概率(比如logistic regression,这概率大于0.5时则为正例,否则为反例),而生成式模型是要都试一试,最大的概率的那个就是最后结果。

四个样本如下:

样本1样本2样本3样本4
X0011
Y0001

生成模型:联合概率P(X,Y)

Y=0Y=1
X=0 1 2 \frac{1}{2} 210
X=1 1 4 \frac{1}{4} 41 1 4 \frac{1}{4} 41

判别模型:条件概率P(Y|X)

Y=0Y=1
X=010
X=1 1 2 \frac{1}{2} 21 1 2 \frac{1}{2} 21

2. 特征选择

Forward Stepwise

Forward Stepwise利用了贪心算法,得到的是局部最优解。生成一个空的最优特征集合,然后遍历每个特征,选出准确率最高的一个特征f2加入到最优特征集合中。再在f1的基础上,遍历剩下的特征,分别与特征集合里面的特征进行组合,选出准确率最高的组合f2f4,如果这个组合准确率高于f2单独的准确率,就加入最优特征集合中。当f2f4f1特征组合是剩下的特征中最优特征组合时,如果准确率低于前面f2f4的特征组合,就停止寻找。最优特征组合就是f2f4。
在这里插入图片描述

Backward Stepwise

跟fs相反的方向,先生成一个全集的最优特征集合计算准确率acc1,然后遍历每个特征分别删除后计算组合的准确率,选出准确率最高的一个特征组合,如果这个组合准确率高于acc1,那么这个组合就是最优特征组合,再进行循环筛选。直到删除后最优特征组合准确率低于前一轮准确率了,就停止循环,前一轮就是最优特征组合。

在这里插入图片描述

3. 目标函数

任何一个目标函数都能写成以下形式:在一定条件下的目标函数。
M i n i m i z e f 0 ( x ) s . t . f i ( x ) < = 0 , i = 1 , . . . k g i ( x ) < = 0 , j = 1 , . . . k Minimize\quad f_0(x)\\ s.t.\quad f_i(x)<=0,i={1,...k}\\ \quad g_i(x)<=0,j={1,...k}\\ Minimizef0(x)s.t.fi(x)<=0,i=1,...kgi(x)<=0,j=1,...k
在这里插入图片描述

模型和目标函数

模型是一个抽象的概率,将模型实例化后最后要给定目标函数,再将目标函数进行优化。

在这里插入图片描述

最大似然MLE

最大似然值只有在样本足够大的时候才成立,当样本数量很少的时候值会偏差很大。既然事情已经发生了,为什么不让这个出现的结果的可能性最大呢?这也就是最大似然估计的核心。

(1)极大似然估计中采样产生的样本需要满足一个重要假设,所有采样的样本都是独立同分布的;

(2)极大似然估计是在模型已定,参数未知的情况下,估计模型中的具体参数;

(3)极大似然估计的核心是让产生所采样的样本出现的概率最大。即利用已知的样本结果信息,反推具有最大可能导致这些样本结果出现的模型的参数值。

对于函数 P ( x ∣ θ ) P(x|\theta) P(xθ) 输入有两个:x表示某一个具体的样本数据, θ \theta θ表示模型的参数。如果 θ \theta θ是已知确定的,x是变量,这个函数叫做概率函数,它描述对于不同的样本点x出现概率是多少。如果x是已知确定的, θ \theta θ是变量,这个函数叫做似然函数,它描述对于不同的模型参数,出现x这个样本点的概率是多少。

一个罐子里面有黑白两种颜色的球,我们想知道罐中白球和黑球的比例。现在我们有放回的拿出一个球,记录球的颜色,用记录的球的颜色来估计罐中黑白球的比例。假如在前100次记录中,有70次是白球,请问白球所占的比例最有可能是多少?白球占比为70%,其背后的理论支撑就是最大似然函数。

相当于通过模型生成出来了样本 x 1 , x 2 , x 3 . . . x 100 x_1,x_2,x_3...x_{100} x1,x2,x3...x100,而我们要求得这个模型,就相当于求这个模型生成的这些样本的最大概率值。相当于在模型驱动下产生了样本,我们求得样本最大化概率来求得模型。表达式如下:
P ( 样 本 结 果 ∣ M o d e l ) = P ( x 1 , x 2 . . . x 100 ∣ M ) = P ( x 1 ∣ M ) P ( x 2 ∣ M ) . . . P ( x 100 ∣ M ) = p 70 ( 1 − p ) 30 P(样本结果|Model)= P(x_1,x_2...x_{100}|M)= P(x_1|M)P(x_2|M)...P(x_{100}|M)=p^{70}(1-p)^{30} P(Model)=P(x1,x2...x100M)=P(x1M)P(x2M)...P(x100M)=p70(1p)30
采取的方法是让这个样本结果出现的可能性最大,也就是使得 p 70 ( 1 − p ) 30 p^{70}(1-p)^{30} p70(1p)30值最大,那么我们就可以看成是p的方程,求导即可!

在这里插入图片描述

极大似然估计只有在样本值足够大时准确,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!**极大似然估计中采样需满足一个重要的假设,就是所有的采样都是独立同分布。**样本太多,无法得出分布的参数值,可以采样小样本后,利用极大似然估计获取假设中分布的参数值。

在这里插入图片描述

MLE与MAP关系

MAP适用于样本量少的时候,样本量大的时候用MLE。先验概率等同于加了一个正则项,正态分布的先验等同于L2正则,拉普拉斯的先验等同于L1正则。
M A P ( 后 验 概 率 估 计 ) = M L E ∗ P ( θ ) − − − − 》 P ( θ ) 为 先 验 概 率 MAP(后验概率估计)=MLE * P(θ)----》P(θ)为先验概率 MAP=MLEPθPθ
在这里插入图片描述

在这里插入图片描述

4. 优化目标种类识别

优化目标的种类有:

Least Squares Problem(最小二乘问题),Linear programming(LP线性规划问题),Quadratic Programming(QP二次规划问题),Semi-Definite Programming(SDP半正定规划),Integer programming(整数规划)。

先定义问题,将问题抽象为数学问题,然后将数学问题表示出来,判定数学问题类型,根据类型进行问题优化。
步 骤 如 下 : 问 题 — — 》 数 学 表 示 — — 》 类 型 — — 》 优 化 步骤如下:问题——》数学表示——》类型——》优化
1.smooth or non-smooth 2.convex or non-convex 3.continues or discrete 4.constraint or non-constraint

(1)(smooth or non-smooth)是否为平滑函数。(2)(convex or non-convex)是否能找到全局最优解(凸函数为全局最优,非凸函数为局部最优)。(3)(continues or discrete)定义域是连续函数问题还是离散(Integer)函数问题(连续的可以通过梯度求解,离散的通过转化为近似问题来求解,近似不能保证为全局最优解。求参数w一般为连续性向量,集合覆盖为离散问题)。(4)(constraint or non-constraint)除目标函数外是否有其他约束条件。

遇到离散定义域(Integer)问题可以将其转化为连续区间,然后进行区间映射来近似化求解。

在这里插入图片描述

凸函数与非凸函数

convex or non-convex:凸函数的前提是:定义域为凸集。凸函数、凹函数都能互相转化。

在这里插入图片描述

凸函数:定义域为凸集,并且函数定义域上任意取两点x、y,再两点之间的任意一点m,其f(m)一定小于等于以x,y为直线的方程g(m)的值。

在这里插入图片描述

函数的二阶导数值大于等于0,或者二阶求导后矩阵为半正定矩阵,则为凸函数。多个凸函数相加也为凸函数。

在这里插入图片描述

5. 优化算法

在这里插入图片描述

常见三种优化算法

(1)求极值法。(2)梯度下降法(一阶偏导数)。(3)牛顿法(二阶偏导数)。

在这里插入图片描述

梯度下降

凸优化问题:可以通过函数上任意连线上面的值都在函数内部,来判断是否是凸函数。凸函数能找到全局最优解,非凸函数可以找到局部最优解。
总 样 本 误 差 : l o s s = Σ ( y p r e d − y ) 2 2 = Σ ( w 0 + w 1 . x − y ) 2 2 总样本误差:loss =\frac{\Sigma(y_{pred} - y)^2}{2}= \frac{\Sigma(w_0 + w_1.x - y)^2}{2} loss=2Σ(ypredy)2=2Σ(w0+w1.xy)2
损失函数就是总样本误差关于模型参数的函数,目标函数通过求偏导后,就化简为预测值与真实值(已知)的差。再通过所有样本梯度下降的向量和进行参数更新(每个样本点都会产生一个梯度向量,最优的结果是所有梯度向量的和)。梯度下降用来更新参数,目标函数可以转化为含参数的目标函数,通过对各个参数求偏导来优化参数值。

在这里插入图片描述

w t = w t − 1 − 学 习 率 . 损 失 函 数 关 于 w 的 偏 导 数 w t = w t − 1 − η . ∂ f ( x ) ∂ w w_t=w_{t-1}-学习率.损失函数关于w的偏导数\\ w_t=w_{t-1}-\eta .\frac{\partial f(x) }{\partial w} wt=wt1.wwt=wt1η.wf(x)
在这里插入图片描述

梯度下降法求最优解:

在这里插入图片描述

Coordinate Descent

用于Lasso算法会收敛,效果较好。

在这里插入图片描述

拉格朗日条件处理

等号条件:对于有限制条件的优化,等号条件就直接将限制条件 λ ( x 2 + y 2 − 1 ) λ(x^2+y^2-1) λ(x2+y21)带入目标函数中,再计算极值。

在这里插入图片描述

不等号(小于等于0)条件:相当于条件换成了: λ h ( x ) = 0 , h ( x ) < = 0 λh(x)=0,h(x)<=0 λh(x)=0,h(x)<=0这个条件。

在这里插入图片描述

KKT条件

在等式条件与不等式条件中都有 λ > = 0 λ>=0 λ>=0,将等式与不等式条件都加到目标函数中,再形成三个新的约束条件,这三个条件合称KKT条件。

在这里插入图片描述

6. 正则项

正则可以用来减小参数值!!!过拟合的曲线对噪声点的容错率太低!!!

模型训练出来一个参数空间,最后模型会选择其中最优的参数组合作为模型参数。正则就是可以限制参数空间中选择参数时候的取值范围,从而选择值较小的参数。

我们要最小化目标函数,那么为了最小化这个新的代价函数,我们要让θ3和θ4尽可能小。因为,如果你在原有代价函数的基础上加上1000乘以θ3这一项 ,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时, 我们将使θ3 的值接近于0,同样θ4的值也接近于0,就像我们忽略了这两个值一样。如果我们做到这一点(θ3和θ4接近0),那么我们将得到一个近似的二次函数。
在这里插入图片描述

L1( ∣ ∣ w ∣ ∣ 1 ||w||_1 w1)与L2( ∣ ∣ w ∣ ∣ 2 2 ||w||_2^2 w22)范式的共同作用是使得w的值变得更小。L1会产生稀疏的解,可以用于选择最为重要的一部分变量特征(一小部分优秀的参数),将其余的参数变为0。L2会选择所有符合要求变量参数。有时候也可以将L1与L2一起使用。
L 1 范 式 : ∣ ∣ w ∣ ∣ 1 = ∣ w 1 ∣ + ∣ w 2 ∣ + ∣ w 3 ∣ . . . + ∣ w d ∣ L 2 范 式 : ∣ ∣ w ∣ ∣ 2 2 = w 1 2 + w 2 2 + w 3 2 . . . + w d 2 L_1范式:||w||_1=|w_1|+|w_2|+|w_3|...+|w_d|\\ L_2范式:||w||_2^2=w_1^2+w_2^2+w_3^2...+w_d^2\\ L1w1=w1+w2+w3...+wdL2w22=w12+w22+w32...+wd2
在这里插入图片描述

7. 原问题与对偶问题

转换后可以减少计算复杂度。有的原问题可能会很复杂,很难优化求解。当转换为对偶问题的时候,可能会很简单就能优化求解。对偶问题得出来的最优解可能只是原问题的次最优解。

在这里插入图片描述

8. 条件随机场(CRF)

有向图模型:类似于条件概率,在前面时间发生情况下后面发生的概率。HMM、贝叶斯网络。

无向图:要考虑前后双重影响,条件随机场(CRF)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值