跳转至

机器学习

使用 Conformal Learning 预测企业信贷违约情况

本文使用 8 种经典的分类器,基于逆概率错误进行 Conformal Learning。

本文使用了 nonconformist 包,它在使用 Conformal Learning 进行分类预测时的核心步骤是:

  1. 在训练集上训练,这一步和常规的机器学习训练相同。
  2. 在校准集上校准,得到每个校准集样本属于每个标签的预测概率。
  3. 用一个 ErrFunc 衡量每个校准集样本的预测效果,作为 nonconformity score。最简单的是 InverseProbabilityErrFunc,它等于 1-predict_probability[true_y]。例如,某个样本的真实标签是 1,而模型预测出该样本属于标签 1 的概率是 0.9,则 ErrFunc 的值是 1-0.9=0.1。
  4. 在测试集上测试,得到每个测试集样本属于每个标签的预测概率。
  5. 用 ErrFunc 衡量每个测试集样本的预测效果。
  6. 对每一个测试集样本,计算:有多少比例的校准集样本的 nonconformity score 大于或等于当前测试样本的 nonconformity score,记为 p。p 越大,说明校准集中有非常多的样本比当前测试集样本的预测效果更差,说明第 j 个测试样本属于第 i 个类的可能性越大。
  7. 返回 p > significance。得到一个 N*2 的 True 和 False 组成的二维矩阵,每一行代表一个测试集样本,每一列代表是否将该标签纳入该样本的 prediction set 中。

image-20230606154615357

本项目的完整展示文件在这里

LightGBM 的用法

LightGBM 是一种基于决策树的梯度提升机(GBM)算法,它是一种快速、准确的机器学习算法,可以用于分类和回归问题。

本文介绍了 LightGBM 的使用方法和代码示例,并记录了自定义损失函数、打印训练过程、迭代次数参数等问题的解决方法。

LightGBM_logo_black_text

普通最小二乘估计的假设条件

  1. 因变量\(Y\)与自变量\(X\)之间是 线性 关系。
  2. 自变量之间 不存在多重共线性 ,即\(\left(X^{\prime} X\right)^{-1}\)存在。
  3. 误差项的 条件均值为\(0\) ,即\(E\left[u \mid X\right]=0\)
  4. 误差项之间 同方差且不相关 ,即\(E\left[u u^{\prime} \mid X\right]=\sigma^2 I_T\)
  5. \(\left(Y_t, X_t\right)\) 独立同分布
  6. 误差项是 正态分布 的。

假设 1-4 可推出:普通最小二乘估计是最小方差线性无偏估计(BLUE)。

假设 1-3 与假设 5 可推出:普通最小二乘估计具有一致性

假设 6 并不影响普通最小二乘估计是最小方差线性无偏估计,它是为了便于在有限样本下对回归系数进行统计检验。

普通最小二乘估计的方差与高斯 - 马尔可夫定理

本文计算了普通最小二乘估计的方差,并证明了高斯 - 马尔可夫定理。

普通最小二乘估计的方差:

\[ \begin{aligned} \operatorname{Var}(\underbrace{\beta^{O L S}}_ {(K+1) \times 1} \mid X)&=\sigma^2 \underbrace{\left(X^{\prime} X\right)^{-1}} _ {(K+1) \times (K+1)} \end{aligned} \]

高斯 - 马尔可夫定理(Gauss-Markov Theorem)

在线性回归模型中,如果线性模型满足高斯马尔可夫假定,则回归系数的最佳线性无偏估计(BLUE, Best Linear Unbiased Estimator)就是普通最小二乘法估计。

线性回归的普通最小二乘估计

ols

本文推导了线性回归的普通最小二乘估计量的矩阵形式,并在一元线性回归的情境下给出了求和形式的表达式。 $$ Y=X \widehat{\beta}+e $$

\[ \beta^{O L S}=\left(X^{\prime} X\right)^{-1} X^{\prime} Y \]

在一元线性回归的情境下:

\[ \beta_1^{O L S} =\frac{\overline{X Y}-\overline{X} * \overline{Y}}{\overline{X^2}-\left(\overline{X}\right)^2} \]
\[ \beta_0^{O L S} =\frac{\overline{X^2} * \overline{Y}-\overline{X} * \overline{X Y}}{\overline{X^2}-\left(\overline{X}\right)^2} \]

基于 XGBoost 的音乐流行度预测与推荐

本文基于音乐平台 Spotify 中的 30 万余条音乐数据与 10 万余条歌手数据,分析并构造了音乐流派、音乐语言等特征,与歌手热度、音乐发行时间等特征共同建模预测音乐流行度,使用 XGBoost 内置的特征重要性计算函数和 SHAP 值评估各特征的重要性及其对预测结果的影响方向与大小,并构建了基于内容余弦相似度的音乐推荐系统。

image-20230108215611641

L1、L2 正则化与贝叶斯先验

从贝叶斯统计的视角看,L1 正则化的 Lasso 回归和 L2 正则化的岭回归,分别相当于参数具有拉普拉斯先验和高斯先验。

image-20221231112601740

拉普拉斯分布的概率密度函数图像

当梯度下降陷入局部最优解

应用梯度下降法时,损失函数的值不再发生变化并不一定是找到了全局最优解,可能是陷入了局部最优解。为当前参数加上一个微小扰动,可以帮助跳出局部最优解。

image-20221229225045209

梯度下降陷入局部最优解

XGBoost

推导 XGBoost 中的结构分数以及理解它对于构建 XGBoost 模型的作用。转载一篇写得非常棒的介绍 XGBoost 的文章,真正的通俗易懂。

基于 EM 算法的多元高斯混合模型聚类及其 Python 实现

基于 EM 算法,推导多元高斯混合模型聚类的参数迭代公式,并使用 Python 对数据集进行聚类和各类别的参数求解。

在编写代码的过程中,遇到了一个非常简单但一直没发现的 Bug。

定义数组用all_density = np.array([0]*K),再用all_density[k] = k_density并不会让all_density的第k个元素改变。这是因为all_density是介于 0 到 1 之间的,而在定义all_density的时候没有指定数组内部的数据类型,默认是不支持小数的,因此赋值之后all_density的第k个元素仍然是 0。

解决方法:定义数组的时候一定要指定元素的数据类型,指定为dtype=flout64就可以存储高精度的浮点数。

result

梯度下降法及其 Python 实现

用数值近似法求函数在某点的梯度,用回溯线搜索法控制步长,应用梯度下降法求函数极值。

梯度下降的思想是:对某一初始值,不断改变这一初始值,且每一步都朝着能使函数值减小的方向改变,最终函数值几乎不再变小,我们就认为达到了极小值点。

迭代轨迹与等高线图