1、人工智能
人工智能(Artificial Intelligence)是一门广泛涉及多学科的领域,通过创建能够实现智能行为的算法或软件系统,来表现出与人类的智能行为相似的特性。
2、机器学习
2.1 机器学习定义
机器学习(Machine Learning)是计算机在没有显式编程的情况下,通过对数据进行分析、学习,具备预测的能力,即从经验中(过去)学习,去应对新情况(未来)。等同于通过统计和推理,找到一个能够匹配特定输入与预期输出的函数
2.2 机器学习分类
- 监督学习
- 无监督学习
- 半监督学习
2.2.1 监督学习(最常用)
利用有标签的训练数据得到一个模型,然后使用这个模型对新样本进行预测。目标在于构建一个从输入到输出的映射。对于训练数据,输入信号和输出信号往往成对出现,因此训练集通常表示为T={(x1,y1),(x2,y2),...(xm,ym)} 。x为输入变量,也叫特征,y为输出变量或目标变量。 m是它的上标,用来表示第几个训练例子,不是下标,下标表示的是第几个特征
2.2.2 非监督学习
获取没有标签的数据(即只有x,没有y)并尝试将他们自动分组到集群中
2.2.3 半监督学习
半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性。
2.3 机器学习的四类问题
- 回归
- 分类
- 聚类
- 降维
2.3.1 回归问题
回归方法是一种对数值型连续随机变量进行预测和建模的监督学习算法。使用案例一般包括房价预测、股票走势或测试成绩等连续变化的案例。即对于特定的训练集而言,找到一个函数可以较好的拟合已知数据X和Y的关系,并可以较好地预测未知数据。y-hat
2.3.2 分类问题
分类方法是一种对离散型随机变量建模或预测的监督学习算法。使用案例包括邮件过滤、金融欺诈和预测雇员异动等输出为类别的任务。许多回归算法都有与其相对应的分类算法,分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值。(即通常结果类型只有有限个,而不是像函数那样,x不同,就y不同,会有无限个)。例如判断一个肿块是否是肿瘤,判断一封邮件是否是垃圾邮件。
2.3.3聚类问题
聚类是一种无监督学习任务,该算法基于数据的内部结构寻找观察样本的自然族群(即集群)
2.3.4 降维问题
降维可以识别并删除损害机器学习模型性能或对准确性没有帮助的特征,降低算法的计算开销。
2.4 机器学习数据集划分
- 训练集
- 验证集
- 测试集
2.4.1 训练集
用于模型拟合的数据样本。 类比学生上课
2.4.2 验证集
是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。通常在模型迭代训练时,用以验证当前模型泛化能力(准确率,召回率等),以决定是否停止继续训练。 类比学生写作业,会多次使用,不断调参。
2.4.3 测试集
用来评估模最终模型的泛化能力。测试集不参与任何模型训练和调优过程,其目的是衡量模型在未知数据上的表现。类比学生考试,仅仅最后一次使用。
2.5 机器学习中的过拟合与欠拟合
- 过拟合:模型过于复杂,过于拟合了训练数据,但对新数据的泛化能力差。
- 欠拟合:模型过于简单,无法捕捉数据中的复杂模式,导致训练误差和测试误差都较高。
- 解决欠拟合:多细致训练几轮
- 解决过拟合:通过降维或权重衰减 有意识地让某些权值接近于0,从而抛弃某些特征的训练方法,叫作权重衰减(weight decay),它在某种程度上避免了过拟合。
2.6 机器学习模型评估
我们将模型的实际预测输出与样本的真实输出之间的差异称误差。模型在训练集上产生的误差叫做训练误差,在测试集上产生的误差叫做测试误差,在新样本上产生的误差叫做泛化误差。
显然,我们希望得到泛化误差小的模型,但是新样本无法事先得到,所以我们只能模拟这个过程。通常,我们能做的就是,把所能拿到的数据一分为二,一部分用作训练,一部分用作测试,由于用作测试的数据,不会参与到训练中,所以可当做是新样本。用测试误差模拟泛化误差。随着训练的增加,训练误差会越来越小,但是测试误差不一定会变小,因为可能存在过拟合现象,所以就需要找到一个平衡点。我们的最终目标是选出一个对训练数据有较好拟合并对新样本有较好泛化能力的模型。
2.6.1 评估方法
对于一个包含m个样本的数据集D={(x1,y1),...,(xm,ym)},怎么将其分成测试集和训练集?以下介绍几个方法
2.6.1.1 留出法
直接将数据集拆分成两个互斥的合集,一个作为训练集S,另一个是测试集T,D=S∪T,S∩T=∅。在S上训练出模型后,用T来评估其测试误差,要注意取样时要均匀,尽可能保证数据分布的一致性。
主要步骤:
- 将原始数据集分为两个互斥合集,一个训练集,一个测试集
- 用训练集训练模型
- 测试集测试模型,计算性能指标,如准确率、精确率、召回率等
- 根据评估结果对模型进行调整和优化
- 重复3-5,直到模型性能达到满意水平
2.6.1.2 交叉验证法
简言之,就是进行多次train_test_split划分。每次划分时,在不同的数据集上进行训练、测试评估,从而得出一个评价结果。 10折交叉验证举例:
主要步骤:
- 将原始数据集分为k个部分,其中k-1个部分用作训练,剩余一个部分用作测试
- 用k-1个部分进行训练
- 拿剩下那个部分进行测试,计算模型各项性能指标
- 重复2-3步,直到所有部分都被当做了一次测试集。
- 将所有的测试结果进行平均,得到模型的最终性能指标。
- 根据最终性能指标,对模型进行调整和优化。
- 重复2-6步,直到模型性能达到满意水平
优点:交叉验证通过多次划分,大大降低了这种由一次随机划分带来的偶然性,同时通过多次划分,多次训练,模型也能遇到各种各样的数据,从而提高其泛化能力;
2.6.1.3 自助法
它通过从原始数据集中有放回地随机抽取样本来构建新数据集进行训练和测试,每次抽样可能会抽到重复样本,新数据集的大小与原始数据集相同时会有一些数据不会被抽取到。这些没有出现在新数据集中的样本被用作测试集,而出现在新数据集中的样本则被用作训练集。
主要步骤
- 从原始数据集中随机选择n个样本构成一个新的数据集。
- 使用新的数据集训练模型。
- 使用测试集进行测试,计算性能指标
- 重复1-3多次,得到每个性能指标的平均值和标准偏差。
- 根据平均值和标准偏差,进行模型的调整和优化
- 重复1-5,直到模型具有满意的性能指标
自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。
2.6.2 性能指标
2.6.2.1 二分类的混淆矩阵:查准率Precision、查全率Recall、f1
二值分类器是机器学习领域中应用最广泛的分类器之一,我们可以根据真实类别和预测类别的不同组合,将样本分为四类,构建一个二分类的混淆矩阵。
我们把样本实际为负类,但被模型预测为正类的错误称为误报(也称第Ⅰ类错误);把样本实际为正类,但被模型预测为负类的错误称为漏报(也称第Ⅱ类错误)。并且,TP+FP+TN+FN=样本总数。单纯用准确率来刻画分类算法的性能,不够严谨。
一般来说,查准率P高时,查全率(召回率)往往偏低;反之,查全率高时,查准率往往偏低。 举例来说,在历史上,有这么一句狠话:“宁可错杀一千,不可放过一人”。这里我们不去追寻这句话的含义,单纯从机器学习的角度来看,它追求的就是查全率,为了查全,不惜错杀,这时查准率势必不高。
为了兼顾查准率P和查全率T,人们还提出了另一个衡量标准—F1分数(实际是P和R的调和平均数)
不同应用对查准率和查全率的重视程度不同,因此F1分数并不是对P和R的简单平均。例如,在商品推荐系统中,为了尽可能少地打搅用户,提升用户体验,往往希望检测出来的商品信息尽可能准确,这就要求查准率高。而在逃犯检索系统中,往往希望尽可能少地漏掉逃犯,此时查全率更重要。为了有所倾向,F1分数更通用的表达形式Fβ如下:
2.6.2.2 P-R曲线
在分类时,我们往往需要模型对预测结果进行排序,将正例概率大的放在前面,正例概率小的放在后面。(因为模型仅仅会输出一个概率,而无法斩钉截铁地说他是正例,或不是正例) 在这种情况下,我们可以给定分类阈值(临界值),大于该值则是正类样本,小于该值则是负类样本。同时计算这种情况下的查全率和查准率。通过不断变化分类阈值,可以得到一组查全率与查准率的数据。 以查全率为横轴,查准率为纵轴,临界值多时,可以画出一条P-R曲线。
P-R 曲线展示了模型在不同分类阈值下的 精确率Precision和召回率Recall之间的关系。实际使用时可以根据需求选择合适的阈值。
当对多个分类算法进行比较时,如果算法1的P-R曲线完全“外包围”算法2的P-R曲线,那么处于外侧的算法1有着更高的查准率和查全率(双高),这说明算法1比算法2有着更好的分类性能。 更一般的情况是,算法之间的P-R曲线彼此犬牙交错,很难出现直接外包围的情况,所以引出BEP。
平衡点(Break-Even Pont,简称BEP)就是这样的度量标准。当P=R(可视为一条夹角为45°的直线)时,这条直线与各个分类算法的P-R曲线会产生交点(即BEP),哪个算法的BEP值更大,那个算法的分类性能就更优。比如说,在图9-18中,算法2的BEP大于算法1的BEP,那么可以说,在某种程度上,算法2的性能优于算法1。 P-R曲线的优点是直观,缺点是受样本分布(如正类与负类的占比)的影响较大。相比而言,ROC曲线则有更多的优点
2.6.2.3 ROC与AUC
ROC 曲线(Receiver Operating Characteristic Curve)是以假正率(False Positive Rate,FPR)为横轴,真正率(True Positive Rate,TPR,也就是召回率)为纵轴绘制的曲线。 其中:
FPR= FP/N ,其中N为真实的负类样本,即 FP+TN
TPR= TP/P ,其中P为真实的正类样本, 即 TP+FN 即从值上来看 TPR=查全率(召回率)
ROC曲线也与P-R曲线类似,通过排序后不断移动临界值(分类阈值),去计算 FPR与TPR,得到一系列数据。连成曲线,形成ROC曲线。
绘制过程举例:
AUC:AUC是ROC曲线下的面积,常用于评估模型在二分类问题中的性能。 计算AUC的值并不复杂,只需要沿着ROC曲线的横轴做积分(或累加求和)即可。通常,ROC曲线都位于y=x这条线的上方(如果不是这样的,只需要把模型预测概率P反转成1-P就能得到一个更好的分类器)。 因此,AUC的取值范围一般是0.5~1。(因为上面说了一般都大于y=x,不然也可以反转一下)通常来说,AUC越大表明分类器性能越好,因为它可以把真正的正类样本排在前面,降低误判率。