深度学习之sklearn-user guide 1.4

Support vector machines (SVM),中文译名支持向量机,是监督学习的一种,可以用来做分类、回归以及异常检测。

支持向量机有如下优点:

  • 在高维空间中有效。
  • 假设样本的维度比样本数量还要多,它仍然是有效的。
  • 在决策函数汇总使用训练样本的一个子集,内存效率高
  • 不同的核函数都可作为决策函数。sklearn中提供了常见的核函数,但是也可以自定核函数。

在sklearn中支持向量机的输入支持或密集或稀疏的向量。假设你是用稀疏矩阵输入支持向量机中做预测,你需要先对稀疏矩阵做fit操作。如果要获得最佳的性能,可以在输入是稀疏矩阵时scipy.sparse.csr_matrix或者输入时密集矩阵时numpy.ndarray调节参数C.

分类 classification

在对一个数据集做多分类时,svc,NuSvc和LinearSVC都可以取得不错的性能。

其中svc和NuSVC是比较相近的方法,允许的参数上有细微差别,此外还有不同的数学方程式。LinearSVC是支持向量分类的另一种实现方法。

对于不同的分类器,svc,NuSVC和LinearSVC将两个array作为输入,其中array X的形状是[n_samples, n_features],代表的是训练样本;而array y的大小是[n_samples],反映的是分类标签(由于是监督学习,所以这里是人为标记分类好的)

在拟合后,模型可以用来预测新的值:

支持向量机的决策函数依赖于一些训练样本的子集,并将其称之为支持向量,也就是处于支持向量机最大分割超平面上的样本。

这些支持向量的性质可以在如下几个方法中找到:support_vectors_support_ and n_support:

多分类 Multi-class classification

在多分类中svc和NuSVC的实现方法是one-against-one(一对一)。也即假设n_class是类别个数,那么将训练n_class * (n_class - 1) / 2个分类器并用这些分类器进行二分类训练。为了和其他分类器提供一样的接口,参数decision_function_shape允许将‘一对一’分类的结果聚合到(n_samples, n_classes)大小的决策函数中。

另一方面,在多分类上LinearSVC实现的策略是'one-vs-the-rest'(一对其他),因此只需要训练n_class 个分类器。如果仅仅只有两个类别,那么则只需训练一个分类器或说模型。

要注意的是LinearSVC还是先了一种可选的多分类策略,由Crammer和Singer指定的所谓的多类支持向量机,它提供了一个可选参数multi_class='crammer_singer'。对于一对其他的方式,它是不支持的。在实际中,’一对其他‘更流行,因为所分类的结果通常是相近的,但这种方式的训练时间却会少许多。

在LinearSVC模型中使用‘一对其他’时属性coef_ 和intercept_ 分别代表[n_class, n_features][n_class],每一行的系数代表诸多'一对其他'分类器中的一个,而intercept_则代表某一类中的排列。

SVC 而言,在'一对一'形式下,不同属性的布局有些相关。假设核函数是线性的,coef_ 和intercept_与之前谈到过的LinearSVC有些相似,除了coef_ 的形状是[n_class * (n_class - 1) / 2, n_features] ,因为训练了多个二分类器。

dual_coef_较难掌握,其形状是[n_class-1, n_SV],列对应于n_class * (n_class - 1) / 2个‘一对一’分类器中的支持向量。n_class - 1 个分类器都用到了所有的支持向量。每行中的n_class - 1个条目对应于这些分类器的对偶系数。

得分与概率 Scores and probabilities

SVC模型中的decision_function会对每个样本每个分类的得分(如果是在二分类问题中,会对每个样本进行评分)。当构造函数选项概率设置为真时,将通过predict_probapredict_log_proba方法启用类成员概率估计。对于二分类问题,使用Platt缩放来校准概率:对SVM的分数进行logistic回归,并通过对训练数据的附加交叉验证进行拟合。

不用说,对于大数据集进行涉及Platt缩放的交叉验证操作的开销非常大。除此之外,概率估计可能与得分的估计不一致,因为得分的argmax值不一定与概率的argmax值相同。Platt方法同样存在理论上的问题。如果需要置信度,也不一定是概率。所以可以这样设置probability=False并使用decision_function而不是predict_proba。

不平衡问题 Unbalanced problems

在这种情况下,需要更多重要的信息或者是个别样本的关键字来确定类别。这时可以使用class_weight和sample_weight。

SVC在fit操作时实现了一个关键字class_weight。

这是一个形如{class_label : value}的字典,其中value是大于0的浮点数,乘上一个参数C使得class_label = C * value。

SVC、NuSVC 、SVR和OneClassSVM则在fit操作时通过关键字sample_weight实现了对单个样本的权值。与class_weight,也要设置一个参数C使得C * sample_weight[i]。

回归 Regression

将支持向量分类方法推广到回归问题的求解中。这种方法称为支持向量回归。

通过支持向量分类(如上所述)产生的模型仅依赖于训练数据的子集,因为用于建立模型的成本函数不关心超出边界的训练点。类似地,由支持向量回归产生的模型仅依赖于训练数据的子集,因为用于建立模型的成本函数忽略了接近模型预测的任何训练数据。

有三种不同的方式实现支持向量回归。SVR 、NuSVR、 LinearSVR。其中LinearSVR提供了比SVR快速的实现方式,但是它仅考虑了线性核函数。而NuSVR则实现了稍不同于SVR和LinearSVR的方程。

对于分类,fit方法的输入有x,y,仅在此时y才可以是浮点数。

密度估计和异常检查 Density estimation, novelty detection

利用单类SVM进行异常检测,即给定一组样本,检测该集合的软边界,从而将新点分类为属于该集合还是不属于该集合。这样的实现称为OneClassSVM。

此时,这是一种无监督学习,fit方法在此时仅仅接收一个参数x,因为此时没有类标签了。

复杂度 Complexity

支持向量机是强大的工具,但是随着训练向量数量的增加,其计算和存储需求迅速增加。SVM的核心是二次规划问题(QP),从训练数据的其余部分中分离支持向量。这个基于LIbSVM的实现的QP求解器的复杂度在 O(n_{features} \times n_{samples}^2) 和 O(n_{features} \times n_{samples}^3) 之间,取决于实际使用LIbVM缓存的效率(依赖于数据集),如果矩阵非常稀疏, n_{features}将会被在这个向量样本中非0特征的平均值取代。

要注意的是,在LinearSVM中利用liblinear实现的算法比在SVC中利用libsvm-based实现更加高效,并且几乎可以线性地扩展到数百万个样本和/或特征。

实用技巧 Tips on Practical Use

  • 避免数据复制 如果传递给某些方法的数据不是C顺序连续的,并且是双精度的,那么在调用底层C实现之前将复制它。通过检查其标志属性,可以检查给定的NUMPY数组是否为C邻接数组。对于LinearSVC(和LogisticRegression),作为numpy数组传递的任何输入将被复制并转换为libliline内部稀疏数据表示(双精度浮点数和非零分量的int32索引)。如果您想适应大规模的线性分类器,而不复制密集的块C连续的双精度数组作为输入,我们建议使用SGDClassifier类。目标函数可以被配置成与线性SVC模型几乎相同。
  • 内核缓存大小 对于 SVC, SVR, nuSVC和NuSVR, 内核缓存的大小对更大问题的运行时间有很大影响。如果有足够的RAM可用,建议将cache_size设置为比默认值200(MB)更高的值,例如500(MB)或1000(MB)
  • C值 默认值为1。如果你有很多嘈杂的观察,你应该减少它。它对应于更多的正则化估计。
  • 支持向量机算法不是尺度不变的,因此强烈建议对数据进行缩放。例如,缩放输入向量X上的每个属性为[0,1]或[-1,+1],或将其标准化为均值0和方差1。注意,必须对测试向量施加相同的缩放以获得有意义的结果。
  • NuSVC/OneClassSVM/NuSVR 中的参数nu近似训练误差和支持向量的分数。
  • 在SVC中,如果分类数据不平衡,设置 class_weight='balanced' 或尝试不同的惩罚参数C。
  • 底层线性SVC实现使用随机数生成器在拟合模型时选择特征。因此,对于相同的输入数据,结果略有不同,这并不少见。如果发生这种情况,尝试用较小的tol参数
  • 在如下情况LinearSVC(loss='l2', penalty='l1', dual=False)使用惩罚项L1,会产生稀疏解。只有一个子集的特征权重不同于零,并有助于决策函数。增加C产生一个更复杂的模型(选择更多的特征)。产生“空”模型(所有权重等于零)的C值可以使用l1_min_c参数。

核函数   Kernel functions

常见的核函数如下:

  1. linear: \langle x, x'\rangle
  2. polynomial: (\gamma \langle x, x'\rangle + r)^dd is specified by keyword degreer by coef0
  3. rbf: \exp(-\gamma \|x-x'\|^2)\gamma is specified by keyword gamma, must be greater than 0.
  4. sigmoid (\tanh(\gamma \langle x,x'\rangle + r)), where r is specified by coef0.

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: arcsketch-user-guide.pdf是一份用于指导用户使用ArcSketch软件的用户手册。ArcSketch是一款图形编辑工具,用户可以使用它创建、编辑和修改各种类型的图形,如曲线、弧形、圆形和多边形等。 用户手册中会详细介绍ArcSketch软件的安装和设置步骤,以及如何开始使用它来绘制图形。手册还会提供关于软件界面的说明,让用户熟悉软件的各个功能区域和工具。 在手册中,会对ArcSketch的绘图功能进行详细解释,并提供一些示例和说明,以帮助用户更好地理解如何使用各种工具来实现特定的效果。手册还会提供一些技巧和建议,以帮助用户提高绘图的质量和效率。 此外,用户手册还会介绍一些高级功能,如图层管理、颜色和渐变填充、橡皮擦和修饰等,让用户能够绘制更加复杂和详细的图形。 最后,手册还会提供一些常见问题和故障排除的解决方案,以帮助用户解决在使用ArcSketch软件时可能遇到的一些问题。 总的来说,arcsketch-user-guide.pdf是一份详尽的用户手册,旨在指导用户正确地使用ArcSketch软件,并帮助他们充分利用该软件的各种功能来创建精美的图形。 ### 回答2: arcsketch-user-guide.pdf是一个用户指南,提供有关ArcSketch软件的详细信息和操作指导。ArcSketch是一款矢量绘图工具,常用于制作专业的地图、图表和其他图形。 这个用户指南包含了软件的安装和设置说明,以及主要功能的介绍。首先,它解释了如何安装ArcSketch软件并进行基本的设置。然后,它详细介绍了软件的界面布局和各个工具的功能。 用户指南中还包括了绘制基本形状如线条、多边形和圆形的方法。它解释了如何使用各种绘图工具进行精确的绘制和编辑。同时,还介绍了如何使用不同的填充和线条样式来增强绘图效果。 此外,用户指南还提供了一些高级绘图技巧和技术,如图层管理、数据导入和导出等。它还包含了关于符号化和标注图形的信息,以及如何创建图例和添加地理参考的说明。 用户指南以简洁明了的语言和图像进行解释,使用户能够迅速上手并充分利用ArcSketch的功能。通过按照指南中提供的步骤和提示,用户可以轻松创建出高质量、具有地理信息的图形。 总的来说,arcsketch-user-guide.pdf是一份非常有用的资源,可以帮助用户学习和使用ArcSketch软件,使他们能够以简单且专业的方式进行矢量绘图。 ### 回答3: arcsketch-user-guide.pdf 是一份用户指南,用于说明ArcSketch的使用方法和功能。ArcSketch是一款数字绘图软件,可用于绘制各种图形和图表。 用户指南中列出了软件的主要功能和操作步骤。首先,它介绍了软件的界面和工具栏,以便用户能够熟悉软件的布局和各个工具的作用。然后,它解释了如何开始一个新的绘图项目,并指导用户如何添加和编辑不同类型的图形,如线条、矩形、椭圆等。 用户指南还提供了一些高级功能的介绍,如图层管理、填充和纹理、渐变和不透明度等。这些功能可以帮助用户创建更加丰富多样的图形效果。 除了基本的绘图功能外,用户指南还介绍了如何使用ArcSketch的分组和对齐工具来整理和调整图形的位置关系。它还介绍了如何应用变换和变形工具,以及如何添加文本和标签来说明图表的内容。 在使用过程中,用户指南还提供了一些常见问题的解答和技巧建议,以帮助用户更好地使用软件。此外,用户指南还附带了一些实例和练习题,帮助用户更好地掌握软件的使用技巧。 总之,arcsketch-user-guide.pdf 是一份详细的用户指南,旨在帮助用户快速掌握ArcSketch的各项功能和操作技巧。无论是初学者还是有一定经验的用户,都可以通过阅读这份指南来提高其在数字绘图方面的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值