1、全连接层就是线性层。
2、全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
3、SVM一般指支持向量机,是一类按监督学习方式对数据进行二元分类的广义线性分类器,也可改为多分类。
4、使用SVM也可代替CNN网络的全连接层,即CNN提取特征后利用SVM进行分类,如图所示:
CNN有两个卷积层,两个全连接层,其中卷积层卷积核大小为5 * 5,步长为1,池化层卷积核大小为2 * 2,第一个全连接层输出h_fc1转化为特征向量输入SVM。 feature map大小变化如表所示:
5、CNN架构大部分时间都在做提取特征的任务,而最后一步的(Softmax)分类算法其实是很简单,和之前的机器学习并无二致,两者(特征提取+分类算法)一起构成了完整的端到端模型。
6、SVM是线性分类器,softmax是非线性分类器。
直观理解,线性分类器就是1根或多根直线对空间进行切割分类:
非线性分类器模型分界面可以是曲面或者是超平面的组合。
7、线性分类器和非线性分类器比较
线性分类器可解释性好,计算复杂度较低,判别简单、易实现、且需要的计算量和存储量小,不足之处是模型的拟合效果相对弱些。
非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
常见的线性分类器有:LR,贝叶斯分类,单层感知机,线性回归,SVM(线性核)等。
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM(支持向量机)
SVM的优点:
1.在高维中表现良好。在现实世界中有无限维度(不仅仅是2D和3D)。例如,图像数据、基因数据、医学数据等具有更高的维数,支持向量机在这方面是有用的。基本上,当特征/列的数量较多时,SVM表现良好。
2.类可分离时的最佳算法(当两个类的实例可以通过直线或非线性轻松分隔时)。为了描述可分离的类,让我们举个例子(这里以线性分离为例,通过绘制抛物线等,类也可以是非线性可分离的)。在第一个图中,您无法轻易分辨X是属于类1还是类2,但是在情况2中,您可以轻易判断出X属于类2。因此,在第二种情况下,类是线性可分离的。
3. 离群值的影响较小。
4. SVM适用于极端情况下的二元分类。
SVM的缺点:
1. 慢:对于较大的机器学习数据集,需要大量时间来处理。
2. 重叠类的性能不佳:重叠类的情况下效果不佳。
3. 选择适当的超参数很重要:这将允许足够的泛化性能。
4. 选择适当的核函数可能比较麻烦。
SVM的应用范围:
Bag of words应用程序(许多特征和列),语音识别数据,图像分类(非线性数据),医学分析(非线性数据),文本分类(许多特征)。
朴素贝叶斯
朴素贝叶斯的优点:
1.实时预测:速度非常快,可以实时使用。
2. 可通过大型数据集进行扩展。
3. 对无关特征不敏感。
4. 在朴素贝叶斯中可以有效地进行多类预测。
5. 具有高维数据的良好性能(特征数量很大)。
朴素贝叶斯的缺点:
1.特征的独立性不成立:朴素贝叶斯的基本假设是每个特征对结果做出独立且平等的贡献。但是,大多数情况下不满足此条件。
2. 糟糕的估算器:不要太认真看待预测的概率输出。
3. 训练数据应该很好地代表总体:如果没有一起出现类别标签和某个属性值(例如,class =“ No”,shape =“ Overcast”),则后验概率为零。因此,如果训练数据不能代表总体,那么朴素贝叶斯将无法很好地工作(通过平滑技术可以解决此问题)。
朴素贝叶斯的应用范围:
朴素贝叶斯可用于文本分类(可以预测多个类别,并且不介意处理不相关的特征)、垃圾邮件过滤(识别垃圾邮件)、情感分析(在社交媒体分析中识别正面和负面情绪),推荐系统(用户下一步将购买什么)。
逻辑回归
逻辑回归的优点:
1.易于实现
2. 有效
3. 不需要缩放特征:不需要缩放输入特征(也可以使用缩放特征,但是不需要缩放)。
3. 不需要调整超参数。
逻辑回归的缺点:
1.非线性数据(例如图像数据)性能不佳。
2. 具有不相关和高度相关的特征的性能较差(删除相似或相关的特征和不相关的特征)。
3. 不是很强大的算法,很容易被其他算法超越。
4. 高度依赖正确的数据表示。所有重要的变量/特性都应该被识别,这样才能很好地工作。
逻辑回归的应用范围:
最好是任何二元分类问题(它也可以执行多类分类,但最好是二元的)。如果您的输出类有两个结果,则可以使用它,例如癌症检测问题,客户借贷时是否违约,客户是否流失,电子邮件是否为垃圾邮件等。
随机森林
随机森林的优点:
1.随机森林可以去相关树。它选取训练样本,给每棵树一个特征子集(假设训练数据是[1,2,3,4,5,6],那么一棵树将得到训练数据子集[1,2,3,2,6,6])。注意,训练数据的大小保持不变,两个数据的长度都是6,在随机采样的训练数据中,2和6是重复的。每棵树都根据它的特征进行预测。在这种情况下,树1只能访问特性1、2、3和6,因此它可以根据这些特征进行预测。其他一些树会访问特征1、4、5,所以它会根据这些特征进行预测。如果特征高度相关,那么这个问题可以在随机森林中解决。
2. 减少误差:随机森林是一个决策树的集合。为了预测某一行的结果,随机森林从所有树中获取输入,然后预测结果。这保证了树的个体误差最小化,并减少了总体方差和误差。
3. 在不平衡数据集上的良好性能:它还可以处理不平衡数据中的错误(一个类占多数,另一个类占少数)。
4. 处理大量数据:它可以处理大量的数据与更高维度的变量。
5. 正确处理缺失的数据:它可以很好地处理缺失值。因此,如果模型中有大量丢失的数据,它也可以提供良好的结果。
6. 离群值的影响很小:由于最后的结果是通过查询许多决策树得出的,所以某些离群值的数据点不会对随机森林产生很大的影响。
7. 没有过度拟合的问题:在随机森林中,只考虑特征的一个子集,最终结果取决于所有的树。所以有更好的泛化能力和更少的过度拟合。
8. 有助于提取特征重要性(我们可以将其用于特征选择)。
随机森林的缺点:
1. 特征需要具有一定的预测能力,否则将无法正常工作。
2. 树木的预测需要特征不相关。
3. 出现为黑匣子:很难知道发生了什么。您最多可以尝试使用不同的参数和随机种子来更改结果和性能。
随机森林的应用范围:
信用卡违约(欺诈客户/非欺诈客户),识别患者,电子商务网站的推荐系统等。
决策树
决策树的优点:
1. 不需要归一化或缩放数据。
2. 处理缺失值:缺失值不会产生重大影响。
3. 易于向非技术团队成员解释。
4. 轻松可视化
5. 自动特征选择:不相关的特征不会影响决策树。
决策树的缺点
1. 容易过度拟合。
2. 对数据敏感。如果数据稍有变化,结果可能会在很大程度上变化。
3. 训练决策树需要更长的时间。
决策树的应用范围:
识别产品的买家,预测违约的可能性,哪一种策略可以使利润最大化,寻找成本最小化的策略,哪一种特性对吸引和留住客户最重要(是购物的频率,是频繁的折扣,还是产品组合等),机器故障诊断(持续测量压力、振动和其他测量,并在故障发生前进行预测)等。
XGBoost
XGBoost的优点:
1. 所需的特征工程较少(不需要数据缩放,数据归一化,也可以很好地处理缺失值)。
2. 可以发现特征的重要性(它输出每个特征的重要性,可用于特征选择)。
3. 离群值具有最小的影响。
4. 可以很好地处理大型数据集。
5. 良好的执行速度。
6. 出色的模型表现(在大多数Kaggle比赛中获胜)。
7. 不太容易过拟合。
XGBoost的缺点:
1. 解释困难,可视化困难。
2. 如果参数未正确调整,则可能过度拟合。
3. 由于存在太多超参数,因此难以调整。
XGBoost的应用领域:
可用于任何分类问题。如果特征太多、数据集太大、存在离群值和缺失值,并且不想进行太多特征工程,则XGBoost特别有用。它几乎赢得了所有比赛的胜利,因此这是解决任何分类问题时必须牢记的一种算法。
k-NN(K最近邻)
k-NN的优点:
1. 简单易懂,易于实现。
2. 没有关于数据的假设(例如,在线性回归的情况下,我们假设因变量和自变量线性相关,在朴素贝叶斯中,我们假设特征彼此独立,但是k-NN不对数据做任何假设)。
3. 不断扩展的模型:当暴露于新数据时,它会更改以适应新数据点。
4. 多类问题也可以解决。
5. 一个超级参数:在选择第一个超级参数时,K-NN可能需要一些时间,但剩下的参数是一致的。
k-NN的缺点:
1. 对于大型机器学习数据集,速度较慢。
2. 维度诅咒:在具有大量特征的机器学习数据集上效果不佳。
3. 必须对数据进行缩放。
4. 在不平衡数据上效果不佳。因此,在使用k-NN之前,要么欠采样多数类,要么过采样少数类,使得具有一个平衡的数据集。
5.对离群值敏感。
6.不能很好地处理缺失值。
k-NN的应用范围:
当机器学习数据集较小且特征数较少时,可用于任何分类问题,使得k-NN占用的计算时间较少。如果您不知道数据的形状以及输出和输入的关联方式(是否可以用直线,椭圆或抛物线等分隔类),则可以使用k-NN。
动作识别 (action recognition) : 是对每个输入视频进行分类,识别出视频中人物做出的动作。即输入视频序列,得到视频对应的类别;
时序动作检测 (temporal action detection) :任务的输入是一个未经裁剪的视频 (untrimmed video),即在这个视频里有些帧是没有动作发生的,因此需要检测出动作开始和结束的区间,并判断区间内动作的类别。即输入未经裁剪的视频序列,得到动作出现的区间和对应的类别;
时空动作检测 (spatio-temporal action detection) :相比于时序动作检测略有不同,时空动作检测不仅需要识别动作出现的区间和对应的类别,还要在空间范围内用一个包围框 (bounding box)标记出人物的空间位置。
各种机器学习分类算法的优缺点 (baidu.com)
CNN+SVM实现多分类_平凡的久月的博客
理解图神经网络:从CNN到GNN - 知乎 (zhihu.com)