向量范数与矩阵范数(L0, L1, L2)

2019-05-17
阅读 2 分钟
14.5k
在实数域中,数的大小和两个数之间的距离是通过绝对值来度量的。在解析几何中,向量的大小和两个向量之差的大小是“长度”和“距离”的概念来度量的。为了对矩阵运算进行数值分析,我们需要对向量和矩阵的“大小”引进某种度量。即范数是具有“长度”概念的函数。范数是绝对值概念的自然推广。

时序数据处理中DNN和RNN的区别

2019-05-04
阅读 2 分钟
6k
如果固定了就是前四天输入,预测第五天,普通的全连接完全可以解决这个问题,无非是拟合一个四元的高阶函数罢了。但是大多数的时序问题,输入是变长的,而且非常长。有时输出也要求是变长一个序列。网络的形状都是固定的,故而普通的全连接无法解决输入输出的变长问题。

智能数据库之智能调参

2019-04-26
阅读 2 分钟
3k
本文是SIGMOD论文解读。Automatic Database Management System Tuning Through Large-scale Machine Learning是CMU教授Andy Pavlo以及其phd学生Dana等人在SIGMOD17发表的智能调参论文,称之为ottertune。该论文引用了另一篇paper“Tuning database configuration parameters with iTuned”发表于VLDB2009。我个人认为从核...

深度强化学习DQN(Deep Q Network)原理及例子:如何解决迷宫问题,附源码

2019-02-11
阅读 20 分钟
24.3k
目前,强化学习中很火的当属Q-Learning了,关于Q-Learning的具体介绍请参加我上一篇文章。从上一篇文章中,我们可以看到,Q table可以看做Q-Learning的大脑,Q table对应了一张state-action的表,但在实际应用中,state和action往往很多,内存很难装下Q table,因此需要用神经网络替代Q table。

如何在C++程序中调用lightgbm (How to use lightgbm in C++ program)

2018-12-28
阅读 6 分钟
11.9k
Lightgbm以轻量著称,所以在实际的C++程序中,常常需要使用。但是官方文档并没有介绍如何在C++中调用lightgbm接口,也没有任何例子可供参考,网上的文档也基本没有。这篇文章中我介绍下如何在C++中调用lightgbm。有任何问题请联系zhangtiey@gmail.com

LSM compaction 流程

2018-11-16
阅读 3 分钟
3.4k
对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事了,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找,代价很高。为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压缩,通过这种方式,来删除掉一些不再有效的KV数据,减小数据规模,减少...

强化学习(Reinforcement Learning)入门很好的例子

2018-06-28
阅读 10 分钟
13.4k
Step-By-Step TutorialThis tutorial introduces the concept of Q-learning through a simple but comprehensive numerical example. The example describes an agent which uses unsupervised training to learn about an unknown environment. You might also find it helpful to compare this example with the acco...

机器学习之One-Hot Encoding详解

2018-06-14
阅读 2 分钟
6.3k
看到One-Hot-Encoding发现网上大多数说明都是来自于同一个例子,最后结果感觉出的好突兀,因此这里总结一下。 很多机器学习任务中,特征并不总是连续值,有可能是分类值。 考虑以下三个特征: {代码...} 如果将上述特征用数字表示,效率会高很多。例如: ["male", "from US", "uses Internet Explorer"] 表示为[0, 1, 3]...

机器学习中为什么要做归一化normalization

2018-06-14
阅读 1 分钟
5k
其中preprocessing.LabelEncoder().fit_transform(x)就是做normalize encoding,上面的程序输入如下:

MySQL内核技术之“Opt_trace_系列”

2018-05-14
阅读 2 分钟
2.1k
可以看出Opt_trace是用来记录相关操作的,以便帮助开发人员进行调试。其并不具有功能性作用。先来看一下MySQL中是怎么使用Opt_trace的。在主执行函数mysql_execute_command中(位于sql_parse.cc):

MySQL内核技术之"LIKE"和"IN"

2017-11-22
阅读 1 分钟
2.4k
在MySQL中,像LIKE、IN、>、= 这些操作符都属于Item类型(在Postgres中,这些都是expression)。本节中,我们详细说说LIKE和IN是怎么实现的。

MySQL内核技术之“WHERE条件”

2017-10-26
阅读 6 分钟
2.3k
JOIN::optimize()-->make_join_select()-->JOIN_TAB::set_condition()-->

MySQL内核技术之“索引查询”

2017-10-22
阅读 4 分钟
3.2k
MySQL的索引查询内部使用的是quick range结构。先让我们看看调用流程: {代码...} quick_range_seq_next最重要的作用是设置范围查询的上下边界: {代码...} 上面函数中,设置上下边界的的代码: {代码...} 执行完quick_range_seq_next,开始真正执行读取操作:read_range_first {代码...} 这里会设置结束边界:set_end_r...

MySQL内核技术之"查询流程"

2017-10-16
阅读 1 分钟
3.3k
handler是由table调用的,常用的方式是table->file->**,这里的file实际上就是handler。而table在optimizer中被赋值的: TABLE_LIST *tl= select_lex->leaf_tables;,因为用了select_lex,就表明一个THD所有的操作都是共享table的。

MySQL内核技术之“聚合操作”

2017-10-15
阅读 4 分钟
1.9k
本文可以结合我的上一篇文章“结果发送”结合来看。因为上一篇文章着重针对COUNT操作的结果发送,文本继续以COUNT操作为例阐述MySQL的聚合操作。

MySQL内核技术之“结果发送”

2017-10-10
阅读 2 分钟
2.8k
注意:上面的end_send_group实际上是evaluate_join_record()中的这行代码:rc= (*qep_tab->next_select)(join, qep_tab+1, 0);

MySQL内核技术之“pthead局部变量”

2017-09-30
阅读 4 分钟
3.3k
MySQL使用了称之为psi/pfs的一系列文件和结构来进行performance监控。Psi全称为performance schema interface,pfs全称为performance storage。

MySQL内核技术之"线程操作"

2017-09-29
阅读 17 分钟
3.5k
注意上面代码中最后的位置: my_thread_create(thread, attr, pfs_spawn_thread, psi_arg);这个函数直接调用pthread_create(&thread->thread, attr, func, arg)创建pthead。