绪论
1.1 大数据与数学
通过微积分可以描述运动的事物,描述一种变化的过程。由于微积分是研究变化规律的方法,所以只要是与变化、运动有关的研究,都或多或少地与微积分存在联系,都需要运用微积分的基本思想和方法。 微积分是整个近代数学的基础,有了微积分,才有了真正意义上的近代数学。统计学中的概率论部分就是建立在微积分的基础之上的。 随机变量的数字特征、概率密度与分布函数的关系、连续型随机变量的计算等都是微积分现有成果的直接应用。 概率论是研究随机现象数量规律的数学分支。 朴素贝叶斯、Apriori关联规则等算法的理论基础就是概率论与数理统计。 线性代数领域的向量、矩阵、正交矩阵、秩、特征值与特征向量等概念在大数据分析、建模中发挥着巨大的作用。 在大数据中,许多应用场景的分析对象都可以抽象表示为矩阵。 特征分解(Eigen Decomposition)和奇异值分解(Singular Value Decomposition)等在大数据分析中的应用十分广泛。 在大数据时代的背景下,数据分析、数据挖掘、机器学习等算法中常见的插值、数值逼近、非线性方程求解等,都属于数值计算的范畴。 数值计算主要研究如何利用计算机更好地解决各种数学问题,包括连续系统离散化和离散型方程求解,并考虑误差、收敛性和稳定性等问题。 多元分析的主要方法包括回归分析、判别分析、聚类分析、主成分分析(Principal Component Analysis,PCA)、因子分析及典型相关分析等。这些分析方法在大数据领域有着非常广泛的应用。 回归分析中的一元或多元线性回归可用于预测连续型数据,如股票价格预测和违约损失率预测等;判别分析与回归分析中的Logistic回归可用于预测类别型数据,这些数据通常都是二元数据,如欺诈与否、流失与否、信用好坏等;聚类分析是在不知道类标签的情况下,将数据划分成有意义的类,如客户细分等;主成分分析与因子分析可用少量的变量(因子)来综合反映原始变量(因子)的主要信息,在大数据分析中常用于数据的降维;典型相关分析可以快捷、高效地发现事物间的内在联系,如某种传染病与自然环境、社会环境的相关性等。
1.2 数学与Python
Python具有所有脚本语言所具有的简单和易用的特征,并且拥有许多编译语言的工具。此外,Python还提供了与数学计算相关的类库,如NumPy、SciPy、SymPy、StatsModels等。
NumPy可对数组执行元素级计算及直接对数组执行数学运算的函数,包含行列式计算、矩阵运算、特征分解、奇异值分解的函数与方法。除了为Python提供快速的数组处理能力外,NumPy在数据分析方面还有另外一个主要作用,即作为在算法支架间传递数据的容器。
SymPy的全称为Symbolic Python,是由纯Python语言编写的一个用于符号运算的库,能够与其他科学计算库相结合。符号化的计算采用的是数学对象符号化的计算方式,使用数学对象的精确标识,而不是近似的,计算结果可以为一个数学表达式。它的目标在于成为一个富有特色的计算机代数系统,同时保证自身的代码尽可能简单,且易于理解,容易扩展。
StatsModels是一个与统计相关的Python库。它在统计计算方面可以视为SciPy的补充,包括数据的描述性统计、统计模型的估计和推断等,对每一个模型都会生成一个对应的统计结果。统计结果会和现有的统计包进行对比,以保证其正确性。
第2章 微积分基础
如果将大数据中的数据分析与挖掘比作一棵大树,那么微积分就是这棵树的根,而线性代数、统计学、数值分析、凸优化等数学分支则是这棵树的树干,各种各样的机器学习与数据挖掘算法是枝叶。 微积分博大精深,其以实数域上的函数为研究对象,以极限为研究工具,研究函数的微分与积分问题。函数的微分与积分本质上都是一种极限,可以将它们分别看作“两个无穷小比值的极限”与“无穷多个无穷小和的极限”,因此,微积分也常常被称为“无穷小分析”。
2.1 函数与极限
函数指一个量随着另一个量的变化而变化,或者是一个量中包含另一个量。 极限:变量无限趋近某个量的变化过程,而此变量通过无限变化过程的影响,其趋势性结果就非常精密地约等于所求的未知量。
2.1.1 映射与函数
1. 集合
现代数学各个分支的绝大多数成果均构筑在严格的集合理论上。 集合(简称“集”)指具有某种特定性质的事物的总体,组成这个集合的事物称为该集合的元素(简称“元”)。 通常用大写英文字母A,B,C…,表示集合,用小写英文字母a,b,c,…表示集合的元素。 由所有属于集合A而不属于集合B的元素组成的集合,称为A与B的差集(简称“差”),记为A\B 对于集合的计算,可以使用Python运算符实现。常用的运算符有|(并)、&(交)、-(差)等。
- 例2-1 设集合A={1,2,4,5},B={x|x2?5x+6=0},请计算出集合A与B的并、交、差。
pip install sympy
from sympy import symbols, solve
x = symbols('x')
X = solve(x**2-5*x+6,x)
print('一元二次方程的两个根为:',X)
A = set('1245')
B = set('23')
print('集合A与B的并:',A | B)
print('集合A与B的交:',A & B)
print('集合A与B的差:',A - B)
输出为
一元二次方程的两个根为: [2, 3]
集合A与B的并: {'2', '5', '1', '4', '3'}
集合A与B的交: {'2'}
集合A与B的差: {'5', '1', '4'}
|