大家好
上周写了匿名方法一文,很多读者,很高兴,相信我们已经从大伙的回复中,对.NET又有了更深刻的认识.
好,现在说主题,各类数据库都有相应更新本表top n的方案.现在我一一举例
首先看表结构如下:
数据库以及表创建命令初始化数据库语句
2 id varchar(256) NOT NULL,
3 name varchar(256) NULL,
4 age int NULL)
2 insert into student values('002','lxx',21);
3 insert into student values('003','wly',3);
4 insert into student values('004','jcj',60);
5 insert into student values('005','wss',60);
6 insert into student values('006','xsm',60);
7 insert into student values('007','lcf',60);
8 insert into student values('008','wjy',35);
9 insert into student values('009','hyf',35);
10 insert into student values('010','lwl',12);
表格结构如下:
ID | Name | Age |
001 | wfg | 20 |
002 | lxx | 21 |
003 | wly | 3 |
004 | jcj | 60 |
005 | wss | 60 |
006 | xsm | 60 |
007 | lcf | 60 |
008 | wjy | 35 |
009 | hyf | 35 |
010 | hwl | 12 |
首先说下MSSQL
2 update top(5) student set age = 100 order by name;
3 --方案2ok
4 update student set age = 100 where id in (select top 5 id from student order by name );
5 select top(5) * from student order by name;
很成功,干得漂亮!
接下来我们看看MYSQL呢,拭目以待...
2 select * from student order by name limit 5;
Good news, MySql干得不错,
接下来我们再看看oracle呢?<
转载请注明出处:http://www.cnblogs.com/ymingjingr/p/4271742.html
目录
机器学习基石笔记3——在何时可以使用机器学习(3)(修改版)
机器学习基石笔记6——为什么机器可以学习(2)
机器学习基石笔记7——为什么机器可以学习(3)
机器学习基石笔记8——为什么机器可以学习(4)
机器学习基石笔记9——机器可以怎样学习(1)
机器学习基石笔记10——机器可以怎样学习(2)
机器学习基石笔记11——机器可以怎样学习(3)
机器学习基石笔记12——机器可以怎样学习(4)
机器学习基石笔记13——机器可以怎样学得更好(1)
机器学习基石笔记14——机器可以怎样学得更好(2)
机器学习基石笔记15——机器可以怎样学得更好(3)
机器学习基石笔记16——机器可以怎样学得更好(4)
五、Training versus Testing
训练与测试。
5.1 Recap and Preview
回顾以及预览。
首先回顾一下上一章学过的内容,学习在何种情况下是可行的。
在可学习的数据来自于一个统一的分布(distribution),且假设空间中的假设函数为有限个的情况下,其学习流程图如图5-1所示。
图5-1 一种可行的学习流程图
此图和前几章中的流程图最大的不同是加入了一个模块,准确的说是一种假设情况,假设训练数据样本和未知的测试样本来自同一的分布(这点尤为重要现有的大部分机器学习算法都从这点出发,好像迁移学习不是),并且假设空间的假设是有限的情况下,即|H| = M,M是有限的值,在训练样本N足够大,假设空间中的所有的假设都会遵循PAC准则,确保,每一个假设函数都可以满足近似相等的性质,因此可以通过算法在这些假设空间中找一个的假设,同样PAC也保证了。因此可以说机器学习在这种情况下是可行的。(训练样本和测试样本满足同分布,假设空间有限,并且训练数据足够大)
接着回顾一下之前四章的内容:
第一章介绍了存在一个未知的目标函数f,机器学习的任务是找出一个假设函数g,使得假设g和目标函数f很接近,即 ,用第四章的概念可以解释为在测试时的错误率接近零,即。
第二章介绍了在训练时使假设函数g和目标函数f很接近就可以了,用第四章的概念可以解释为训练时的错误率接近零,即 。
第三章介绍了一种机器学习最基础、最核心的方法:使用批量的数据和监督式的学习来做二元分类。
第四章介绍了在假设空间不是太多,即假设函数有限的情况下,训练时的错误率和测试时的错误率很接近,即 。
从以上各章节中可以看出将机器学习分为了两个主要问题来解决:
- 是否能确保是足够接近的?这是连接第一章和第二章的桥梁。
- 如何使得足够小?这是第二章的内容,当然后面的章节还会继续介绍其他的技巧。
在第四章中介绍的假设空间的大小M与上述两个问题存在何种关系?通过一个表格进行分析,如表5-1所示。
表5-1 M的大小与两个条件的关系
M很小的时候 | M很大的时候 | |
第一个问题 | 满足, M小的时候,两者不相等的几率变小了 | 不满足, M大的时候,两者不相等的几率变大了 |
第二个问题 | 不满足,在M变小时,假设的数量变小,算法的选择变小,可能无法找到 接近0的假设。 | 满足,在M变大时,假设的数量变大,算法的选择变大,找到 接近0的假设的几率变大。 |
显然M趋于无穷大时,表现非常不好,如何解决这个问题呢?
需要寻找一个小于无限大M的替代值,并且这个值还和假设空间有关系,用 表示。以后的几章中讨论如何在M为无限大时,保证。
5.2 Effective Number of Lines
线的有效数量。
第四章的结尾求出了在有限假设空间中 的上限,当时,使用联合上限(union bound),实际不等式的上界被放大了太多。假设在假设空间中包含无限多的假设函数,则此上限为无穷大,而真正合理的上界是不应该大于1(因为是个概率问题,其最大值也不会超过1)。
造成这一问题的原因是什么呢?很容易想到这个联合上界是不是过于宽松了。对,问题确实出在此处,学过集合的同学肯定都知道,两个集合的或集写成两个集合相加的形式时,一定要减去它俩的交集。而我们这里的问题出在,这几个集合不仅相交,而且交集很大,却没有被减掉,因此上界过于宽松。
继续回到假设空间的问题上,两个假设函数出现完全相同坏数据的可能性很大,如上一章表4-3的h2和h3就出现了几个相同的坏数据。举个简单的例子,在二维平面上进行二元线性分类,假设两条直线h1和h2很接近,那么就不难得出两种假设的坏数据也基本重叠,其实这种数据的分布应为图5-2所示。
图5-2 不好数据的分布
如果可以将这无限大的假设空间分成有限的几类,按照样本数据划分方式进行分类,如是 和 被定义为两种不同的类别。这一思路的原因个人认为有两个:一是这本身就是一个数据分类错误率的问题,从数据分类方式着手也很切要害;二是训练样本必然是有限的,分类的方式也是有限的,可以将无限的问题转换成有限的问题。
先从最简单的分一个样本点着手,假设是一个二元线性分类问题,一个样本的例子比较容易理解,如图 5-3所示。
图5-3 单一训练样本分类问题
一个样本点分类可以有几种方式?无非两种,该样本为正,或者为负。而假设空间中的所有假设或者称之为直线,都只能分属于这两种情况。
继续观察两个样本的情况,如图5-4所示。
没有评论:
发表评论