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 将缩放后的向量转换回标准坐标系。

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

应用示例:二维变换

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

[ A = \begin{bmatrix} 2 & 1 \\1 & 2 \end{bmatrix} ]

特征值:λ₁ = 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
==============================================================================

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐