深度学习500问——Chapter02:机器学习基础(1)

文章目录

前言

2.1 基本概念

2.1.1 大话理解机器学习本质

2.1.2 什么是神经网络

2.1.3 各种常见算法图示

2.1.4 计算图的导数计算

2.1.5 理解局部最优与全局最优

2.1.5 大数据与深度学习之间的关系

2.2 机器学习学习方式

2.2.1 监督学习

2.2.2 非监督式学习

2.2.3 半监督式学习

2.2.4 弱监督学习

2.2.5 监督学习有哪些步骤

2.3 分类算法

2.3.1 常用分类算法的优缺点

2.3.2 分类算法的评估方法

2.3.3 正确率能很好的评估分类算法吗

2.3.4 什么样的分类器是最好的

2.4 逻辑回归

2.4.1 回归划分

2.4.2 逻辑回归适用性

2.4.3 生成模型和判别模型的区别

2.4.4 逻辑回归与朴素贝叶斯有什么区别

2.4.5 线性回归与逻辑回归的区别


前言

机器学习起源于上世纪50年代,1959年在IBM工作的Arthur Samuel设计了一个下棋程序,这个程序具有学习的能力,它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念,它是一个结合了多个学科,如概率论、优化理论、统计等,最终在计算机上实现自我获取新知识,学习改善自己的这样一个研究领域。机器学习是人工智能的一个子集,目前已经发展处许多有用的方法,比如支持向量机,回归,决策树,随机森林,强化学习,集成学习,深度学习等等,一定程度上可以帮助人们完成一些数据预测,自动化,自动决策,最优化等初步替代脑力的任务。本章我们主要介绍下机器学习的基本概念、监督学习、分类算法、逻辑回归、代价函数、损失函数、LDA、PCA、决策树、支持向量机、EM算法、聚类和降维以及模型评估有哪些方法、指标等等。


2.1 基本概念

2.1.1 大话理解机器学习本质

机器学习(Machine Learning,ML),顾名思义,让机器去学习。这里,机器指的是计算机,是算法运行的物理载体,你也可以把各种算法本身当作一个有输入和输出的机器。那么到底让计算机去学习什么呢?对于一个任务及其表现的度量方法,设计一种算法,让算法能够提取中数据所蕴含的规律,这就叫机器学习。如果输入机器的数据是带有标签的,就称作有监督学习。如果数据是无标签的,就是无监督学习。

2.1.2 什么是神经网络

神经网络就是按照一定规则将多个神经元连接起来的网络。不同的神经网络,具有不同的连接规则。例如全连接(Full Connected,FC)神经网络,它的规则包括:

  1. 有三种层:输入层,输出层,隐藏层;
  2. 同一层的神经元之间没有连接;
  3. fully connected的含义:第N层的每个神经元和第N-1层的所有神经元相连,第N-1层神经元的输出就是第N层神经元的输入;
  4. 每个连接都有一个权值。

神经网络架构

图2-1就是一个神经网络系统,它由很多层组成。输入层负责接收信息,比如一只猫的图片。输出层是计算机对这个输入信息的判断结果,它是不是猫。隐藏层就是对输入信息的传递和加工处理。

图2-1 神经网络系统

2.1.3 各种常见算法图示

日常使用机器学习的任务中,我们经常会遇见各种算法,图2-2是各种常见算法的图示。

回归算法聚类算法
正则化方法决策树学习
贝叶斯方法基于核的算法
聚类算法关联规则学习
人工神经网络深度学习
降低维度算法集成算法

图2-2 各种算法图示

2.1.4 计算图的导数计算

计算图导数计算是反向传播,利用链式法则核隐式函数求导。

假设z=f(u,v)在点(u,v)处偏导连续,(u,v)是关于t的函数,在t点可导,求zt点的导数。

根据链式法则有:\frac{dz}{dt}=\frac{\partial z}{\partial u}.\frac{du}{dt}+\frac{\partial z}{\partial v} .\frac{dv}{dt}。链式法则用文字描述:由两个函数凑起来的复合函数,其导数等于里边函数代入外边函数的值之导数,乘以里边函数的导数。

为了便于理解,下面举例说明:

f(x)=x^2,g(x)=2x+1

则:{f[g(x)]}'=2[g(x)] \times g'(x)=2[2x+1] \times 2=8x+4

2.1.5 理解局部最优与全局最优

笑谈局部最优和全局最优

柏拉图有一天问老师苏格拉底什么是爱情?苏格拉底叫他到麦田走一次,摘一颗最大的麦穗回来,不许回头,只可摘一次。柏拉图空着手出来了,他的理由是,看见不错的,却不知道是不是最好的,一次次侥幸,走到尽头时,才发现还不如前面的,于是放弃。苏格拉底告诉他:“这就是爱情”。这个故事让我们明白了一个道理,因为生命的一些不确定性,所以全局最优是很难寻找的,或者说根本就不存在,我们应该设置一些限定条件,然后在这个范围内寻找最优解,也就是局部最优解——有所斩获总比空手而归强,哪怕这种斩获只是一次有趣的经历。柏拉图有一天又问什么是婚姻?苏格拉底叫他到树林走一次,选一棵最好的树做圣诞树,也是不许回头,只许选一次。这次他一身疲惫地拖了一棵看起来直挺、翠绿,却有点稀疏的杉树回来,他的理由是,有了上回的教训,好不容易看见一棵看似不错的,又发现时间、体力已经快不够用了,也不管是不是最好的,就拿回来了。苏格拉底告诉他:“这就是婚姻”。

优化问题一般分为局部最优和全局最优。其中,

(1)局部最优,就是在函数值空间的一个有限区域内寻找最小值;而全局最优,是在函数值空间整个区域寻找最小值问题。

(2)函数局部最小点就是它的函数值小于或等于附近点的点,但是有可能大于较远距离的点。

(3)全局最小点是那种它的函数值小于或等于所有的可行点。

2.1.5 大数据与深度学习之间的关系

首先来看大数据、机器学习及数据挖掘三者简单的定义:

大数据通常被定义为“超出常用软件工具捕获,管理和处理能力”的数据集。

机器学习关心的问题是如何构建计算机程序使用经验自动改进。

数据挖掘是从数据中提取模式的特定算法的应用,在数据挖掘中,重点在于算法的应用,而不是算法本身。

机器学习和数据挖掘之间的关系如下:数据挖掘是一个过程,在此过程中机器学习算法被用作提取数据集中的潜在有价值模式的工具。大数据与深度学习关系总结如下:

(1)深度学习是一种模拟大脑的行为。可以从所学习对象的机制以及行为等等很多相关联的方面进行学习,模仿类型行为以及思维。

(2)深度学习对于大数据的发展有帮助。深度学习对于大数据技术开发的每一个阶段均有帮助,不管是数据的分析还是挖掘还是建模,只有深度学习,这些工作才会有可能一一得到实现。

(3)深度学习转变了解决问题的思维。很多时候发现问题到解决问题,走一步看一步不是一个主要的解决问题的方式了,在深度学习的基础上,要求我们从开始到最后都要基于一个目标,为了需要优化的那个最终目标去进行处理数据以及将数据放入到数据应用平台上去,这就是端到端(End to End)。

(4)大数据的深度学习需要一个框架。在大数据方面的深度学习都是从基础的角度出发的,深度学习需要一个框架或者一个系统。总而言之,将你的大数据通过深度分析变为现实,这就是深度学习和大数据的最直接关系。

2.2 机器学习学习方式

根据数据类型的不同,对一个问题的建模有不同的方式。依据不同的学习方式和输入数据,机器学习主要分为以下四种学习方式。

2.2.1 监督学习

特点:监督学习是使用已知正确答案的示例来训练网络。已知数据和其一一对应的标签,训练一个预测模型,将输入数据映射到标签的过程。

常见应用场景:监督式学习的常见应用场景如分类问题和回归问题。

算法举例:常见的有监督机器学习算法包括支持向量机(Support Vector Machine,SVM),朴素贝叶斯(Naive Bayes),逻辑回归(Logistic Regression),K近邻(K-Nearest Neighborhood,KNN),决策树(Decision Tree),随机森林(Random Forest),AdaBoost以及线性判别分析(Linear Discrimination Analysis,LDA)等。深度学习(Deepl Learning)也是大多数以监督学习的方式呈现。

2.2.2 非监督式学习

定义:在非监督式学习中,数据并不被特别标识,适用于你具有数据集但无标签的情况。学习模型是为了推断出数据的一些内在结构。

常见应用场景:常见的应用场景包括关联规则的学习以及聚类等。

算法举例:常见算法包括Apriori算法以及K-Means算法。

2.2.3 半监督式学习

特点:在此学习方式下,输入数据部分被标记,部分没有被标记,这种学习模型可以用来进行预测。

常见应用场景:应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,通过对已标记数据建模,在此基础上,对未标记数据进行预测。

算法举例:常见算法如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。

2.2.4 弱监督学习

特点:弱监督学习可以看作是有多个标记的数据集合,次集合可以是空集,单个元素,或包含多种情况(没有标记,有一个标记,和有多个标记)的多个元素。数据集的标签是不可靠的,这里的不可靠可以是标记不正确,多种标记,标记不充分,局部标记等。已知数据和其一一对应的弱标签,训练一个智能算法,将输入数据映射到一组更强的标签的过程。标签的强弱指的是标签蕴含的信息量的多少,比如相对于分割的标签来说,分类的标签就是弱标签。

算法举例:举例,给出一张包含气球的图片,需要得出气球在图片中的位置及气球和背景的分割线,这就是已知弱标签学习强标签的问题。

在企业数据应用的场景下,人们最常用的可能就是监督式学习和非监督式学习的模型。在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前半监督式学习是一个很热的话题。

2.2.5 监督学习有哪些步骤

监督学习是使用已知正确答案的示例来训练网络,每组训练数据有一个明确的标识或结果。想象协一下,我们可以训练一个网络,让其从照片库中(其中包含气球的照片)识别出气球的照片。以下就是我们在这个假设场景中所有采取的步骤。

步骤1:数据集的创建和分类

首先,浏览你的照片(数据集),确定所有包含气球的照片,并对其进行标注。然后,将所有照片分为训练集和验证集。目标就是在网络深度中找一函数,这个函数输入是任意一张照片,当照片中包含气球时,输出1,否则输出0。

步骤2:数据增强(Data Augmentation)

当原始数据搜集和标注完毕,一般搜集的数据并不一定包含目标在各种扰动下的信息。数据的好坏对于机器学习模型的预测能力至关重要,因此一般会进行数据增强。对于图像数据来说,数据增强一般包括:图像旋转,平移。颜色变换,裁剪,仿射变换等。

步骤3:特征工程(Feature Engineering)

一般来讲,特征工程包含特征提取和特征选择。常见的手工特征(Hand-Crafted Feature)有尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)方向梯度直方图(Histogram of Oriented Gradient,HOG)等。由于手工特征是启发式的,其算法设计背后的出发点不同,将这些特征组合在一起的时候有可能会产生冲突,如何将组合特征的效能发挥出来,使原始数据在特征空间中的判别性最大化,就需要用到特征选择的方法。在深度学习方法大获成功之后,人们很大一部分不再关注特征工程本身。因为,最常用到的卷积神经网络(Convolution Neural Networks,CNNs)本身就是一种特征提取和选择的引擎。研究者提出不同的网络结构、正则化、归一化方法实际上就是深度学习背景下的特征工程。

步骤4:构建预测模型和损失

将原始数据映射到特征空间之后,也就意味着我们得到了比较合理的输入。下一步就是构建合适的预测模型得到对应输入的输出。而如何保证模型的输出和输入标签的一致性,就需要构建模型预测和标签之间的损失函数,常见的损失函数(Loss Function)有交叉熵、均方差等。通过优化方法不断迭代,使模型从最初的初始化状态一步步变化为有预测能力的模型的过程,实际上就是学习的过程。

步骤5:训练

选择合适的模型和超参数进行初始化,其中超参数比如支持向量机中核函数、误差项惩罚权重等。当模型初始化参数设定好后,将制作好的特征数据输入到模型,通过合适的优化方法不断缩小输出与标签之间的差距,当迭代过程到了截止条件,就可以得到训练好的模型。优化方法最常见的就是梯度下降法及其变种,使用梯度下降法的前提是优化目标函数对于模型是可导的。

步骤6:验证和模型选择

训练完训练集图片后,需要进行模型测试。利用验证集来验证模型是否可以准确地挑选处含有气球在内的照片。在此过程中,通常会通过调整和模型相关的各种事物(超参数)来重复步骤2和3,诸如里面有多少个节点,有多少层,使用怎样的激活函数和损失函数,如何在反向传播阶段积极有效地训练权值等等。

步骤7:测试及应用

当有了一个准确的模型,就可以将该模型部署到你的应用程序中。你可以将预测功能发布为API(Application Programming Interface,应该程序编程接口)调用,并且你可以从软件中调用该API,从而进行推理并给出相应的结果。

2.3 分类算法

分类算法和回归算法是对真实世界不同建模的方法。分类模型是认为模型的输出是离散的,例如大自然的生物被划分为不同的种类,是离散的。回归模型的输出是连续的,例如人的身高变化过程是一个连续过程,而不是离散的。

因此,在实际建模过程时,采用分类模型还是回归模型,取决于你对任务(真实世界)的分析和理解。

2.3.1 常用分类算法的优缺点

接下来我们介绍常用分类算法的优缺点,如表2-1所示。

表2-1 常用分类算法的优缺点

算法优点缺点
Bayes 贝叶斯分类法

1)所需估计的参数少,对于缺失数据不敏感。

2)有着坚实的数学基础,以及稳定的分类效率。

1)需要假设属性之间的相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒鸡蛋)。

2)需要知道先验概率。

3)分类决策存在错误率。

Decision Tree 决策树

1)不需要任何领域知识或参数假设。

2)适合高维数据。

3)简单易于理解。

4)短时间内处理大量数据,得到可行且效果较好的结果。

5)能够同时处理数据性和常规性属性。

1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。

2)易于过拟合。

3)忽略属性之间的相关性。

4)不支持在线学习。

SVM 支持向量机

1)可以解决小样本下机器学习的问题。

2)提高泛化性能。

3)可以解决高纬、非线性问题。超高维文本分类仍受欢迎。

4)避免神经网络结构选择和局部极小的问题。

1)对缺失数据敏感。

2)内存消耗大,难以解释。

3)运行和调参略烦人。

KNN K近邻

1)思想简单,理论成熟,既可以用来做分类也可以用来做回归。

2)可用于非线性分类。

3)训练时间复杂度为O(n)。

4)准确度高,对数据没有假设,对outlier不敏感。

1)计算量太大。

2)对于样本分类不均衡问题,会产生误判。

3)需要大量的内存。

4)输出的可解释性不强。

Logistic Regression 逻辑回归

1)速度快。

2)简单易于理解,直接看到各个特征的权重。

3)能容易地更新模型吸收新的数据。

4)如果想要一个概率框架,动态调整分类发阀值。

特征处理复杂。需要归一化和较多的特征工程。
Neural Network 神经网络

1)分类准确率高。

2)并行处理能力强。

3)分布式存储和学习能力强。

4)鲁棒性较强,不易受噪声影响。

1)需要大量参数(网络拓扑、阀值、阈值)。

2)结果难以解释。

3)训练时间过长。

Adaboosting

1)adaboost是一种有很高精度的分类器。

2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。

3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。

4)简单,不用做特征筛选。

5)不用担心overfitting。

对outlier比较敏感。

2.3.2 分类算法的评估方法

分类评估方法主要功能是用来评估分类算法的好坏,而评估一个分类器算法的好坏又包括许多项指标。了解各种评估方法,在实际应用中选择正确的评估方法是十分重要的。

几个常用术语

这里首先介绍介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negative)分别是:

① True positive(TP):被正确地划分为正例的个数,即实际为正且被分类器划分为正例的实例数;

② False positive(FP):被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;

③ False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;

④ True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

表2-2 四个术语的混肴矩阵

表2-2是这四个术语的混淆矩阵,做以下说明: 1)P=TP+FN表示实际为正例的样本个数。 2)True、False描述的是分类器是否判断正确。 3)Positive、Negative是分类器的分类结果,如果正例计为1、负例计为-1,即positive=1、negative=-1。用1表示True,-1表示False,那么实际的类标=TF*PN,TF为true或false,PN为positive或negative。 4)例如True positives(TP)的实际类标=1*1=1为正例,False positives(FP)的实际类标=(-1)*1=-1为负例,False negatives(FN)的实际类标=(-1)*(-1)=1为正例,True negatives(TN)的实际类标=1*(-1)=-1为负例。

评价指标

① 正确率(accuracy):正确率是我们最常见的评价指标,accuracy=(TP+TN)/(P+N),正确率是被分对的样本数在所有样本数中的占比,通常来说,正确率越高,分类器越好。

② 错误率(error rate):错误率则与正确率相反,描述被分类器错分的比例,error rate=(FP+FN)/(P+N),对某一个实例来说,分对与分错是互斥事件,所有accuracy=1 - error rate。

③ 灵敏度(sensitivity):sensitivity = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。

④ 特异性(specificity):specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。

⑤ 精度(precision):precision = TP/(TP+FP),精度是精确性的度量,表示被分为正例的示例中实际为正例的比例。

⑥ 召回率(recall):召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitivity,可以看到召回率与灵敏度是一样的。

⑦ 其他评价指标:计算速度:分类器训练和预测需要的时间;鲁棒性:处理缺失值和异常值的能力;可扩展性:处理大数据集的能力;可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

⑧ 精度和召回率反映了分类性能的两个方面。如果综合考虑准率和查全率,可以得到新的评价指标F1-score,也称为综合分类率:

为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有微平均F1(micro-averaging)和宏平均F1(macro-averaging)两种指标。

(1)宏平均F1与微平均F1是以两种不同的平均方式求的全局F1指标。

(2)宏平均F1的计算方法先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。

(3)微平均F1的计算方法是先累加计算各个类别的a、b、c的值,再由这些值求出F1值。

(4)由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。

ROC曲线和PR曲线

如图2-3,ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。

图2-3 ROC曲线

 PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。

2.3.3 正确率能很好的评估分类算法吗

不同算法有不同的特点,在不同数据集上有不同的表现效果,根据特定的任务特定选择不同的算法。如何评价分类算法的好坏,要做具体任务具体分析。对于决策树,主要用正确率评估,但是其他算法,只用正确率能很好的评估吗?答案是否定的。正确率确实是一个很直观很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为0:不发生地震、1发生地震。我们都知道,不发生的概率是极大的,对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的正确率,但是,问题来了,如果真的发生地震时,这个分类器毫无察觉,那带来的后果将是巨大的。很显然,99%正确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1但达到了很高的正确率忽视了研究者本身最为关注的情况。

2.3.4 什么样的分类器是最好的

对某一个任务,某个具体的分类器不可能同时满足或提高所有上面介绍的指标。如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如之前说的地震预测,既然不能百分百预测地震的发生,但实际情况中能容忍一定程度的误报。假设在1000次预测中,共有5次发生了地震,真实情况中有一次发生了地震,其他4次则为误报。正确率由原来的999/1000=99.9下降为996/1000=99.6。召回率由0/1=0%上升为1/1=100%。对此解释为。虽然预测失误了4次,但真的地震发生前,分类器能预测对,没有错过,这样的分类器实际意义更为重大,正是我们想要的。在这种情况下,在一定正确率前提下,要求分类器的召回率尽量高。

2.4 逻辑回归

2.4.1 回归划分

广义线性模型家族里,依据因变量不同,可以有如下划分:

(1)如果是连续的,就是多重线性回归。

(2)如果是二项分布,就是逻辑回归。

(3)如果是泊松(Poisson)分布,就是泊松回归。

(4)如果是负二项分布,就是负二项回归。

(5)逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的逻辑回归。

2.4.2 逻辑回归适用性

逻辑回归可用于以下几个方面:

(1)用于概率预测。用于可能性预测时,得到的结果有可比性。比如根据模型进而预测在不同的自变量情况下,发生某病或某种情况的概率有多大。

(2)用于分类。实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。进行分类时,仅需要设定一个阈值即可,可能性高于阈值是一类,低于阈值是另一类。

(3)寻找危险因素。寻找某一疾病的危险因素等。

(4)仅能用于线性问题。只有当目标和特征是线性关系时,才能用逻辑回归。在应用逻辑回归时注意两点:一是当知道模型是非线性时,不适用逻辑回归;二是当使用逻辑回归时,应注意选择和目标为线性关系的特征。

(5)各特征之间不需要满足条件独立假设,但各个特征的贡献独立计算。

2.4.3 生成模型和判别模型的区别

生成模型

由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型,即生成模型:P(X|Y) = P(X,Y)/P(X)(贝叶斯概率)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类。典型的生成模型有朴素贝叶斯,隐马尔科夫模型等。

判别模型

由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知机,决策树,支持向量机等。这些模型的特点都是输入属性X可以直接得到的后验概率P(Y|X),输出条件概率最大的作为最终的类别(对于二分类任务来说,实际得到一个score,当score大于threshold时则为正类,否则为负类)。

举例

判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。

生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个就是哪个。

联系和区别

生成方法的特点:上面说到,生成方法学习联合概率密度分布P(X,Y),所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪。生成方法可以还原出联合概率分布P(Y,X),而判别方法不能。生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型,当存在隐变量时,仍可以用生成方法学习。此时判别方法就不能用。

判别方法的特点:判别方法直接学习的是决策函数Y=f(X)或者条件概率分布P(Y|X)。不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。直接面对预测,往往学习的准确率更高。由于直接学习P(Y|X)或P(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

最后,由生成模型可以得到判别模型,由判别模型得不到生成模型。

2.4.4 逻辑回归与朴素贝叶斯有什么区别

逻辑回归与朴素贝叶斯区别有以下几个方面:

(1)逻辑回归是判别模型,朴素贝叶斯是生成模型,所以生成和判别的所有区别它们都有。

(2)朴素贝叶斯属于贝叶斯,逻辑回归是最大似然,两种概率哲学间的区别。

(3)朴素贝叶斯需要条件独立假设。

(4)逻辑回归需要求特征参数间是线性的。

2.4.5 线性回归与逻辑回归的区别

线性回归与逻辑回归的区别如下描述:

(1)线性回归的样本的输出,都是连续值,y\in (-\infty ,+\infty ),而逻辑回归中y\in (0,1),只能取0和1。

(2)对于拟合函数也有本质上的差别:

线性回归:f(x)=\theta ^{T}x=\theta _{1}x _{1}+\theta _{2}x _{2}+...+\theta _{n}x _{n}

逻辑回归:f(x)=P(y=1|x;\theta )=g(\theta ^{T}x),其中,g(z)=\frac{1}{1+e^{-z}}

可以看出,线性回归的拟合函数,是对f(x)的输出变量y的拟合,而逻辑回归的拟合函数是对为1类样本的概率的拟合。

那么,为什么要以1类样本的概率进行拟合呢,为什么可以这样拟合呢?

\theta ^{T}x=0就是相当于是1类和0类的决策边界

\theta ^{T}x>0,则y>0.5;若\theta ^{T}x\rightarrow +\infty,则y \rightarrow 1,即y为1类;

\theta ^{T}x<0,则y<0.5;若\theta ^{T}x\rightarrow -\infty,则y \rightarrow 0,即y为0类;

这个时候就能看出区别,在线性回归中\theta ^{T}x为预测值的拟合函数;而在逻辑回归中,\theta ^{T}x为决策边界。下表2-3为线性回归和逻辑回归的区别。

表2-3 线性回归和逻辑回归的区别

线性回归逻辑回归
目的预测分类
y^{(i)}未知(0,1)
函数拟合函数预测函数
参数计算方式最小二乘法极大似然估计

下面具体解释一下:

1. 拟合函数和预测函数什么关系呢?简单来说就是将拟合函数做了一个逻辑函数的转换,转换后使得y^{(i)} \in (0,1)

2. 最小二乘和最大似然估计可以相互替代吗?回答当然是不行了。我们来看看两者依仗的原理:极大似然估计是计算使得数据出现的可能性最大的参数,依仗的自然是Probability。而最小二乘是计算误差损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/418342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS ARKit】协作 Session 实例

协作 Session 使用注意事项 协作 Session 是在 ARWorldMap 基础上发展起来的技术&#xff0c;ARWorldMap 包含了一系列的地标、ARAnchor 及在观察这些地标和 ARAnchor 时摄像机的视场&#xff08;View&#xff09;。如果用户在某一个位置新创建了一个 ARAnchor&#xff0c;这时…

指针的传递使用场景

C语言函数调用时为值传递&#xff0c;实参赋值给形参&#xff0c;形参值改变不会影响实参&#xff08;原理&#xff1a;两个参数地址不同&#xff09;&#xff0c;若要函数改变实参值&#xff0c;应当传递实参的地址&#xff0c;参考以下实例。 代码展示&#xff1a; #includ…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展&#xff0c;智能家居正成为现代生活的一部分&#xff0c;极大地改变了我们与家庭环境互动的方式。其中&#xff0c;WiFi模块作为关键的连接技术&#xff0c;在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

OD(13)之Mermaid饼图和象限图

OD(13)之Mermaid饼图和象限图使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool‍‌⁡…

layui中,父页面与子页面,函数方法的相互调用、传参

<%--父页面--%> <script type"text/javascript">var KaoHaoType 0; // 考号类型 自定义参数1// 选取考号类型function SelectKaoHaoType(callBack) {KaoHaoType 0; // 默认选择填涂考号layer.open({type: 2, title: 请选择 考号区类型, ar…

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款

案例&#xff1a; python编写一个程序&#xff0c;写入一个美金数量&#xff0c;然后显示出如何用最少的20美元、10美元、5美元和1美元来付款&#xff1a; Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考&#xff1a; 写入一个美金数量&…

Android NDK底层BUG,记录:connect、socket(AF_INET, SOCK_STREAM, 0) 等系统套接字接口函数崩溃问题。

在 Android NDK 之中&#xff0c;看上去调用 connect、socket 函数是不会崩溃的&#xff0c;但这是否定的&#xff0c;它在特定的情况下存在必定的崩溃的问题。 但是这种情况放到MACOS、LINUX、WINDOWS都不会崩溃&#xff0c;而它崩溃的点出现在操作系统底层。 人们需要参考这…

设计推特(Leetcode355)

例题&#xff1a; https://leetcode.cn/problems/design-twitter/ 分析&#xff1a; 推特其实类似于微博&#xff0c;在微博中可以发送文章。 求解这类题目&#xff0c;我们需要根据题目需求&#xff0c;利用面向对象的思想&#xff0c;先对需求做一个抽象&#xff0c;看看能…

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题&#xff0c;它会导致程序的内存占用逐渐增加&#xff0c;最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具&#xff0c;TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…

MYSQL01高级_Linux版安装、各级别字符集、字符集与比较规则、SQL大小写规范

文章目录 ①. MySQL - linux版安装②. 字符集的相关操作③. 各级别的字符集④. 字符集与比较规则(了解)⑤. SQL大小写规范⑥. sql_mode的合理设置 ①. MySQL - linux版安装 ①. 进入mysql官网,找到安装文件 ②. 将抽取出来的文件放在linux下的opt下 MySQL Community Serv…

视频在线压缩

video2edit 一款免费的在线视频编辑软件&#xff0c;可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址&#xff1a;在线视频编辑器和转换器 - 编辑&#xff0c;转换和压缩视频文件 打开视频压缩页面&#xff0c;上传想要压缩视频&#xff0c;支持MP4&…

ffmpeg单张图片生成固定时长的视频

ffmpeg -r 25 -f image2 -loop 1 -i fps_1.jpg -vcodec libx264 -pix_fmt yuv420p -s 1080*1920 -r 25 -t 30 -y fps.mp4这个命令将 fps_1.jpg 图片转换为一个 30 秒长的视频&#xff0c;分辨率为 1920x1080&#xff0c;帧率为 25 帧/秒&#xff0c;并使用 libx264 编码器进行压…

1.3 vue ui框架-element-ui框架

1 前言 ElementUI是一套基于VUE2.0的桌面端组件库&#xff0c;ElementUI提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。 ElementUI官网 https://element.eleme.io 2 安装 运行命令 cnpm i element-ui -S -S表示只在该项目下安装&#xff0c;不是全局安…

C++指针(二)

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 文章目录 1.数组指针 1.1数组指针的概念 1.2数组指针的用处 1.3数组指针的操作 1.4二维数组如何访问 1.5数组指针访问流程 1.6数组指针的练习题 2.指针数组 2.1指针数组的概念 2.2指针数组的用处 2…

使用Python,networkx绘制有向层级结构图

使用Python&#xff0c;networkx绘制有向层级结构图 1. 效果图2. 源码2.1 tree.txt2.2 pyNetworkx.py参考 上一篇介绍了&#xff1a;1. 使用Python&#xff0c;networkx对卡勒德胡赛尼三部曲之《群山回唱》人物关系图谱绘制 当前博客介绍&#xff1a; 2. 使用Python&#xff0c…

【C++】map和set——树形结构的关联式容器

目录 一、序列式容器和关联式容器 二、键值对pair 三、树形结构的关联式容器 3.1 set 3.1.1.set的模板参数 3.1.2. set的构造 3.1.3. set的迭代器 3.1.4. set的容量 3.1.5. set的操作 3.1.6. set的修改 3.1.7 set的使用示范 3.2 map 3.2.1. map的模板参数说明 3.…

解决android studio build Output中文乱码

1.效果如下所示&#xff1a; 代码运行报错的时候&#xff0c;Build Output报的错误日志中中文部分出现乱码&#xff0c;导致看不到到底报的什么错。 2.解决办法如下&#xff1a; 点击Android studio开发工具栏的Help-Edit Custom VM Options....&#xff0c;Android studio会…

【Acwing】差分矩阵

图1&#xff1a;a和b数组映射表 由于a是b的前缀和数组&#xff0c;因此改变b[ x1][ y1]之后&#xff0c;受到影响的a中元素如右半图所示 图2&#xff1a;求b数组的前缀和 #include<bits/stdc.h> using namespace std;int n,m,q; int a[1010][1010]; int b[1010][1010]…

使用Fabric创建的canvas画布背景图片,自适应画布宽高

之前的文章写过vue2使用fabric实现简单画图demo&#xff0c;完成批阅功能&#xff1b;但是功能不完善&#xff0c;对于很大的图片就只能显示一部分出来&#xff0c;不符合我们的需求。这就需要改进&#xff0c;对我们设置的背景图进行自适应。 有问题的canvas画布背景 修改后的…