机器学习——数学基础(一)

机器学习数学基础

均匀分布转变为正态分布

import numpy as np
import matplotlib.pyplot as plt
import math
x=np.random.rand(1000)  ##rand是均匀分布,randn是正态分布
y=np.random.rand(1000)
an1=plt.subplot(1,2,1)
an1.scatter(x,y)
x1=np.cos(2*np.pi*x)*np.sqrt(-2*np.log(y))
y1=np.sin(2*np.pi*x)*np.sqrt(-2*np.log(y))
ans2=plt.subplot(1,2,2)
ans2.scatter(x1,y1)
plt.show()

即Box-Muller变换

绘制 f ( x ) = 1 / ( 1 + e − x ) f(x)=1/(1+e^{-x}) f(x)=1/1+ex)函数图像

import numpy as np
import matplotlib.pyplot as plt
import math
def fun(x):
    return 1/(1+np.power(np.e,-1*x))
x=np.linspace(-10,10)
y=fun(x)
plt.plot(x,y)
plt.show()

scatter函数是散点图,plot函数是连线

使用一些数学函数时,要调用numpy库里面的,不能调用math库里的,报错only size-1 arrays can be converted to Python scalars

因为numpy是数组

即Sigmoid函数,他可以很好的表示机器学习中的预测问题

线性代数

范数

L1 范数||x||:为x向量各个元素绝对值之和;

L2 范数||x|| 2 _2 2:为x向量各个元素平方和的开方。

特征分解

许多数学对象可以通过将它们分解成多个组成部分。特征分解是使用最广的矩阵分解之一,即将矩阵分解成一组特征向量特征值

方阵A的特征向量是指与A相乘后相当于对该向量进行缩放的非零向量ν:

A v = λ v Av=\lambda v Av=λv

标量λ被称为这个特征向量对应的特征值。

使用特征分解去分析矩阵A时,得到特征向量构成的矩阵V和特征值构成的向量λ,我们可以重新将A写作:

A v = V d i a g ( λ ) V − 1 Av=Vdiag(\lambda)V^{-1} Av=Vdiag(λ)V1

奇异值分解

矩阵的特征分解是有前提条件的,那就是只有对可对角化的矩阵才可以进行特征分解。但实际中很多矩阵往往不满足这一条件,甚至很多矩阵都不是方阵,就是说连矩阵行和列的数目都不相等。这时候怎么办呢?人们将矩阵的特征分解进行推广,得到了一种叫作“矩阵的奇异值分解”的方法,简称SVD。通过奇异分解,我们会得到一些类似于特征分解的信息。

它的具体做法是将一个普通矩阵分解为奇异向量和奇异值。比如将矩阵A分解成三个矩阵的乘积:

A = U D V T A=UDV^{T} A=UDVT

假设A是一个m×n矩阵,那么U是一个m×m矩阵D是一个m×n矩阵V是一个n×n矩阵

这些矩阵每一个都拥有特殊的结构,其中U和V都是正交矩阵,D是对角矩阵(注意,D不一定是方阵)。对角矩阵D对角线上的元素被称为矩阵A的奇异值。矩阵U的列向量被称为左奇异向量,矩阵V 的列向量被称右奇异向量

SVD最有用的一个性质可能是拓展矩阵求逆到非方矩阵上。另外,SVD可用于推荐系统中。

几种常用距离

在机器学习里,我们的运算一般都是基于向量的,一条用户具有100个特征,那么他对应的就是一个100维的向量,通过计算两个用户对应向量之间的距离值大小,有时候能反映出这两个用户的相似程度。这在后面的KNN算法和K-means算法中很明显。

1、曼哈顿距离

曼哈顿距离也称为城市街区距离,数学定义如下:

d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ d_{12}=\sum_{k=1}^{n}|x_{1k}-x_{2k}| d12=k=1nx1kx2k

2、欧氏距离

欧氏距离其实就是L2范数

3、切比雪夫距离

切比雪夫距离就是Lϖ,即无穷范数,数学表达式如下:

d 12 = m a x ( ∣ x 1 k − x 2 k ∣ ) d_{12}=max(|x_{1k}-x_{2k}|) d12=max(x1kx2k)

参考资料:https://zhuanlan.zhihu.com/p/25197792

你可能感兴趣的:(机器学习,python,numpy)