例如,如果模型做出了40次正确预测和10次错误预测,则其准确性为:
其中:
因此,此模型的准确性为:
accuracy=(TP+TN)/(TP+TN+FP+FN)accuracy=(0+36499)/(0+36499+0+25)=0.9993=99.93%虽然准确率为99.93%看起来非常出色,但该模型实际上没有预测能力。
常用的激活函数包括:
激活函数的图表绝不是单个直线。例如,ReLU激活函数的图表由两条直线组成:
sigmoid激活函数的图形如下所示:
例如,下图显示了一个分类器模型,该模型可以完美地将正类别(绿色椭圆形)与负类别(紫色矩形)区分开来。这个不切实际的完美模型的AUC为1.0:
相反,下图显示了生成随机结果的分类器模型的结果。此模型的AUC为0.5:
是的,上一个模型的AUC为0.5,而非0.0。
大多数模型介于这两种极端情况之间。例如,以下模型可以将正例与负例区分开来,因此其AUC介于0.5到1.0之间:
AUC是上图中灰色区域的面积。在这种不寻常的情况下,面积只需将灰色区域的长度(1.0)乘以灰色区域的宽度(1.0)即可得出。因此,1.0与1.0的乘积的AUC值恰好为1.0,这是可能获得的最高AUC得分。
反之,完全无法区分类别的分类器的ROC曲线如下所示。此灰色区域的面积为0.5。
更典型的ROC曲线大致如下所示:
手动计算此曲线下方的面积非常费劲,因此通常由程序计算大多数AUC值。
AUC是指:对于随机选择的正类别样本确实为正类别,以及随机选择的负类别样本为正类别,分类器更确信前者的概率。
神经网络通常包含多个隐藏层中的许多神经元。这些神经元各自以不同的方式对总体损失做出贡献。反向传播可确定是增加还是减少应用于特定神经元的权重。
几年前,机器学习从业者必须编写代码才能实现反向传播。现在,Keras等新型机器学习API可为您实现反向传播。呼!
以下是常见的批量大小策略:
请参阅以下内容了解详细信息:
1.对某些事物、人或群体有刻板印象、偏见或偏袒。这些偏差会影响数据的收集和解读、系统设计以及用户与系统的互动方式。此类偏差的形式包括:
2.采样或报告过程中引入的系统错误。此类偏差的形式包括:
距离原点的截距或偏移。偏差是机器学习模型中的参数,用以下任一符号表示:
例如,在下面的公式中,偏差为b:
在简单的二维线条中,偏差只是指“y截距”。例如,下图中线条的偏差为2。
之所以存在偏差,是因为并非所有模型都从原点(0,0)开始。例如,假设某个游乐园的入园费用为2欧元,每位客户每待一小时需额外支付0.5欧元。因此,映射总费用的模型的偏差为2,因为最低费用为2欧元。
例如,以下两个机器学习模型都执行二元分类:
例如,您可以将温度范围划分为离散的分桶,而不是将温度表示为单个连续的浮点特征,例如:
该模型会对同一分桶中的每个值采用相同的处理方式。例如,值13和22都属于温和分桶,因此该模型会将这两个值视为相同。
增加令牌桶的数量会增加模型必须学习的关系数量,从而使模型变得更复杂。例如,“寒冷”“温和”和“温暖”分桶实际上是模型可用于训练的三个单独的特征。如果您决定再添加两个存储分区(例如“冷”和“热”),那么您的模型现在必须针对五个单独的特征进行训练。
如何确定要创建多少个存储分区,或者每个存储分区的范围应该是多少?通常需要进行大量实验才能找到答案。
通过将traffic-light-state表示为分类特征,模型可以学习red、green和yellow对驾驶员行为的不同影响。
分类模型有两种常见类型:
逻辑回归模型会输出介于0到1之间的原始值。然后,执行以下操作:
例如,假设分类阈值为0.8。如果原始值为0.9,则模型会预测正类别。如果原始值为0.7,则模型会预测负类别。
随着模型或数据集的演变,工程师有时也会更改分类阈值。分类阈值发生变化时,正类别预测可能会突然变为负类别,反之亦然。
例如,假设有一个二元分类疾病预测模型。假设在第一年运行系统时:
因此,系统会诊断正类别。(患者喘息着说:“糟糕!I'msick!")
一年后,这些值可能如下所示:
因此,系统现在将该患者重新归类为“非”类。("Happyday!I'mnotsick.")同一患者。不同的诊断。
负标签与正标签的比率为10万比1,因此这是一个分类不平衡的数据集。
相比之下,以下数据集不存在类别不平衡问题,因为负类标签与正类标签的比率相对接近1:
多类数据集也可能存在类别不平衡的情况。例如,以下多类分类数据集也存在类不平衡问题,因为其中一个标签的示例数量远远多于另外两个标签:
例如,假设特定特征的<0.5%的值不在40-60的范围内。在这种情况下,您可以执行以下操作:
上表混淆矩阵显示了以下内容:
再举一个例子,某个混淆矩阵可以揭示,经过训练以识别手写数字的模型往往会将4错误地预测为9,将7错误地预测为1。
当进一步训练无法改进模型时,模型就会收敛。
DataFrame类似于表格或电子表格。DataFrame的每一列都有一个名称(标题),每一行都由一个唯一的数字标识。
DataFrame中的每一列都像2D数组一样进行结构化,但每列可以分配自己的数据类型。
一组原始数据,通常(但不限于)采用以下格式之一进行整理:
深度模型也称为深度神经网络。
例如,具有5个隐藏层和1个输出层的神经网络的深度为6。
经常或持续执行的操作。在机器学习中,“动态”和“在线”是同义词。以下是机器学习中动态和在线的常见用法:
73,000个元素的数组非常长。如果您不向模型添加嵌入层,则由于需要对72,999个零进行乘法,训练将非常耗时。假设您选择的嵌入层由12个维度组成。因此,嵌入层将逐渐为每种树种学习一个新的嵌入向量。
例如,假设存在以下情况:
因此,一个epoch需要20次迭代:
例如,假设您正在训练一个模型,以确定天气状况对学生考试成绩的影响。以下是三个带标签的示例:
以下是三个未标记的示例:
模型错误预测为正类别的实际负例示例所占的比例。以下公式用于计算假正例率:
例如,假设有一个“情绪预测”模型,用于将温度表示为以下四个分桶之一:
表示风速在以下三个范围之一:
如果不使用特征交叉,线性模型会针对前面七个不同的存储分区分别进行训练。因此,模型在freezing上训练时,不会受到windy上训练的影响。
或者,您也可以创建温度和风速的特征交叉项。此合成特征将具有以下12个可能值:
得益于特征交叉,模型可以学习freezing-windy天和freezing-still天之间的情绪差异。
如果您要根据两个各有许多不同分桶的特征创建一个合成特征,那么生成的特征交叉将有大量可能的组合。例如,如果一个特征有1,000个存储分区,另一个特征有2,000个存储分区,则生成的特征交叉有2,000,000个存储分区。
特征交叉主要用于线性模型,很少用于神经网络。
一个涉及以下步骤的过程:
每个示例都会为特征向量提供不同的值,因此下一个示例的特征向量可能如下所示:
[0.0,0.0,1.0,0.0,0.0]再举一例,假设您的模型由三个特征组成:
在这种情况下,每个示例的特征向量将由9个值表示。假设前面的列表中的示例值,特征向量将为:
在机器学习中,模型的预测会影响同一模型或其他模型的训练数据的情况。例如,电影推荐模型会影响用户观看的电影,而这会反过来影响后续的电影推荐模型。
您可以使用训练集中的示例训练模型。因此,模型会学习训练集中数据的特殊性。泛化能力的本质在于,模型能否对不在训练集中的示例做出准确的预测。
梯度下降比机器学习早得多。
现实。
实际发生的情况。
我们会根据标准答案评估模型质量。但是,标准答案并不总是完全真实的。例如,请考虑以下关于地面真实情况可能存在瑕疵的示例:
L0正则化有时也称为L0范数正则化。
$$L_1loss=\sum_{i=0}^n|y_i-\hat{y}_i|$$
$$L_2loss=\sum_{i=0}^n{(y_i-\hat{y}_i)}^2$$
将有标签示例与无标签示例进行对比。
例如,下图显示了一个包含一个输入层、两个隐藏层和一个输出层的神经网络:
两个或多个变量之间的关系,可以仅通过加法和乘法表示。
线性关系的图表是一条线。
线性模型遵循以下公式:
y'=7+(-2.5)(x1)+(-1.2)(x2)+(1.4)(x3)假设某个特定示例包含以下值:
y'=7+(-2.5)(4)+(-1.2)(-10)+(1.4)(5)y'=16线性模型不仅包括仅使用线性方程进行预测的模型,还包括将线性方程仅用作预测公式的一个组成部分的一组更广泛的模型。例如,逻辑回归会对原始预测(y')进行后处理,以生成介于0到1之间的最终预测值(不包括0和1)。
一种机器学习模型,具有以下两个特点:
例如,假设有一个逻辑回归模型,用于计算输入电子邮件是垃圾邮件还是非垃圾邮件的概率。假设在推理过程中,模型预测值为0.72。因此,该模型估算的是:
逻辑回归模型采用以下两步架构:
与任何回归模型一样,逻辑回归模型也会预测一个数字。不过,此数值通常会成为二元分类模型的一部分,如下所示:
以下公式用于计算对数损失函数:
某个事件的几率对数。
如果事件是二进制概率,则赔率是指成功概率(p)与失败概率(1-p)的比率。例如,假设某个给定事件的成功概率为90%,失败概率为10%。在这种情况下,赔率的计算方式如下:
损失曲线可以绘制以下所有类型的损失:
训练的目标通常是尽量降低损失函数返回的损失。
损失函数有很多种。为您要构建的模型类型选择合适的损失函数。例如:
计算小批量数据集的损失比计算整个批次中所有示例的损失要高效得多。
您可以保存、恢复或复制模型。
以下代数函数就是一个模型:
f(x,y)=3x-5xy+y2+17上述函数会将输入值(x和y)映射到输出。
同样,以下编程函数也是模型:
defhalf_of_greater(x,y):if(x>y):return(x/2)elsereturn(y/2)调用方将参数传递给上一个Python函数,然后Python函数通过return语句生成输出。
人工程序员手动编写编程函数。与之相反,机器学习模型会在自动训练期间逐步学习最佳参数。
使用Iris数据集训练的模型可对新示例预测鸢尾花类型,即执行多类别分类。
在聚类问题中,多类分类是指超过两个类别。
神经网络中的每个神经元都连接到下一层的所有节点。例如,在上图中,请注意第一个隐藏层中的三个神经元分别连接到第二个隐藏层中的两个神经元。
在计算机上实现的神经网络有时被称为人工神经网络,以将其与大脑和其他神经系统中的神经网络区分开来。
某些神经网络可以模拟不同特征与标签之间极其复杂的非线性关系。
下图突出显示了两个神经元及其输入。
神经网络中的神经元模仿大脑和神经系统其他部分中的神经元的行为。
广义而言,将变量的实际值范围转换为标准值范围的过程,例如:
例如,假设有一个模型每4小时生成一次本地天气预报(预测)。每次运行模型后,系统都会缓存所有本地天气预报。天气应用会从缓存中检索预报。
离线推理也称为静态推理。
将分类数据表示为矢量,其中:
独热编码常用于表示拥有有限个可能值的字符串或标识符。例如,假设某个名为Scandinavia的分类特征有五个可能值:
热编码可以将这五个值分别表示为:
得益于独热编码,模型可以根据这五个国家/地区分别学习不同的关联。
使用数字编码时,模型会以数学方式解读原始数字,并尝试根据这些数字进行训练。不过,冰岛的某些数据实际上并非是挪威的两倍(或一半),因此该模型会得出一些奇怪的结论。
神经网络的“最终”层。输出层包含预测结果。
下图显示了一个小型深度神经网络,其中包含一个输入层、两个隐藏层和一个输出层:
过拟合就像只严格遵循自己最喜欢的老师的建议一样。您可能会在该老师的课程中取得成功,但可能会过于适应该老师的教学理念,而无法在其他课程中取得成功。听取不同老师的建议,有助于您更好地适应新情况。
您要测试的类。
例如,癌症模型中的正类别可以是“肿瘤”。在电子邮件分类器中,正类别可以是“垃圾邮件”。
正类别一词可能会让人感到困惑,因为许多测试的“正”结果通常是不可取的结果。例如,在许多医学检查中,正类别对应于肿瘤或疾病。一般来说,您希望医生告诉您:“恭喜!您的检测结果为阴性。”无论如何,正类别都是测试要查找的事件。
当然,您同时要针对正例类和负例类进行测试。
在模型运行后调整模型的输出。后处理可用于强制执行公平性约束条件,而无需修改模型本身。
模型的输出。例如:
用于逼近未在数据集内直接提供的标签的数据。
例如,假设您必须训练一个模型来预测员工的压力水平。您的数据集包含许多预测特征,但不包含名为压力水平的标签。您毫不畏惧,选择“工作场所事故”作为压力水平的代理标签。毕竟,压力较大的员工比平静的员工更容易发生事故。还是有?也许工作场所事故的上升和下降实际上是由多种原因造成的。
再举一个例子,假设您希望将是否下雨设为数据集的布尔型标签,但该数据集不包含下雨数据。如果有照片,您能够以人们带着雨伞的照片作为“在下雨吗?”的代理标签。这个代理标签合适吗?有可能,但某些文化背景的人可能更倾向于带伞防晒,而不是防雨。
代理标签通常并不完美。尽可能选择实际标签,而不是代理标签。尽管如此,如果没有实际标签,请务必仔细选择代理标签,选择最不糟糕的代理标签候选项。
例如:
下面是ReLU的图表:
回归模型有两种常见类型:
并非输出数值预测的每个模型都是回归模型。在某些情况下,数值预测实际上只是一个恰好具有数值类别名称的分类模型。例如,用于预测邮政编码的模型属于分类模型,而非回归模型。
正则化也可以定义为对模型复杂性的惩罚。
正则化违反直觉。增加正则化通常会增加训练损失,这令人困惑,因为我们的目标不是尽量降低训练损失吗?
实际上,不是。我们的目标不是尽量降低训练损失。目标是针对真实示例做出出色的预测。值得注意的是,虽然增加正则化会增加训练损失,但通常有助于模型对真实示例做出更好的预测。
其中,正则化是指任何正则化机制,包括:
使用检索增强生成的常见动机包括:
ROC曲线的形状表明二元分类模型将正类别与负类别区分开的能力。例如,假设二元分类模型可以完美地将所有负类别与所有正类别区分开来:
上述模型的ROC曲线如下所示:
相比之下,下图绘制了完全无法将负类别与正类别区分开来的糟糕模型的原始逻辑回归值:
此模型的ROC曲线如下所示:
与此同时,在现实世界中,大多数二元分类模型在一定程度上可以将正类别和负类别区分开来,但通常无法做到完全区分。因此,典型的ROC曲线介于这两种极端情况之间:
理论上,ROC曲线上最接近(0.0,1.0)的点可确定理想的分类阈值。不过,还有一些其他现实问题会影响理想分类阈值的选择。例如,假负例可能比假正例造成的痛苦要多得多。
一种数学函数,用于将输入值“压缩”到受限范围内(通常为0到1或-1到+1)。也就是说,您可以将任何数字(2、100万、负十亿等)传递给Sigmoid函数,输出结果仍会在受限范围内。sigmoid激活函数的图形如下所示:
在机器学习中,sigmoid函数有几种用途,包括:
输入数x的S型函数的公式如下:
Softmax也称为完整Softmax。
Softmax方程式如下所示:
例如,假设输入向量为:
[1.2,2.5,1.8]因此,softmax会按如下方式计算分母:
因此,每个元素的softmax概率为:
因此,输出矢量为:
$\sigma$中的三个元素的总和为1.0。呼!
在机器学习中,有相当多的特征是稀疏特征。分类特征通常是稀疏特征。例如,在森林中的300种可能的树种中,单个示例可能只会识别出枫树。或者,在视频库中可能包含数百万个视频,但单个示例可能只会识别出“Casablanca”。
仅存储稀疏特征中非零元素的位置。
您可以使用一对一热编码向量来表示每个示例中的树种。独热向量将包含一个1(表示该示例中的特定树种)和35个0(表示该示例中不属于的35种树)。因此,maple的独热表示法可能如下所示:
或者,稀疏表示法只会标识特定物种的位置。如果maple位于24号位置,则maple的稀疏表示法将非常简单:
24请注意,稀疏表示法比独热表示法要紧凑得多。
假设模型中的每个示例都必须表示英语句子中的单词(但不表示这些单词的顺序)。英语大约有17万个单词,因此英语是一个包含大约17万个元素的分类特征。大多数英语句子只使用这17万个字中的极小一部分,因此单个示例中的一组字词几乎肯定是稀疏数据。
请考虑以下句子:
Mydogisagreatdog您可以使用一维热图矢量的变体来表示此句子中的字词。在此变体中,矢量中的多个单元可以包含非零值。此外,在此变体中,单元格可以包含1以外的整数。虽然“my”“is”“a”和“great”在句子中只出现了一次,但“dog”出现了两次。使用这种一对一热向量变体来表示此句子中的字词,会得到以下17万个元素的向量:
同一句子的稀疏表示法非常简单:
0:126100:245770:158906:191520:1如果您感到困惑,请点击该图标。“稀疏表示”一词让许多人感到困惑,因为稀疏表示本身不是稀疏向量。而是,稀疏表示法实际上是稀疏矢量的密集表示法。同义词“索引表示法”比“稀疏表示法”更清晰。
一次性完成的操作,而不是持续性操作。静态和离线是同义词。以下是机器学习中静态和离线的常见用法:
传统上,数据集中的示例会分为以下三个不同的子集:
理想情况下,数据集中的每个示例都应仅属于上述子集之一。例如,单个示例不应同时属于训练集和验证集。
传统上,您可以将数据集中的示例划分为以下三个不同的子集:
此线性模型使用以下公式生成预测值y':
因此,预测结果为:
如果权重为0,则相应的特征对模型没有任何影响。例如,如果w1为0,则x1的值无关紧要。
因此,加权和为:
然后,机器学习模型会根据该特征的Z得分(而不是原始值)进行训练。