AI基础0-人工智能的数学基础

📅 2026/7/5 14:44:16 👁️ 阅读次数 📝 编程学习
AI基础0-人工智能的数学基础

https://www.bilibili.com/video/BV1cz421B7NY

参考代码:https://github.com/GenTang/regression2chatgpt/tree/zh/

学习一下这套课

数学基础

矩阵

这部分主要需要注意一下的就是特征值和特征向量了,单看定义肯定是十分不利于理解的,但是从几何角度就很好理解了

矩阵可以看作是对向量空间进行线性变换的工具。特征值和特征向量揭示了在这种变换下某些向量的特殊性质。在矩阵变换中,特征向量是指那些在变换后方向保持不变的向量(可能反向)。这些向量仅被拉伸或压缩,而不会被旋转。

假设 v 是矩阵 A 的特征向量,则变换后 Av 与 v 共线。

特征值 λ 表示特征向量在变换中被拉伸或压缩的比例因子。若 λ > 1,向量被拉长;若 0 < λ < 1,向量被压缩;若 λ < 0,向量方向反转。

假设说明:

矩阵的特征值分解 A = PDP⁻¹(其中 P 是特征向量矩阵,D 是对角特征值矩阵)揭示了变换的几何本质:

P⁻¹ 将向量转换到由特征向量定义的坐标系。

D 在新坐标系中对每个基向量进行缩放(特征值决定缩放比例)。

P 将缩放后的向量转换回标准坐标系。

这种分解表明,任何线性变换都可以看作是在特征向量方向上的纯缩放变换的组合。

应用示例:二维变换

考虑二维空间中的矩阵变换:

特征值:λ₁ = 3, λ₂ = 1

对应特征向量:v₁ = [1, 1]ᵀ, v₂ = [-1, 1]ᵀ

变换的几何意义:

沿 v₁ 方向拉伸3倍。

沿 v₂ 方向保持不变。

其他向量会被拉伸并旋转,最终方向由这两个作用的组合决定。

特殊情况的几何表现:

当特征值为复数时,变换包含旋转成分;多重特征值可能对应不完全的特征向量集,此时变换包含剪切成分;零特征值对应的特征向量被压缩到原点(变换的核空间)。

概率

这部分王木头的课挺好;

https://www.bilibili.com/video/BV1vv4y1B71

假设性检验

假设性检验的一般步骤包括确定假设、选择检验统计量、计算统计量、做出决策等。

一般步骤 提出假设:

原假设( H 0 ): 通常表示无效应或无差异的假设,例如“实验组和对照组没有显著差异”。

备择假设( H 1 ): 研究者希望证实的假设,例如“实验组和对照组有显著差异” 。

确定显著性水平: 通常选择 α = 0.05 或 0.01 ,表示犯第一类错误(拒真错误)的最大允许概率 。

选择检验统计量: 根据数据类型和检验目的选择适当的统计量,如 z 统计量(总体方差已知时)或 t 统计量(小样本且方差未知时) 。

计算样本统计量: 将实际观测数据代入统计量计算公式 。

确定临界值: 根据显著性水平和统计量的抽样分布(如标准正态分布、 t 分布)确定拒绝域的边界值 。

做出决策: 比较计算得到的统计量与临界值。如果统计量落在拒绝域内,则拒绝原假设 H 0 ;

极大似然估计

用极大似然估计设计损失函数要比其他损失使用的频次更多,理解也复杂一些;

假定抛硬币十次结果为3/7开,那么我们可以回过头来假定抛硬币正反的概率p,在这个概率下计算发生3-7这个结果的发生概率,就可以得到一个计算结果,用来衡量在假定p下事实发生的概率;

即我们假定抛硬币正的概率为p,那么发生这个3/7结果的概率就可以归纳成一个十个概率相乘(十次抛硬币为图中对应既定结果)的公式;

进一步,对于任意1次抛正面概率为p硬币,在抛出前,结果为x=1(即正面)的概率可表示为[p],结果为x=0(反面)的概率为[(1-p)];

落地后为x面,这件事发生的概率是[p^x]*[(1-p)^(1-x)];

抛n次,落地后为x1,x2,x3...的概率就是累乘[p^x]*[(1-p)^(1-x)];

那么同样地,对于任意一次模型的判断,在和标签答案对照前,其判断输入对应的输出结果x=1的概率为y,x=0的概率为1-y;

对照标签答案后为x,这件事发生的概率是[y^x]*[(1-y)^(1-x)];

测试模型n次,输出结果为正确答案x1,x2,x3...的概率就是:L=累乘[y^x]*[(1-y)^(1-x)];

那么L越大,模型输出结果正确的概率就越大,那么L就可以作为模型的损失函数,在优化一下方便计算,这便是极大似然估计对应的损失函数:

微积分

公修课不说了

贝叶斯定理

通俗说就是通过已知的y发生条件下x发生的条件概率计算x发生的情况下y发生的条件概率

即,在比赛场次和爆典次数明确的情况下,通过各场比赛我们可以轻松计算出edg赢下比赛的场次中康康爆典的概率,那么已知赛中康康再次爆典,就可以大胆猜测这场比赛赢下的概率,从而决定和朋友父子赌注。

简单代码

https://www.bilibili.com/video/BV1Y64y1Q7hi

数据读取

最简单的数据生成与读取

import numpy as np np.random.seed(1531) x = list(range(10, 29)) #生成[10,29)这个左开右闭区间中的19整数的随机序列 x = np.array(x) #转换成numpy格式的数组 print(x) e=np.random.randn(19) #在标准正态分布随机19个浮点数,默认返回格式为numpy数组 print(e) y=e+x #奇怪的是,浮点数和整数可以直接相加 print(y) #数组之间可以直接相加,默认为对应位置依次相加

模块化一下:

def generate_data(): """ 随机生成数据 """ # 规定随机数生成的种子 np.random.seed(4889) # Python2和Python3的range并不兼容,所以使用list(range(10, 29)) x = np.array([10] + list(range(10, 29))) error = np.round(np.random.randn(20), 2) #np.round( ,2)表示保留小数点后两位 y = x + error return pd.DataFrame({"x": x, "y": y}) #dataFrame用于返回一个类数据库或者说类excel格式的数据列表,引号里为索引名,后为数据列 myData=generate_data() print(myData) x=myData["x"] y=myData["y"] print(y) #也可以通过索引名称取出数据

可视化与保存

def visualize_data(data): """ 数据可视化 """ # 创建一个图形框,在里面只画一幅图 fig = plt.figure(figsize=(6, 6), dpi=80) ax = fig.add_subplot(111) #111表示展示框内一行一列画1幅图 # 设置坐标轴 ax.set_xlabel("$x$") ax.set_xticks(range(10, 31, 5)) #设置刻度:10开始31结束,间隔为5 ax.set_ylabel("$y$") ax.set_yticks(range(10, 31, 5)) # 画点图,点的颜色为b,blue蓝色 ax.scatter(data.x, data.y, color="b", label="$y = x + \epsilon$") plt.legend(shadow=True) # 展示上面所画的图片。图片将阻断程序的运行,直至所有的图片被关闭 # 在Python shell里面,可以设置参数"block=False",使阻断失效。 plt.show() visualize_data(myData) myData.to_csv("./test",index=False)

两个回归想跳过记录代码了,练练就跳过吧

回归

scikit-learn用着更简单呀,但是输出可能没state库那么专业

OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.005 Model: OLS Adj. R-squared: -0.050 Method: Least Squares F-statistic: 0.09171 Date: Fri, 08 Dec 2023 Prob (F-statistic): 0.765 Time: 10:39:38 Log-Likelihood: -27.982 No. Observations: 20 AIC: 59.96 Df Residuals: 18 BIC: 61.96 Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ x -0.0243 0.080 -0.303 0.765 -0.193 0.144 z 0.7873 0.445 1.768 0.094 -0.148 1.723 ============================================================================== Omnibus: 0.939 Durbin-Watson: 2.375 Prob(Omnibus): 0.625 Jarque-Bera (JB): 0.886 Skew: 0.338 Prob(JB): 0.642 Kurtosis: 2.221 Cond. No. 11.0 ==============================================================================

评价指标

真实1真实0
预测 1True Positive(TP)真阳性False Positive(FP)假阳性
预测 0False Negative(FN)假阴性True Negative(TN)真阴性

1、查准率(预测正确率)和查全率(召回率)

查准:在预测值为正的样本上,真实值为正的比率

查全:在真实值为正的样本上,被预测为正的比率

2、F1分

考虑极端情况:预测值全为正,必然能使查全率最高,所以评价要综合1中的两个指标

故定义F1指标:

以两者的调和平均数来评价模型。

在特定条件下可校准f1,提供偏向权重。

3、roc曲线

f1并未覆盖混淆矩阵中预测值与真实值都为0的情况,故提出roc指标

先定义:

正阳性(等价于召回率,正样本的正确率,预测收益):TPR=TP/(TP+FN)

伪阳性(负样本上的错误率,预测代价):FPR=FP/(FP+TN)

roc在不同分类阈值下,模型的真正例率(True Positive Rate, TPR)与假正例率(False Positive Rate, FPR)之间的权衡关系。

越贴近TPR的曲线效果越好,越靠近(0,1),意味着正确的概率越大,错误的概率也小。

4.AUC

AUC是ROC曲线下的面积,用于量化模型的整体性能,即模型越来越大胆猜测时,失误率提升的越慢:

  • AUC值范围在0.5到1之间
  • AUC=0.5表示模型没有区分能力(等同于随机猜测)
  • AUC=1表示模型完美分类
  • 通常AUC>0.8认为模型表现良好