[自然语言处理先修]二、机器学习基础
二、机器学习——基础
学习路线参考:
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,作为输入数据集。
-
数据切分
输入数据集被划分成三个个子集:训练集,验证集和测试集。
- 训练集是用来训练模型的,给模型输入和对应的输出,让模型学习它们之间的关系;
- 验证集是用来估计模型的训练水平。根据验证集的表现来选择最好的模型;
- 测试集是训练好的模型在模拟的“新”输入数据上得到的输出。测试集只能在最后用于测试模型的性能,不能拿来训练。用于评价模型泛化能力的强弱;
比较常见的划分数据集的方式是:50%用于训练,25%用于验证,25%用于测试。这个比例也可以根据数据集的大小和数据信噪比来改变。
-
模型评估
-
混淆矩阵
预测结果 预测结果 真实情况 真 假 真 TP真正例 FN假反例 假 FP假正例 TN真反例 -
准确率&精准率(查准率)&召回率(查全率)
- 准确率:\(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曲线下的面积,可以用于衡量模型性能,但通常不容易计算。
-
F1值
\(F1 = {2PR\over P+R}\),精准率和召回率的调和平均值。
-
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. 聚类
-
KNN
当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别,是有监督分类器。
-
K-means
对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大,是无监督分类器。
-
Spectral(谱聚类)
基于降维的聚类算法,它由两部分组成,第一部分是对数据进行一定的变换(降维),第二部分是使用传统的K-means算法对变换后的数据聚类。
- 对于n*m的输入,降维方法:
- 构建拉普拉斯矩阵L(通常以\(L=D-W\)得到,D为度矩阵,W为邻接矩阵)
- 计算L的前m个特征向量,以这m个特征向量作为列组成n*m的矩阵U,其中每一行作为一个m维的样本
- 对于n*m的输入,降维方法:
-
Hierarchical(层次聚类)
对数据集在不同层次进行划分,从而形成树形的聚类结构。
计算任意两个数据之间的距离得到一个相似度矩阵,并把每一个单一的数据看作是一个聚类;查找相似度矩阵中距离最小的两个聚类,把他们聚合为一个新的聚类,然后根据这个新的聚类重新计算相似度矩阵,直到所有的数据都被归入到一个聚类中。
4. 支持向量机-SVM
以二分类问题为例,SVM算法用于寻找一条最优的决策边界,用于将两个类别的样本划分开,同时此边间距离两个类别的最近样本最远。理论上而言,SVM可以解决任何一种二分类问题。
- 支持向量:与决策边界最近的向量。同一类点集中,支持向量可能不止一个。
5. 朴素贝叶斯-NBC
假设特征之间相互独立,在输入X的情况下,利用贝叶斯公式计算后验概率最大的输出Y。
- 拉普拉斯平滑
6. 正则化
正则化(规则化)是指为解决过拟合而加入额外信息的过程。通常,正则项被加进目标函数中,又称为惩罚项。
-
范数:用来表征向量空间中的距离。\(||x||_p=(\sum^n_ix^p_i)^{1\over p}\)。p=1时,称为L1范数;p=2时,称为L2范数。
-
L1正则
在原本的损失函数基础上加上带权重的L1范数,即\(||x||=\sum^n_ix_i\),称为L1正则。从贝叶斯角度看,相当于加入了一个Laplacean先验。
L1正则不能直接求导,因此不能使用常规的梯度下降进行优化。常用的优化方法有Lasso回归和坐标轴下降法。
L1正则更容易得到稀疏解,产生一部分为0的权重,用于特征选择。
-
L2正则
在原本的损失函数基础上加上带权重的L2范数,即\(||x||_2=(\sum^n_ix_i^2)^{1\over2}\),称为L2正则。从贝叶斯角度看,相当于加入了一个Gaussian先验。
L2正则更容易得到稠密解,产生小而分散的权重,鼓励让模型做决策的时候考虑更多的特征,而不是仅仅依赖强依赖某几个特征,可以增强模型的泛化能力,防止过拟合。