精华内容
下载资源
问答
  • 【单选题】石灰的主要成分【多选题】玻璃按照功能分类【填空题】目前,使用最广泛的计算机所用的逻辑部件 ____...【单选题】以下变量名不合法的( )【单选题】以下不是python的注释方式( )【填空题】密度指( ...

    【单选题】石灰的主要成分

    【多选题】玻璃按照功能分类

    【填空题】目前,使用最广泛的计算机所用的逻辑部件是 ____。

    【多选题】材料按照功能不同分为

    【单选题】已知在计算机中存储了“大学计算机基础”这样一串汉字,它们所占用的存储空间为( )二进制位。

    【单选题】以下变量名不合法的是( )

    【单选题】以下不是python的注释方式是( )

    【填空题】密度是指( )状态下; 表观密度是指( )状态下; 堆积密度是指( )状态下。

    【单选题】"世界很大"+“人很渺小”的输出结果是:( )

    【单选题】建筑装饰是为保护建筑物的主题结构,完善建筑物的物理性能,使用功能和美化建筑物,采用装饰装修材料或饰物对建筑物的( )进行的各种处理过程。

    【多选题】根据材料来源不同可以分为

    【多选题】颗粒级配有几种形式

    【多选题】常见的装饰玻璃有

    【单选题】熟石灰在使用前必须( )防止过火石灰的危害

    【论述题】查阅资料论述计算机的发展史,并且阐述对计算机发展领域有突出贡献的人物及具体贡献,提交方式,纸质作业的形式提交

    【判断题】热反射玻璃的太阳能总透射比和遮蔽系数小,因而特别适用于炎热地区,而不适合用于寒冷地区。

    【多选题】在混凝土组成材料中水泥和水硬化前的作用( ),硬化后的作用( )

    【单选题】以下哪个选项不是Python语言的保留字?

    【多选题】材料按照使用部位分为

    【多选题】粗骨料按照产源分类

    【填空题】材料的组成包括( ),( ),( )

    【填空题】砂是指颗粒粒径在( )mm以下的颗粒

    【填空题】从产品的种类来说,陶瓷制品可以分为( ),( ),( )三大类

    【多选题】安全玻璃包括

    【填空题】陶瓷的主要组成材料包括( )( )两种。

    【单选题】s="0123456789",以下哪个选项表示”0123“?

    【单选题】x=2,y=3,执行x,y=y,x之后,x和y的值分别是什么?

    【多选题】材料的力学性质

    【单选题】建筑通常认为是建筑物和构筑物的总称。

    【填空题】文件传输协议的英文简称是____ 。 (5.0分)

    【多选题】混凝土按照用途分类

    【判断题】5层及5层以上建筑物外开窗,面积大于1.5m2的窗玻璃或玻璃底边离最终装修面小于500mm的落地窗,幕墙,观光电梯及其外围护,楼梯,阳台,平台走廊的栏板和中庭内栏板等容易遭受撞击或冲击而造成人体伤害的部位都必须安装安全玻璃。

    【单选题】以下赋值语句中合法的是( )

    【填空题】砂的粗细程度用( )来表示。

    【填空题】计算机工资管理是计算机在 ____ 方面的应用。

    【其它】获得用户输入的一个整数N,计算并输出N的32次方。

    【多选题】材料按照化学组成分为

    【单选题】玻璃是以石英砂,纯碱,石灰石,长石等为主要原料,经过1550-1600°C高温熔融,成型,并经快速冷却而制成的固体材料,其组成比较复杂,主要成分为

    【填空题】在个人计算机中,应用最普遍的字符编码是____码 。

    【单选题】按照化学成分分类,钢筋混凝土属于

    【填空题】在计算机中,用____ 个二进制位组成一个字节。

    【单选题】len("hello world!")的输出结果为( )

    【单选题】建筑物有哪些?

    【多选题】内墙面砖的种类繁多,主要分为

    【多选题】材料和水有关的性质

    【多选题】常用的建筑装饰陶瓷有

    【单选题】亲水性材料,润湿角为

    【简答题】基础课实践大纲.doc

    【单选题】建筑石膏是

    【单选题】密实度和孔隙率的关系

    展开全文
  • 1、引言什么是聚类?我们通常说,机器学习任务可以分为两类,一类是...分类模型:目标变量是离散的分类型变量;回归模型:目标变量是连续性数值型变量。无监督学习:只有数据,无标签,即训练集没有标注目标变量。...
    b44be0acbd5588c1165333ab6f2592fd.png

    1、引言

    什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习。监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入、特征、自变量)与标签(又称输出、目标、因变量)之间关系的学习方式。监督学习模型又可以分为两类,分类和回归。分类模型:目标变量是离散的分类型变量;回归模型:目标变量是连续性数值型变量。无监督学习:只有数据,无标签,即训练集没有标注目标变量。常见的无监督学习算法有聚类,由计算机自己找出规律,把有相似属性的样本放在一组,每个小组也称为簇。简单来说,聚类是指根据相似数据点的属性或特征将它们分组在一起。例如,如果我们有一组人的收入和支出,我们可以将他们分为以下几类:
    • 高收入,高消费

    • 高收入,低消费

    • 低收入,低消费

    • 低收入,高消费

    2、K-means聚类

    聚类算法有很多,最流行的聚类算法之一是 k-means。让我们了解 k-means 算法是如何工作的,以及该算法可能达不到预期的情况。K-means有一个很著名很清晰的解析,就是牧师-村民模型。有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个居民又去了离自己最近的布道点……就这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定了下来。根据上面这个故事,我们可以简单来概括一下K-means算法的一般步骤,K-Means聚类步骤是一个循环迭代的算法,非常简单易懂:Step1:确定类别数量K,K值人为设定,在训练数据分布范围内,随机选择K个点作为初始中心点;Step2:按照距离最小原则,把所有数据点分到距离最近的中心点所在的类中;step3:每类中有若干个观数据点,计算K个类中所有数据点的均值,作为下一次迭代的中心点;Step4:重复step2、step3步,直到收敛(每个数据点所属类别或中心点不再改变),聚类过程结束。下面我们通过一组图来直观了解一下K-means算法迭代过程:491b4254b06ffb27e4032238ae117e12.png初始状态随机生成了3个聚类中心点,然后分别计算每一个数据点对这些中心的距离,把距离最短的那个当成自己的类别。这样每个点都会对应一个中心点,可以看到聚类的并不准确,红色聚类中心太偏,没有数据点属于该类,在代码中,我们会再次随机更新这个聚类中心。0f1fe61200ad48ccdf31741e9834ddbd.png第一次迭代经过一次迭代之后,聚类中心向该类别的数据点的中心移动。 f9117c78f015e3fc2772b2fdeeec3db5.png收敛状态收敛状态,聚类中心移动到每个类别数据点中心,继续迭代中心点位置也不在变化。

    3、思考

    (1)初始中心点怎么确定?如果我们用欧式距离评估数据点与聚类中心的距离,那么在k-means算法步骤中,相当于我们一直在寻求一种最优的分割方式,使得总平方误差(SSE)最小,即数据点与其聚类中心的欧式距离最小。在迭代过程中,从两个方面来降低SSE:第一,把样本点分到最近邻的簇中,这样会降低SSE的值;第二,用均值更新聚类中心,进一步的减小了SSE(以MSE为目标函数,求导可知最优解即为平均数,以MAE为目标函数,求导可知最优解为中位数,因此如果采用曼哈顿距离进行聚类,更新聚类中心时,我们就需要采用中位数而不是平均数更新)。这样的重复迭代、不断优化,会找到局部最优解(局部最小的SSE),如果想要找到全局最优解需要找到合理的初始聚类中心。那合理的初始中心怎么选?方法有很多,譬如先随便选个点作为第1个初始中心C1,接下来计算所有样本点与C1的距离,距离最大的被选为下一个中心C2,直到选完K个中心。这个算法叫做K-Means++,可以理解为 K-Means的改进版,它可以能有效地解决初始中心的选取问题,但无法解决离群点问题。总的来说,最好解决办法还是多尝试几次,即多设置几个不同的初始点,从中选最优,也就是具有最小SSE值的那组作为最终聚类。(2)K值怎么确定?如果K过大,样本划分就越细,每个簇的聚合程度就越高,误差平方和SSE自然就越小。所以不能单纯像选择初始点那样,用不同的K来做尝试,选择SSE最小的聚类结果对应的K值,毫无疑问,SSE最小时必然对应K的最大值。假设在我们的原始数据中,其客观存在的类别数量为M,当K值小于M时,随着K值的增大,SSE会快速下降,而当K值大于M时,随着K值增大,SSE下降幅度会减小。如下图所示,M取值事先未知,K=2开始尝试,发现K=3时,SSE大幅下降,K=4时,SSE下降幅度稍微小了点,K=5时,下降幅度迅速降低,再后面就越来越平缓。所以我们认为M取值应该为4,因此可以将K设定为4。 e68a88d01dbc002c724276268bc21b7c.png这种方法叫做“手肘法”,因为SSE和K的关系图就像是手肘的形状,而肘部对应的K值就被认为是数据的真实聚类数。

    4、总结

    k-means 聚类概念听起来不错,它易于理解,相对容易实现,并且可以应用于很多用例中。最重要的一点是,算法复杂度不高,仅仅为O(s*n),s为迭代次数,而一般情况下,k-means算法收敛速度很快,迭代次数不超过10次,因此在数据集较大时,k-means应用起来非常方便。但也有一些缺点和局限性需要我们注意。从上文的算例来看,k-means 算法似乎运行得很好,但是,如果你仔细观察,你会发现所有创建的簇都是圆形的。这是因为聚类中心是使用平均值迭代更新的。现在,考虑下面的例子,其中点的分布不是圆形的。如果我们对这些数据使用 k-means 聚类,你认为会发生什么?它仍然试图以循环方式对数据点进行分组。那不太好!k-means 无法识别正确的分类:8c7f0f2235622596bad19e69060bd574.png因此,我们需要一种不同的方法来将数据点分配给聚类中心。因此,我们不应该再使用基于距离的模型,而是应该使用基于分布的模型。下一篇文章,我们再来看,高斯混合模型(GMM)是如何来克服K-means算法的缺点。 922c0dc4122cb168e13f4a3cbe5d4a98.png
    展开全文
  • 【多选题】以下属于分类算法的应用?【判断题】Python程序代码需要强制缩进。【单选题】有一组供用户标识为感兴趣或不感兴趣的网页,可被机器学习用来解决网页过滤问题,选择下列特征中哪个是通过训练这些网页学来的?...

    【判断题】在函数内部可以通过关键字def来定义全局变量。

    【多选题】以下属于分类算法的应用是?

    【判断题】Python程序代码需要强制缩进。

    【单选题】有一组供用户标识为感兴趣或不感兴趣的网页,可被机器学习用来解决网页过滤问题,选择下列特征中哪个是通过训练这些网页学来的?

    【判断题】查看变量类型的Python内置函数是type____

    【单选题】以下关于模块的描述,错误的是( )。

    【其它】

    【单选题】人工智能研究的物质基础是( )。

    【判断题】max函数max____可以接收任意多个参数,并返回最大的那个。

    【单选题】Python中,用于获取用户输入的命令为:

    【单选题】以下关于函数的描述,正确的是( )

    【多选题】以下哪些是人工智能时代的基础?

    【判断题】Python内置函数sum____用来返回数值型序列中所有元素之和。

    【简答题】分组名单和每组招标文件以附件形式上传

    【判断题】Python语言是一种编译型高级程序设计语言。

    【判断题】如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为Fasle。

    【简答题】简述计算机的几大应用领域—列举5项即可。

    【判断题】Python程序可以在不同的操作系统中运行。

    【判断题】Python2.0版本与Python3.0版本可以互相兼容。

    【简答题】请阅读以下代码,并写出1秒中内超级终端的输出内容 void Main (void) { Target_Init(); GUI_Init(); OSInit(); Send_D7light_Sem = OSSemCreate(0); OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5); OSStart(); } void Task_1 (void *pdata) { INT32U i,flag=0; Timer1_Init(); OSTaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2[(STACKSIZE*3) - 1], 56); for(;;) { flag++; if(flag=2){ OSTimeDly(240); Uart_Printf("This is TASK1. %x\n" ,flag); OSSemPost(Send_D7light_Sem); flag=0; } } } void Task_2 (void *pdata) { INT8U err,flag=0; for(;;) { OSSemPend(Send_D7light_Sem, 0, &err); Uart_Printf("This is TASK2. \n");

    【判断题】Python内置函数max____用来返回序列中的最大元素。

    【单选题】( )函数以一系列列表作为参数,将列表中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

    【单选题】关于函数参数传递中,形参与实参的描述错误的是( )。

    【判断题】Python程序代码是开放的,加密困难。

    【判断题】Python内置函数min____用来返回序列中的最小元素。

    【单选题】关于函数的下列说法不正确的是:

    【多选题】大数据分析的基本模式()

    【单选题】关于自定义函数的下列说法不正确的是:

    【单选题】在Python中,以下关于函数的描述错误的是哪一项?

    【判断题】PythonManuals是Python的模块文档。

    【单选题】以下四个人工智能的应用领域中,与其他三个不同的是:

    【判断题】Python内置函数open____用来打开或创建文件并返回文件对象。

    【单选题】对于结构化数据表述正确的是()。

    【单选题】被誉为计算机科学与人工智能之父的是

    【其它】作业1:数据库连接 连接属性 显示“产品”表的所有记录 作业2:按类别查询 作业3:添加“类别” 作业4:调用存储过程 作业5:Page212 例7-5

    【多选题】以下关于机器学习说法正确的是?

    【其它】物业管理实务课程设计总结.docx 以组为单位填写并上传

    【单选题】( )函数是指直接或间接调用函数本身的函数

    【单选题】以下关于Python的说法中正确的是哪一项?

    【判断题】Python内置函数len____可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。

    【判断题】Python语言是一种解释型高级程序设计语言。

    【判断题】IDLE是Python的命令控制台,可以执行Python命令。

    【判断题】要调用一个函数,需要知道函数的名称和参数。

    【简答题】简述计算机的特点

    【判断题】Python语言是一种面向对象的高级程序设计语言。

    【判断题】PythonModuleDocs是Python的帮助文档。

    【简答题】说出下列指令的寻址方式,并用语言阐述该指令的意思。(建议分值 50% ) ( 1 ) ADD R0,R1,#256 ( 2 ) SUB R0,R2,R3,LSL #1 ( 3 ) STRB R0,[R1] ( 4 ) STR R0,[R1],#8 ( 5 ) LDR R0,[R1],R2 ( 6 ) LDR R0,[R1,#8] ( 7 ) LDR R0,[R1],R2,LSR #3 ( 8 ) LDMFD R13!,{R0,R4-R12,PC}

    【判断题】Python程序运行速度要比C程序运行快。

    【单选题】在读写文件之前,必须通过以下哪个方法创建文件对象:

    【填空题】1AFH=_______________D

    展开全文
  • svm

    2012-08-19 17:08:20
    缩放的目的防止方差大的随机变量主导分类过程。我们可以把这些数据称为“训练数据”,希望我们的支持向量机能够通过一个超平面正确的把他们分开。超平面的数学形式可以写作 。 其中超平面上的点,垂直于超...

    我们考虑以下形式的样本点

    \{ (\mathbf{x}_1, c_1), (\mathbf{x}_2, c_2), \ldots, (\mathbf{x}_n, c_n)\}

    其中ci为1或−1 --用以表示数据点属于哪个类. \mathbf{x}_i是一个p- (统计学符号),或n- (计算机科学符号)维向量,其每个元素都被缩放到[0,1]或[-1,1].缩放的目的是防止方差大的随机变量主导分类过程。我们可以把这些数据称为“训练数据”,希望我们的支持向量机能够通过一个超平面正确的把他们分开。超平面的数学形式可以写作

    \mathbf{w}\cdot\mathbf{x} - b=0

    其中\mathbf{x}是超平面上的点,\mathbf{w}是垂直于超平面的向量。

    根据几何知识,我们知道\mathbf{w}向量垂直于分类超平面。加入位移b的目的是增加间隔。如果没有b的话,那超平面将不得不通过原点,限制了这个方法的灵活性。

    由于我们要求最大间隔,因此我们需要知道支持向量以及(与最佳超平面)平行的并且离支持向量最近的超平面。我们可以看到这些平行超平面可以由方程族:

    \mathbf{w}\cdot\mathbf{x} - b=1,
    \mathbf{w}\cdot\mathbf{x} - b=-1

    来表示。 由于\mathbf{w}只是超平面的法向量,长度未定,是一个变量,所以等式右边的1和-1只是为计算方便而取的常量,其他常量只要互为相反数亦可。

    如果这些训练数据是线性可分的,那就可以找到这样两个超平面,在它们之间没有任何样本点并且这两个超平面之间的距离也最大。通过几何不难得到这两个超平面之间的距离是2/|w|,因此我们需要最小化 |w|。同时为了使得样本数据点都在超平面的间隔区以外,我们需要保证对于所有的i满足其中的一个条件

    \mathbf{w}\cdot\mathbf{x_i} - b \ge 1\qquad\mathrm{or}
    \mathbf{w}\cdot\mathbf{x_i} - b \le -1\qquad\mathrm{}

    这两个式子可以写作:

    c_i(\mathbf{w}\cdot\mathbf{x_i} - b) \ge 1, \quad 1 \le i \le n.\qquad\qquad(1)
    具体可以看
    http://blog.csdn.net/v_july_v/article/details/7624837

     

     

     

    在数学中,超平面n 维欧氏空间中余维度等于一的线性子空间。这是平面中的直线、空间中的平面之推广。

    F 为域(为初等起见,可考虑 F=\mathbb{R})。n 维空间 F^n 中的超平面是由方程

    a_1 x_1 + \cdots + a_n x_n = b

    定义的子集,其中 a_1, \ldots, a_n \in F 是不全为零的常数。

    在线性代数的脉络下,F-矢量空间 V 中的超平面是指形如

    \{v \in V : f(v) = 0 \}

    的子空间,其中 f: V \to F 是任一非零的线性映射。

    在射影几何中,同样可定义射影空间 \mathbb{P}^n 中的超平面。在齐次坐标 (x_0: \cdots : x_n) 下,超平面可由以下方程定义

    a_0 x_0 + \cdots + a_n x_n = 0

    其中 a_0, \ldots, a_n 是不全为零的常数。

     

     

     

    生存?还是毁灭?——哈姆雷特

    可分?还是不可分?——支持向量机

    之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,怎么办呢?是否有某种方法,让线性不可分的数据变得线性可分呢?

    有!其思想说来也简单,来用一个二维平面中的分类问题作例子,你一看就会明白。事先声明,下面这个例子是网络早就有的,我一时找不到原作者的正确信息,在此借用,并加进了我自己的解说而已。

    例子是下面这张图:

    clip_image001

    我们把横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类。试问能找到一个线性函数把两类正确分开么?不能,因为二维空间里的线性函数就是指直线,显然找不到符合条件的直线。

    但我们可以找到一条曲线,例如下面这一条:

    clip_image002

    显然通过点在这条曲线的上方还是下方就可以判断点所属的类别(你在横轴上随便找一点,算算这一点的函数值,会发现负类的点函数值一定比0大,而正类的一定比0小)。这条曲线就是我们熟知的二次曲线,它的函数表达式可以写为:

    clip_image002[5]

    问题只是它不是一个线性函数,但是,下面要注意看了,新建一个向量y和a:

    clip_image002[7]

    这样g(x)就可以转化为f(y)=<a,y>,你可以把y和a分别回带一下,看看等不等于原来的g(x)。用内积的形式写你可能看不太清楚,实际上f(y)的形式就是:

    g(x)=f(y)=ay

    在任意维度的空间中,这种形式的函数都是一个线性函数(只不过其中的a和y都是多维向量罢了),因为自变量y的次数不大于1。

    看出妙在哪了么?原来在二维空间中一个线性不可分的问题,映射到四维空间后,变成了线性可分的!因此这也形成了我们最初想解决线性不可分问题的基本思路——向高维空间转化,使其变得线性可分。

    而转化最关键的部分就在于找到x到y的映射方法。遗憾的是,如何找到这个映射,没有系统性的方法(也就是说,纯靠猜和凑)。具体到我们的文本分类问题,文本被表示为上千维的向量,即使维数已经如此之高,也常常是线性不可分的,还要向更高的空间转化。其中的难度可想而知。

    <!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->小Tips:为什么说f(y)=ay是四维空间里的函数?
    大家可能一时没看明白。回想一下我们二维空间里的函数定义
      g(x)=ax+b
    变量x是一维的,为什么说它是二维空间里的函数呢?因为还有一个变量我们没写出来,它的完整形式其实是
      y=g(x)=ax+b

      y=ax+b

    看看,有几个变量?两个。那是几维空间的函数?(作者五岁的弟弟答:五维的。作者:……)
    再看看
    f(y)=ay
    里面的y是三维的变量,那f(y)是几维空间里的函数?(作者五岁的弟弟答:还是五维的。作者:……)

     

    用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,想象一下,我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数

    f(x)=<w,x>+b

    注意向量的右上角有个 ’哦。它能够将原问题变得可分。式中的 w和x都是2000维的向量,只不过w是定值,而x是变量(好吧,严格说来这个函数是2001维的,哈哈),现在我们的输入呢,是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x,然后求这个变换后的向量x与向量w的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。

    你发现了什么?我们其实只关心那个高维空间里内积的值,那个值算出来了,分类结果就算出来了。而从理论上说, x是经由x变换来的,因此广义上可以把它叫做x的函数(有一个x,就确定了一个x,对吧,确定不出第二个),而w是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w 和x的值,就有一个确定的f(x)值与其对应。这让我们幻想,是否能有这样一种函数K(w,x),他接受低维空间的输入值,却能算出高维空间的内积值<w,x>?

    如果有这样的函数,那么当给了一个低维空间的输入x以后,

    g(x)=K(w,x)+b

    f(x)=<w,x>+b

    这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了(再次提醒,这回的g(x)就不是线性函数啦,因为你不能保证K(w,x)这个表达式里的x次数不高于1哦)。

    万幸的是,这样的K(w,x)确实存在(发现凡是我们人类能解决的问题,大都是巧得不能再巧,特殊得不能再特殊的问题,总是恰好有些能投机取巧的地方才能解决,由此感到人类的渺小),它被称作核函数(核,kernel),而且还不止一个,事实上,只要是满足了Mercer条件的函数,都可以作为核函数。核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。几个比较常用的核函数,俄,教课书里都列过,我就不敲了(懒!)。

    回想我们上节说的求一个线性分类器,它的形式应该是:

    clip_image002[9]

    现在这个就是高维空间里的线性函数(为了区别低维和高维空间里的函数和向量,我改了函数的名字,并且给w和x都加上了 ’),我们就可以用一个低维空间里的函数(再一次的,这个低维空间里的函数就不再是线性的啦)来代替,

    clip_image002[11]

    又发现什么了?f(x’) 和g(x)里的α,y,b全都是一样一样的!这就是说,尽管给的问题是线性不可分的,但是我们就硬当它是线性问题来求解,只不过求解过程中,凡是要求内积的时候就用你选定的核函数来算。这样求出来的α再和你选定的核函数一组合,就得到分类器啦!

    明白了以上这些,会自然的问接下来两个问题:

    1. 既然有很多的核函数,针对具体问题该怎么选择?

    2. 如果使用核函数向高维空间映射后,问题仍然是线性不可分的,那怎么办?

    第一个问题现在就可以回答你:对核函数的选择,现在还缺乏指导原则!各种实验的观察结果(不光是文本分类)的确表明,某些问题用某些核函数效果很好,用另一些就很差,但是一般来讲,径向基核函数是不会出太大偏差的一种,首选

     

     

     

     

     

     

     

     

     

     

    我们有属于两个类别的样本点(并不限定这些点在二维空间中)若干,如图,

    image

    圆形的样本点定为正样本(连带着,我们可以把正样本所属的类叫做正类),方形的点定为负例。我们想求得这样一个线性函数(在n维空间中的线性函数):

    g(x)=wx+b

    使得所有属于正类的点x+代入以后有g(x+)≥1,而所有属于负类的点x-代入后有g(x-)≤-1(之所以总跟1比较,无论正一还是负一,都是因为我们固定了间隔为1,注意间隔和几何间隔的区别)。代入g(x)后的值如果在1和-1之间,我们就拒绝判断。

    求这样的g(x)的过程就是求w(一个n维向量)和b(一个实数)两个参数的过程(但实际上只需要求w,求得以后找某些样本点代入就可以求得b)。因此在求g(x)的时候,w才是变量。

    你肯定能看出来,一旦求出了w(也就求出了b),那么中间的直线H就知道了(因为它就是wx+b=0嘛,哈哈),那么H1和H2也就知道了(因为三者是平行的,而且相隔的距离还是||w||决定的)。那么w是谁决定的?显然是你给的样本决定的,一旦你在空间中给出了那些个样本点,三条直线的位置实际上就唯一确定了(因为我们求的是最优的那三条,当然是唯一的),我们解优化问题的过程也只不过是把这个确定了的东西算出来而已。

    样本确定了w,用数学的语言描述,就是w可以表示为样本的某种组合:

    w=α1x12x2+…+αnxn

    式子中的αi是一个一个的数(在严格的证明过程中,这些α被称为拉格朗日乘子),而xi是样本点,因而是向量,n就是总样本点的个数。为了方便描述,以下开始严格区别数字与向量的乘积和向量间的乘积,我会用α1x1表示数字和向量的乘积,而用<x1,x2>表示向量x1,x2的内积(也叫点积,注意与向量叉积的区别)。因此g(x)的表达式严格的形式应该是:

    g(x)=<w,x>+b

    但是上面的式子还不够好,你回头看看图中正样本和负样本的位置,想像一下,我不动所有点的位置,而只是把其中一个正样本点定为负样本点(也就是把一个点的形状从圆形变为方形),结果怎么样?三条直线都必须移动(因为对这三条直线的要求是必须把方形和圆形的点正确分开)!这说明w不仅跟样本点的位置有关,还跟样本的类别有关(也就是和样本的“标签”有关)。因此用下面这个式子表示才算完整:

    w=α1y1x12y2x2+…+αnynxn (式1)

    其中的yi就是第i个样本的标签,它等于1或者-1。其实以上式子的那一堆拉格朗日乘子中,只有很少的一部分不等于0(不等于0才对w起决定作用),这部分不等于0的拉格朗日乘子后面所乘的样本点,其实都落在H1和H2上,也正是这部分样本(而不需要全部样本)唯一的确定了分类函数,当然,更严格的说,这些样本的一部分就可以确定,因为例如确定一条直线,只需要两个点就可以,即便有三五个都落在上面,我们也不是全都需要。这部分我们真正需要的样本点,就叫做支持(撑)向量!(名字还挺形象吧,他们“撑”起了分界线)

    式子也可以用求和符号简写一下:

     

    clip_image002

    因此原来的g(x)表达式可以写为:

    clip_image002[4]

    注意式子中x才是变量,也就是你要分类哪篇文档,就把该文档的向量表示代入到 x的位置,而所有的xi统统都是已知的样本。还注意到式子中只有xi和x是向量,因此一部分可以从内积符号中拿出来,得到g(x)的式子为:

    clip_image002[6]

    发现了什么?w不见啦!从求w变成了求α。

     

     

     

    现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的。就像下图这样:

     

    image

    圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了)。现在想象我们有另一个训练集,只比原先这个训练集多了一篇文章,映射到高维空间以后(当然,也使用了相同的核函数),也就多了一个样本点,但是这个样本的位置是这样的:

    image

     

    就是图中黄色那个点,它是方形的,因而它是负类的一个样本,这单独的一个样本,使得原本线性可分的问题变成了线性不可分的。这样类似的问题(仅有少数点线性不可分)叫做“近似线性可分”的问题。

    以我们人类的常识来判断,说有一万个点都符合某种规律(因而线性可分),有一个点不符合,那这一个点是否就代表了分类规则中我们没有考虑到的方面呢(因而规则应该为它而做出修改)?

    其实我们会觉得,更有可能的是,这个样本点压根就是错误,是噪声,是提供训练集的同学人工分类时一打瞌睡错放进去的。所以我们会简单的忽略这个样本点,仍然使用原来的分类器,其效果丝毫不受影响。

    但这种对噪声的容错性是人的思维带来的,我们的程序可没有。由于我们原本的优化问题的表达式中,确实要考虑所有的样本点(不能忽略某一个,因为程序它怎么知道该忽略哪一个呢?),在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距离,是非负的,像上面这种有噪声的情况会使得整个问题无解。这种解法其实也叫做“硬间隔”分类法,因为他硬性的要求所有样本点都满足和分类平面间的距离必须大于某个值。

    因此由上面的例子中也可以看出,硬间隔的分类法其结果容易受少数点的控制,这是很危险的(尽管有句话说真理总是掌握在少数人手中,但那不过是那一小撮人聊以自慰的词句罢了,咱还是得民主)。

    但解决方法也很明显,就是仿照人的思路,允许一些点到分类平面的距离不满足原先的要求。由于不同的训练集各点的间距尺度不太一样,因此用间隔(而不是几何间隔)来衡量有利于我们表达形式的简洁。我们原先对样本点的要求是:

     

    clip_image002

    意思是说离分类面最近的样本点函数间隔也要比1大。如果要引入容错性,就给1这个硬性的阈值加一个松弛变量,即允许

    clip_image002[5]

    因为松弛变量是非负的,因此最终的结果是要求间隔可以比1小。但是当某些点出现这种间隔比1小的情况时(这些点也叫离群点),意味着我们放弃了对这些点的精确分类,而这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是使分类面不必向这些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。显然我们必须权衡这种损失和好处。好处很明显,我们得到的分类间隔越大,好处就越多。回顾我们原始的硬间隔分类对应的优化问题:

    clip_image002[7]

    ||w||2就是我们的目标函数(当然系数可有可无),希望它越小越好,因而损失就必然是一个能使之变大的量(能使它变小就不叫损失了,我们本来就希望目标函数值越小越好)。那如何来衡量损失,有两种常用的方式,有人喜欢用

    clip_image002[9]

    而有人喜欢用

    clip_image002[11]

    其中l都是样本的数目。两种方法没有大的区别。如果选择了第一种,得到的方法的就叫做二阶软间隔分类器,第二种就叫做一阶软间隔分类器。把损失加入到目标函数里的时候,就需要一个惩罚因子(cost,也就是libSVM的诸多参数中的C),原来的优化问题就变成了下面这样:

    clip_image002[13]

    这个式子有这么几点要注意:

    一是并非所有的样本点都有一个松弛变量与其对应。实际上只有“离群点”才有,或者也可以这么看,所有没离群的点松弛变量都等于0(对负类来说,离群点就是在前面图中,跑到H2右侧的那些负样本点,对正类来说,就是跑到H1左侧的那些正样本点)。

    二是松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。

    三是惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。

    四是惩罚因子C是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。

    五是尽管加了松弛变量这么一说,但这个优化问题仍然是一个优化问题(汗,这不废话么),解它的过程比起原始的硬间隔问题来说,没有任何更加特殊的地方。

    从大的方面说优化问题解的过程,就是先试着确定一下w,也就是确定了前面图中的三条直线,这时看看间隔有多大,又有多少点离群,把目标函数的值算一算,再换一组三条直线(你可以看到,分类的直线位置如果移动了,有些原来离群的点会变得不再离群,而有的本来不离群的点会变成离群点),再把目标函数的值算一算,如此往复(迭代),直到最终找到目标函数最小时的w。

    啰嗦了这么多,读者一定可以马上自己总结出来,松弛变量也就是个解决线性不可分问题的方法罢了,但是回想一下,核函数的引入不也是为了解决线性不可分的问题么?为什么要为了一个问题使用两种方法呢?

    其实两者还有微妙的不同。一般的过程应该是这样,还以文本分类为例。在原始的低维空间中,样本相当的不可分,无论你怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点,就简单有效得多啦。

    本节中的(式1)也确实是支持向量机最最常用的形式。至此一个比较完整的支持向量机框架就有了,简单说来,支持向量机就是使用了核函数的软间隔线性分类法。

    展开全文
  • STT2860Group6Project1-源码

    2021-02-14 23:35:00
    (d)在小标题中创建一个名为LargeMall的分类变量,当购物中心被封闭且大于1000000 SF或露天且大于500000 SF时,该变量取一个值。 (e)与封闭式房屋相比,露天物业仍欠多少钱(以千计)? (f)每个州的华盛顿...
  • 来自CSDN论坛   大口木瓜...  <br />2,以下哪个概念和公孙龙的《指物论》中的“指”字含义相近?  a,变量;b,数组;c,对象;d,指针。  <br />3,蔺相如,司马相如;魏无忌,
  • K8扫描专用字典25W条 (全部整合25W 当然也有分类从那收集来的100多W条数据 经过以下算法整理出来的 第一种情况 带#的 这些一般数据库防下载的 比如 www.xxx.com/#data.mdb 网站数据库 如果不把#替换...
  • java 面试题 总结

    2009-09-16 08:45:34
    然而可以创建一个变量,其类型一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也抽象类为。取而代之,在子类中...
  • 简介 一个用于提取简体中文字符串中省,市和区并...样本分类绘制函数,通过额外传入一个样本的分类信息,能够在地图上以不同的颜色画出属于不同分类的样本散点图,以下代码以“省”作为类别信息绘制分类散点图(可以...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

以下哪个变量是分类变量