2015年2月10日星期二

Oracle Update TOP N Issue, who can answer it - 王富贵

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Oracle Update TOP N Issue, who can answer it - 王富贵  阅读原文»

大家好

上周写了匿名方法一文,很多读者,很高兴,相信我们已经从大伙的回复中,对.NET又有了更深刻的认识.

好,现在说主题,各类数据库都有相应更新本表top n的方案.现在我一一举例

首先看表结构如下:

数据库以及表创建命令初始化数据库语句

1 CREATE TABLE student(
2 id varchar(256) NOT NULL,
3 name varchar(256) NULL,
4 age int NULL)

1 insert into student values('001','wfg',20);
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);

表格结构如下:

IDNameAge
001wfg20
002lxx21
003wly3
004jcj60
005wss60
006xsm60
007lcf60
008wjy35
009hyf35
010hwl12

首先说下MSSQL

1 --方案1失败
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呢,拭目以待...

1 update student set age = 100 order by name limit 5;
2 select * from student order by name limit 5;

Good news, MySql干得不错,

接下来我们再看看oracle呢?<

机器学习基石笔记5――为什么机器可以学习(1) - 杜少  阅读原文»

转载请注明出处:http://www.cnblogs.com/ymingjingr/p/4271742.html

目录

机器学习基石笔记1——在何时可以使用机器学习(1)

机器学习基石笔记2——在何时可以使用机器学习(2)

机器学习基石笔记3——在何时可以使用机器学习(3)(修改版)

机器学习基石笔记4——在何时可以使用机器学习(4)

机器学习基石笔记5——为什么机器可以学习(1)

机器学习基石笔记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很接近就可以了,用第四章的概念可以解释为训练时的错误率接近零,即

第三章介绍了一种机器学习最基础、最核心的方法:使用批量的数据和监督式的学习来做二元分类。

第四章介绍了在假设空间不是太多,即假设函数有限的情况下,训练时的错误率和测试时的错误率很接近,即

从以上各章节中可以看出将机器学习分为了两个主要问题来解决:

  1. 是否能确保是足够接近的?这是连接第一章和第二章的桥梁。
  2. 如何使得足够小?这是第二章的内容,当然后面的章节还会继续介绍其他的技巧。

在第四章中介绍的假设空间的大小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所示。

没有评论:

发表评论