[自然语言处理先修]二、机器学习基础

二、机器学习——基础

学习路线参考:

https://blog.51cto.com/u_15298598/3121189

https://github.com/Ailln/nlp-roadmap

https://juejin.cn/post/7113066539053482021

本节学习使用工具&阅读文章:

https://blog.csdn.net/weixin_47844457/article/details/124589190

https://blog.csdn.net/wuzhongqiang/article/details/115290221

https://www.cnblogs.com/listenfwind/p/10311496.html

https://www.cnblogs.com/pinard/p/6164214.html

https://www.jiqizhixin.com/graph/technologies/48f118d7-d49d-433a-a127-9912a40aaae6

https://www.cnblogs.com/liuxiaochong/p/14253397.html

1. 模型训练

原始数据经过处理一般会得到特征集合X与目标集合Y,作为输入数据集。

  1. 数据切分

    输入数据集被划分成三个个子集:训练集,验证集和测试集。

    • 训练集是用来训练模型的,给模型输入和对应的输出,让模型学习它们之间的关系;
    • 验证集是用来估计模型的训练水平。根据验证集的表现来选择最好的模型;
    • 测试集是训练好的模型在模拟的“新”输入数据上得到的输出。测试集只能在最后用于测试模型的性能,不能拿来训练。用于评价模型泛化能力的强弱;

    比较常见的划分数据集的方式是:50%用于训练,25%用于验证,25%用于测试。这个比例也可以根据数据集的大小和数据信噪比来改变。

  2. 模型评估

    1. 混淆矩阵

      预测结果 预测结果
      真实情况
      TP真正例 FN假反例
      FP假正例 TN真反例
    2. 准确率&精准率(查准率)&召回率(查全率)

      • 准确率:\(Acc = {TP+TN\over TP+FP+FN+TN}\),分类正确的样本数与总样本数之比
      • 精准率:\(P = {TP\over TP+FP}\),分类正确的正样本数与判定为正样本的样本数之比
      • 召回率:\(R = {TP\over TP+FN}\),分类正确的正样本数与真正的正样本数之比

      对所有的预测结果按照预测概率进行降序排序,给定一个阈值可以将预测结果划分为两部分,大于阈值的为正例,小于阈值的为负例。以精确率P为纵轴,以召回率R为横轴、可以画出P-R曲线,P-R曲线越靠近右上角性能越好。可以根据需要选取不同的阈值,如果重视精确率,可以设定一个较高的阈值,如果更重视召回率,可以设定一个较低的阈值,整条P-R曲线是通过将阈值从高到低移动而生成的

      • AP分数:P-R曲线下的面积,可以用于衡量模型性能,但通常不容易计算。
    3. F1值

      \(F1 = {2PR\over P+R}\),精准率和召回率的调和平均值。

    4. ROC

      • TPR(真正率):\(TPR = {TP\over TP+FN}\),判定为正例也是真正例的概率,即真正例中判为正例的概率(即召回率)
      • FPR(假正率):\(TPR = {FP\over FP+TN}\),判定为正例却不是真正例的概率,即真负例中判为正例的概率
      • ROC曲线:纵坐标为TPR,横坐标为FPR。ROC曲线越靠近左上角性能越好。绘制P-R曲线进行模型评估时需要设定阈值,阈值的大小会影响模型的泛化能力,绘制ROC曲线时可以不设定阈值。
      • AUC:ROC曲线下的面积。AUC计算主要与排序有关,它对排序敏感,而对预测分数没有P-R曲线敏感

2. 生成模型与判别模型

对于一个分类问题,X是特征,Y是类标记。

生成模型:学习一个联合概率分布\(P(x,y)\)。例如线性回归、支持向量机。

判别模型:学习一个条件概率分布\(P(y|x)\)。例如朴素贝叶斯模型。

3. 聚类

  1. KNN

    当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别,是有监督分类器。

  2. K-means

    对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大,是无监督分类器。

  3. Spectral(谱聚类)

    基于降维的聚类算法,它由两部分组成,第一部分是对数据进行一定的变换(降维),第二部分是使用传统的K-means算法对变换后的数据聚类。

    • 对于n*m的输入,降维方法:
      • 构建拉普拉斯矩阵L(通常以\(L=D-W\)得到,D为度矩阵,W为邻接矩阵)
      • 计算L的前m个特征向量,以这m个特征向量作为列组成n*m的矩阵U,其中每一行作为一个m维的样本
  4. Hierarchical(层次聚类)

    对数据集在不同层次进行划分,从而形成树形的聚类结构。

    计算任意两个数据之间的距离得到一个相似度矩阵,并把每一个单一的数据看作是一个聚类;查找相似度矩阵中距离最小的两个聚类,把他们聚合为一个新的聚类,然后根据这个新的聚类重新计算相似度矩阵,直到所有的数据都被归入到一个聚类中。

4. 支持向量机-SVM

以二分类问题为例,SVM算法用于寻找一条最优的决策边界,用于将两个类别的样本划分开,同时此边间距离两个类别的最近样本最远。理论上而言,SVM可以解决任何一种二分类问题。

  • 支持向量:与决策边界最近的向量。同一类点集中,支持向量可能不止一个。

5. 朴素贝叶斯-NBC

假设特征之间相互独立,在输入X的情况下,利用贝叶斯公式计算后验概率最大的输出Y。

  • 拉普拉斯平滑

6. 正则化

正则化(规则化)是指为解决过拟合而加入额外信息的过程。通常,正则项被加进目标函数中,又称为惩罚项。

  1. 范数:用来表征向量空间中的距离。\(||x||_p=(\sum^n_ix^p_i)^{1\over p}\)。p=1时,称为L1范数;p=2时,称为L2范数。

  2. L1正则

    在原本的损失函数基础上加上带权重的L1范数,即\(||x||=\sum^n_ix_i\),称为L1正则。从贝叶斯角度看,相当于加入了一个Laplacean先验。

    L1正则不能直接求导,因此不能使用常规的梯度下降进行优化。常用的优化方法有Lasso回归和坐标轴下降法。

    L1正则更容易得到稀疏解,产生一部分为0的权重,用于特征选择。

  3. L2正则

    在原本的损失函数基础上加上带权重的L2范数,即\(||x||_2=(\sum^n_ix_i^2)^{1\over2}\),称为L2正则。从贝叶斯角度看,相当于加入了一个Gaussian先验。

    L2正则更容易得到稠密解,产生小而分散的权重,鼓励让模型做决策的时候考虑更多的特征,而不是仅仅依赖强依赖某几个特征,可以增强模型的泛化能力,防止过拟合。

posted @ 2023-03-07 20:42  无机呱子  阅读(14)  评论(0编辑  收藏  举报