对于计算机专业的学生而言, 数学语言的运用通常有一定困难. 这是因为很多人在学习数学的时候, 只是想办法应付考试, 而没有思考内在的涵义. 特别是书上的定义, 我们看看也就过了, 而没有去想: 为什么这样定义? 换种定义方式可以吗? 实际上, 定义比定理难写, 前者要考虑前瞻性; 定理比证明难写.
针对计算机专业, 特别是机器学习方向, 比较详细的数学语言描述见 数学表达式魔训
同时, 强烈建议大家换个作者的视角, 把《离散数学》重新学一下, 抄一遍其中的定义、定理也是极好的.
一般性的准则如下:
- 理论应该完备
- 符号要保持同一风格
- 重要结论称为定理 theorem, 定理前面打辅助的叫作引理 lemma, 定理后面的尾巴叫推论 corollary, 附属于算法的叫 property.
这里用一个例子来说明如何写定义.
Definition 1 In a formal context
T
=
(
O
,
A
,
R
)
T = (O, A, R)
T=(O,A,R),
C
1
=
(
E
1
,
I
1
)
C_1 = (E_1, I_1)
C1=(E1,I1) and
C
2
=
(
E
2
,
I
2
)
C_2 = (E_2, I_2)
C2=(E2,I2) are two concepts. Define
C
1
≤
C
2
⇔
E
1
⊆
E
2
⇔
I
2
⊆
I
1
C_1 \le C_2 \Leftrightarrow E_1 \subseteq E_2 \Leftrightarrow I_2 \subseteq I_1
C1≤C2⇔E1⊆E2⇔I2⊆I1, so
C
2
C_2
C2 is a super-concept of
C
1
C_1
C1,
C
1
C_1
C1 is a sub-concept of
C
2
C_2
C2, which is called partial order between concepts.
Definition 2 (sub-concept) Let C 1 = ( E 1 , I 1 ) C_1 = (\mathbf{E}_1, \mathbf{I}_1) C1=(E1,I1) and C 2 = ( E 2 , I 2 ) C_2 = (\mathbf{E}_2, \mathbf{I}_2) C2=(E2,I2) be two concepts of formal context T = ( O , A , R ) T = (\mathbf{O}, \mathbf{A}, \mathbf{R}) T=(O,A,R). C 1 C_1 C1 is called a sub-concept of C 2 C_2 C2 (denoted by C 1 ≤ C 2 ) C_1 \le C_2) C1≤C2) iff E 1 ⊆ E 2 \mathbf{E}_1 \subseteq \mathbf{E}_2 E1⊆E2.
其中, Definition 1 为学生的版本, Definition 2 则为我修改后的版本. 修改后版本有如下优点:
- 需要定义的是 sub-concept, 因此将它放到紧跟 Definition 2 的括号内;
- 集合用粗体, 如: E \mathbf{E} E;
- 阐明了 C 1 C_1 C1, C 2 C_2 C2 与 T T T 的关系;
- 其它的定义 (super-concept 与 partial order) 挪到定义之后, 即一个定义只阐明一样东西;
- 使用 Let … be, iff (即 if and only if) 等标准数学语言;
- 更为简洁. 数学语言就是应该言简意赅.
如果想看一堆的定义, 可参见
Frequent pattern discovery with tri-partition alphabets
A hierarchical model for test-cost-sensitive decision systems