你不得不了解的人工智能基础知识
1.什么是人工智能?
首先我们利用传统的软件和人工智能进行比较,就容易使大家更容易理解。
(1) 传统软件 VS 人工智能
传统软件是[基于规则]的,需要人为的设定条件,并且告诉计算机符合这个条件后该做什么。
人工智能则是机器从[特定]大量数据中总结规律,归纳出某些[特定知识],然后将这种知识应用到特定的场景中去解决实际问题。
然而,当前的人工智能知其然,但不知所以然。
也正是因为归纳逻辑,所以需要依赖大量的数据。数据越多,归纳出来的经验越具有普适性。
而我们在探寻AI的边界时,我们可以简单粗暴的把AI分成3个级别:
2.图灵测试
图灵测试的提出是因为图灵在思考一个问题:机器能否思考?
并且图像相信是可以制作出会思考的机器,于是就在想第二个问题:如何判断机器能否思考?
于是就有了图灵测试。
那么什么是图灵测试呢?
让一个人坐在电脑前,跟另一边用键盘进行对话,如果这个人分不清跟自己对话的是一个人还是一个机器,那么这个对话机器就通过了图灵测试并具备人工智能。
3.什么是算法?
算法简单来说,就是解决问题的手段,并且是批量化解决问题的手段。
比如你想要木头桌子,那么制造桌子的工厂就是“一套算法”。提供(输入)木头,就会得到(输出)桌子。
关于算法,有3点需要注意:
- 1.没有某种算法是万能的。
- 2.算法没有高级和低级之分。
- 3.根据不同的环境选择合适的算法很严重。
4.人工智能中的算力是什么?
在普通的电脑中,CPU就提供了算力帮助电脑快速运行,而在玩游戏中就需要显卡来提供算力,帮助电脑快速处理图形,。那么在人工智能中,就需要有类似的CPU和GPU的硬件来提供算力,帮助算法快速运算出结果。
在上述声什么是算法里讲过,在制造木桌的过程中,工厂的流水线就是算法。在那个例子中,工厂中的机器就像算力,机器越好越先进,制造的过程就越快
5.什么是监督学习?
监督学习是机器学习中的一种训练方式/学习方式:
监督学习需要有明确的目标,很清楚自己想要什么结果。比如:按照“既定规则”来分类、预测某个具体的值…
监督学习的流程:
- 1.选择一个适合目标任务的数学模型
- 2.先把一部分已知的“问题和答案(训练集)”送给机器去学习
- 3.机器总结除了自己的“方法论”
- 4.人类把“新的问题(测试集)”给机器,让它去解答。
监督学习的2个任务:
- 1.回归:预测连续的、具体的数值。
- 2.分类:对各种事物分门别类,用于离散型数据预测。
6.什么是无监督学习?
无监督学习是机器学习中的一种训练方式/学习方式:
下面通过跟监督学习的对比来理解无监督学习:
- 1.监督学习是一种目的明确的训练方式,你知道得到的是什么;而无监督学习则是没有明确目的的训练方式,你无法提前知道结果是什么。
- 2.监督学习需要给数据打标签;而无监督学习不需要给数据打标签。
- 3.监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果如何
无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。
无监督学习的使用场景:
- 1.发现异常数据:通过无监督学习,我们可以快速把行为进行分类,虽然我们不知道这些分类意味着什么,但是通过这种分类,可以快速排出正常的用户,更有针对性的对异常行为进行深入分析。
- 2.用户细分:这个对于广告平台很有意义,我们不仅把用户按照性别、年龄、地理位置等维度进行用户细分,还可以通过用户行为对用户进行分类。
常见的2类无监督学习算法:
- 1.聚类:简单说就是一种自动分类的方法,在监督学习中,你很清楚每一个分类是什么,但是聚类则不是,你并不清楚聚类后的几个分类每个代表什么意思。
- 2.降维:降维看上去很像压缩。这是为了在尽可能保存相关的结构的同时降低数据的复杂度。
7.如何合理划分数据集?
首先先来介绍这三种数据集,训练集 测试集 验证集。先用一个不恰当的比喻来说明3种数据集之间的关系:
- 1.训练集相当于上课学知识
- 2.验证集相当于课后的的练习题,用来纠正和强化学到的知识
- 3.测试集相当于期末考试,用来最终评估学习效果
(1)什么是训练集
训练集(Training Dataset)是用来训练模型使用的。
(2)什么是验证集
当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。
作用:
- 1.评估模型效果,为了调整超参数而服务
- 2.调整超参数,使得模型在验证集上的效果最好
(3)什么是测试集
当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。
(4)如何合理的划分数据集
数据集的划分并没有明确的规定,不过可以参考3个原则:
- 1.对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
- 2对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
- 3.超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。
3种主流的交叉验证法
- 1.留出法(Holdout cross validation): 按照固定比例将数据集静态的划分为训练集、验证集、测试集。的方式就是留出法。
- 2.留一法(Leave one out cross validation):每次的测试集都只有一个样本,要进行 m 次训练和预测。 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。
- 3.K折交叉验证(k-fold cross validation)
静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:- 1.将数据集分为训练集和测试集,将测试集放在一边
- 2.将训练集分为 k 份
- 3.每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
- 4.通过 k 次训练后,我们得到了 k 个不同的模型。
- 5.评估 k 个模型的效果,从中挑选效果最好的超参数
- 6.使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。
8.机器学习的评估指标大全
所有事情都需要评估好坏,尤其是量化的评估指标。
- 1.高考成绩用来评估学生的学习能力
- 2.杠铃的重量用来评估肌肉的力量
- 3.跑分用来评估手机的综合性能
为了快速理解各项指标的计算方式,用具体的例子将分类问题进行图解,帮助大家快速理解分类中出现的各种情况。
例子:
我们有10张照片,5张男性、5张女性。如下图:
有一个判断性别的机器学习模型,当我们使用它来判断「是否为男性」时,会出现4种情况。如下图:
- 实际为男性,且判断为男性(正确)
- 实际为男性,但判断为女性(错误)
- 实际为女性,且判断为女性(正确)
- 实际为女性,但判断为男性(错误)
这4种情况构成了经典的混淆矩阵,如下图:
-
TP – True Positive:实际为男性,且判断为男性(正确)
-
FN – False Negative:实际为男性,但判断为女性(错误)
-
TN – True Negative:实际为女性,且判断为女性(正确)
-
FP – False Positive:实际为女性,但判断为男性(错误)
准确率-Accuracy
预测正确的结果占总样本的百分比,公式如下:
准确率 =(TP+TN)/(TP+TN+FP+FN)
虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。
精确率-Precision
所有被预测为正的样本中实际为正的样本的概率,公式如下:
精准率 =TP/(TP+FP)
精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。
召回率(查全率)- Recall
实际为正的样本中被预测为正样本的概率,其公式如下:
召回率=TP/(TP+FN)
召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。
F1分数
如果我们把精确率(Precision)和召回率(Recall)之间的关系用图来表达,就是下面的PR曲线:
可以发现他们俩的关系是「两难全」的关系。为了综合两者的表现,在两者之间找一个平衡点,就出现了一个 F1分数。
ROC曲线
真正率(TPR) = 灵敏度 = TP/(TP+FN)
假正率(FPR) = 1- 特异度 = FP/(FP+TN)
ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC 曲线是基于混淆矩阵得出的。
ROC 曲线中的主要两个指标就是真正率和假正率。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的 ROC 曲线图。
ROC 曲线的阈值问题
与前面的 P-R 曲线类似,ROC 曲线也是通过遍历所有阈值 来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在 ROC 曲线图中也会沿着曲线滑动。
如何判断 ROC 曲线的好坏?
改变阈值只是不断地改变预测的正负样本数,即 TPR 和 FPR,但是曲线本身是不会变的。那么如何判断一个模型的 ROC 曲线是好的呢?这个还是要回归到我们的目的:FPR 表示模型虚报的响应程度,而 TPR 表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是TPR 越高,同时 FPR 越低(即 ROC 曲线越陡),那么模型的性能就越好。 参考如下:
ROC 曲线无视样本不平衡
无论红蓝色样本比例如何改变,ROC 曲线都没有影响。
AUC(曲线下的面积)
为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积(Area Under Curve)。
比较有意思的是,如果我们连接对角线,它的面积正好是 0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是 50%,表示随机效果。 ROC 曲线越陡越好,所以理想值就是 1,一个正方形,而最差的随机判断都有 0.5,所以一般 AUC 的值是介于 0.5 到 1 之间的。
AUC 的一般判断标准
0.5 – 0.7: 效果较低,但用于预测股票已经很不错了
0.7 – 0.85: 效果一般
0.85 – 0.95: 效果很好
0.95 – 1: 效果非常好,但一般不太可能
转载:https://blog.csdn.net/Mind_programmonkey/article/details/104311322