31 Oct

《新理解矩阵2》:矩阵是什么?

上一篇文章中我从纯代数运算的角度来讲述了我对矩阵的一个理解,可以看到,我们赋予了矩阵相应的运算法则,它就在代数、分析等领域显示出了巨大作用。但是纯粹的代数是不足够的,要想更加完美,最好是找到相应的几何对象能够与之对应,只有这样,我们才能够直观地理解它,以达到得心应手的效果。

几何理解

我假设读者已经看过孟岩的《理解矩阵》三篇文章,所以更多的细节我就不重复了。我们知道,矩阵A

$$\begin{pmatrix}a_{11} & a_{12} \\ a_{21} & a_{22}\end{pmatrix}$$

事实上由两个向量$[a_{11},a_{21}]^T$和$[a_{12},a_{22}]^T$(这里的向量都是列向量)组成,它描述了一个平面(仿射)坐标系。换句话说,这两个向量其实是这个坐标系的两个基,而运算$y=Ax$则是告诉我们,在$A$这个坐标系下的x向量,在$I$坐标系下是怎样的。这里的$I$坐标系就是我们最常用的直角坐标系,也就是说,任何向量(包括矩阵里边的向量),只要它前面没有矩阵作用于它,那么它都是在直角坐标系下度量出来的。

点击阅读全文...

5 Feb

小数的二进制表示

也许中学老师会告诉5、10、20等等的十进制数字怎么化成二进制数字,但又没有老师告诉你怎么将十进制的0.1变成二进制的小数呢?

我们将一个十进制整数化为二进制是这样操作的:在十进制的计算法则中,将十进制数除以2,得到商和余数;把商除以2,得到商和余数;...重复下去,直到商为0。然后把每次得到的余数按倒序排列,就得到了二进制数字。比如6:

$$\begin{aligned}6\div 2=3...0 \\ 3\div 2=1...1 \\ 1\div 2=0...1\end{aligned}$$

倒过来就是110。这就是二进制中的6了。

点击阅读全文...

22 Sep

一个人的数学建模:碎纸复原

suizhiji

suizhiji

笔者一直无心参加数学竞赛,主要原因是我喜欢能够持续深入地思考一个问题,而不想被竞赛的时间限制所束缚。我并不是一个机灵的人,因此很难有竞赛所需要的“灵光一现”。大概一个多星期前全国数学建模的预赛开始了,我也饶有兴致地关注了一下,并且留意到了B题这道有趣的题目——碎纸复原,然后就开始思考算法了。那时候应该是9月13日中午,我开始了一个人的数学建模,“一个人”并不是说我一个人就组成一支队了,而是我一个人自由高效地在构思算法、摸索代码,不为比赛,只为达到目的,那种兴奋一直持续到了当晚凌晨三点。

点击阅读全文...

26 Aug

fashion-mnist的gan玩具

fashion_mnist_demo

fashion_mnist_demo

mnist的手写数字识别数据集一直是各种机器学习算法的试金石之一,最近有个新的数据集要向它叫板,称为fashion-mnist,内容是衣服鞋帽等分类。为了便于用户往fashion-mnist迁移,作者把数据集做成了几乎跟mnist手写数字识别数据集一模一样——同样数量、尺寸的图片,同样是10分类,甚至连数据打包和命名都跟mnist一样。看来fashion mnist为了取代mnist,也是拼了,下足了功夫,一切都做得一模一样,最大限度降低了使用成本~这叫板的心很坚定呀。

叫板的原因很简单——很多人吐槽,如果一个算法在mnist没用,那就一定没用了,但如果一个算法在mnist上有效,那它也不见得在真实问题中有效~也就是说,这个数据集太简单,没啥代表性。

fashion-mnist的github:https://github.com/zalandoresearch/fashion-mnist/

点击阅读全文...

24 May

It is time.

终于可以缓一缓了~~

有留意科学空间的朋友可能发现这段时间更新比较缓慢,这一切还得从今年寒假说起...

今年一月底,由于各种原因,结合自己的兴趣,我找了一份实习工作,内容是Python编程。工作是在华南理工大学的论坛上发布的,说的比较简洁,我也比较简洁地投了简历过去,想不到收到回复了,也被录用了。二月上班,进去之后,才发现原来公司还是一家国内比较知名的电商企业,我的主要工作是数据挖掘...虽然我有一点Python的经验,但是数据挖掘基本上不在行的,所以只能够边工作边学习,疯狂恶补数据挖掘的知识。在这个过程中,我学会了很多关于数据挖掘的东西,要知道,在这之前,我不知道什么叫“特征”,什么是“逻辑回归”、“SVM”...那时候真是万千无知。

点击阅读全文...

4 Aug

文本情感分类(二):深度学习模型

语言处理

语言处理

《文本情感分类(一):传统模型》一文中,笔者简单介绍了进行文本情感分类的传统思路。传统的思路简单易懂,而且稳定性也比较强,然而存在着两个难以克服的局限性:一、精度问题,传统思路差强人意,当然一般的应用已经足够了,但是要进一步提高精度,却缺乏比较好的方法;二、背景知识问题,传统思路需要事先提取好情感词典,而这一步骤,往往需要人工操作才能保证准确率,换句话说,做这个事情的人,不仅仅要是数据挖掘专家,还需要语言学家,这个背景知识依赖性问题会阻碍着自然语言处理的进步。

点击阅读全文...

18 Jan

当大数据进入厨房:让大数据教你做菜!

说在前面

美食(图片来源于互联网)

美食(图片来源于互联网)

在空间侧边栏的笔者的自我介绍中,有一行是“厨房爱好者”,虽然笔者不怎么会做菜,但确实,厨房是我的一个爱好。当然,笔者的爱好很多,数学、物理、天文、计算机等,都喜欢,都想学,弄到多而不精。在之前的文章中也已经提到过,数据挖掘也是我的一个爱好,而当数据挖掘跟厨房这两个爱好相遇了,会有什么有趣的结果吗?

笔者正是做了这样一个事情:从美食中国的家常菜目录下面,写了个简单的爬虫,抓取了一批菜谱数据下来,进行简单的数据分析。(在此对美食中国表示衷心感谢。选择美食中国的原因是它的数据比较规范。)数据分析在我目前公司的高性能服务器做,分析起来特别舒服~~

这里共收集了18209个菜谱,共包含了9700种食材(包括主料、辅料、调料,部分可能由于命名不规范等原因会重复)。当然,这个数据量相对于很多领域的大数据标准来说,实在不值一提。但是在大数据极少涉及的厨房,应该算是比较多的了。

点击阅读全文...

20 Feb

熵的形象来源与熵的妙用

在拙作《“熵”不起:从熵、最大熵原理到最大熵模型(一)》中,笔者从比较“专业”的角度引出了熵,并对熵做了诠释。当然,熵作为不确定性的度量,应该具有更通俗、更形象的来源,本文就是试图补充这一部分,并由此给出一些妙用。

熵的形象来源

我们考虑由0-9这十个数字组成的自然数,如果要求小于10000的话,那么很自然有10000个,如果我们说“某个小于10000的自然数”,那么0~9999都有可能出现,那么10000便是这件事的不确定性的一个度量。类似地,考虑$n$个不同元素(可重复使用)组成的长度为$m$的序列,那么这个序列有$n^m$种情况,这时$n^m$也是这件事情的不确定性的度量。

$n^m$是指数形式的,数字可能异常地大,因此我们取了对数,得到$m\log n$,这也可以作为不确定性的度量,它跟我们原来熵的定义是一致的。因为
$$m\log n=-\sum_{i=1}^{n^m} \frac{1}{n^m}\log \frac{1}{n^m}$$

读者可能会疑惑,$n^m$和$m\log n$都算是不确定性的度量,那么究竟是什么原因决定了我们用$m\log n$而不是用$n^m$呢?答案是可加性。取对数后的度量具有可加性,方便我们运算。当然,可加性只是便利的要求,并不是必然的。如果使用$n^m$形式,那么就相应地具有可乘性。

点击阅读全文...