k近邻法(KNN)
knn是一种基本的分类与回归方法,其分类思想在于给定一个训练数据集,对一个新的输入实例,如果能在训练数据集中找到与该实例最邻近的k个实例,并且这k个实例的多数属于某个类,那么就把这个新的输入实例分为这个类。knn需要注意的几个术语:邻域、距离、位置、维度(影响着模型的复杂度),下面是knn大致的一个内容。
补充:
设特征空间X是n维实数向量空间Rn,xi,xj∈X,xi=(xi(1),xi(2),···,xi(n))T,xj=(xj(1),xj(2),···,xj(n))T,xi,xj的Lp距离定义为
L
p
(
x
i
,
x
j
)
=
(
∑
l
=
1
n
∣
x
i
(
l
)
−
x
j
(
l
)
∣
p
)
1
p
L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_i^{(l)}-x_j^{(l)}|^p)^\frac{1}{p}
Lp(xi,xj)=(l=1∑n∣xi(l)−xj(l)∣p)p1其中,p
≥
\geq
≥ 1。
-
欧式距离(上式中p=2): L 2 ( x i , x j ) = ( ∑ i = 1 n ∣ x i ( l ) − x j ( l ) ∣ 2 ) 1 2 L_2(x_i,x_j)=(\sum_{i=1}^{n}|x_i^{(l)}-x_j^{(l)}|^2)^\frac{1}{2} L2(xi,xj)=(∑i=1n∣xi(l)−xj(l)∣2)21
-
曼哈顿距离(上式中p=1): L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ L_1(x_i,x_j)=\sum_{l=1}^{n}|x_i^{(l)}-x_j^{(l)}| L1(xi,xj)=∑l=1n∣xi(l)−xj(l)∣
-
各个坐标距离的最大(上式中p= ∞ \infty ∞): L ∞ ( x i , x j ) = m a x l ∣ x i ( l ) − x j ( l ) ∣ L_\infty(x_i,x_j)=max_l|x_i^{(l)}-x_j^{(l)}| L∞(xi,xj)=maxl∣xi(l)−xj(l)∣
k近邻法最简单的实现就是计算输入实例与每一个训练实例中的距离,如果训练集很大的时候该方法较为繁琐,于是想到构造kd树以提高k近邻搜索的效率,减少计算的次数。kd树能够存储k维空间中的实例点以便能进行快速检索,它是二叉树,能对k维空间进行划分。构造kd树,简单来讲就是用递归的方法以垂直于坐标轴的超平面对k维空间进行划分若干子区域直到区域中没有实例存在。
决策树
决策树是一种对实例进行分类的树形结构,由结点和有向边组成。决策树可简单的用下面的图表示:
决策树大致内容如下:
补充:
- 熵:随机变量不确定性的度量,依赖于随机变量X的分布,熵越大,随机变量的不确定性就越大。假设X是一个取有限值的离散型随机变量概率分布为 P ( X = x i ) = p i , i = 1 , 2 , ⋅ ⋅ ⋅ , n P(X=x_i)=p_i,i=1,2,···,n P(X=xi)=pi,i=1,2,⋅⋅⋅,n则随机变量X的熵定义为 H ( X ) = − ∑ i = 1 n p i l o g p i H(X)=-\sum_{i=1}^{n}p_ilogp_i H(X)=−i=1∑npilogpi对数常以e或2为底,且有 0 l o g 0 = 0 0log0=0 0log0=0。
- 条件熵:定义式如下 H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^{n}p_iH(Y|X=x_i) H(Y∣X)=i=1∑npiH(Y∣X=xi)指的是在已知随机变量X的条件下随机变量Y的不确定性,其实质是在给定X的条件下Y的条件概率分布的熵对X的数学期望,其中 p i = P ( X = x i ) , i = 1 , 2 , ⋅ ⋅ ⋅ , n p_i=P(X=x_i),i=1,2,···,n pi=P(X=xi),i=1,2,⋅⋅⋅,n。而经验熵与经验条件熵指的是熵和条件熵中的概率由数据估计得到。
- 信息增益: g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)g(D,A)表示特征A对训练数据集D的信息增益,H(D)表示训练数据集D的经验熵,H(D|A)表示在给定特征A的条件下D的经验条件熵。依据该准则来选择特征,往往是先计算每个特征的信息增益比较大小后选取信息增益最大的特征。
- 信息增益比: g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A)=\frac{g(D,A)}{H_A(D)} gR(D,A)=HA(D)g(D,A)HA(D)表示训练数据集D关于特征A的值的熵, H A ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ l o g 2 ∣ D i ∣ ∣ D ∣ H_A(D)=-\sum_{i=1}^{n}\frac{|D_i|}{|D|}log_2\frac{|Di|}{|D|} HA(D)=−∑i=1n∣D∣∣Di∣log2∣D∣∣Di∣,n是特征A的取值个数。
逻辑回归
我个人的理解是先从字面上看包含两层意思,即逻辑、回归,逻辑可简单理解为事物发生因果关系的规律或者规则,回归可简单理解为变量间的一种抽象关系,回到数学中说明这一点即可指一个变量的某些特征和另一个变量的结果(或者一种状态)之间存在着一定的关系。
逻辑回归的本质是分类,最简单的一种类型是二分类问题。不难联想到病人是否患有某种病的这个问题,假设有一个病情结果的数据集,1-患病,0-不患病,对于一个实例,通过计算在给定这个实例条件下患病与不患病的概率,比较大小后将这个实例分类到概率值较大的那一类,这是二分类的分类思路。
引入概念:
- 逻辑斯谛分布:X是一个随机变量,具有下列的分布函数和密度函数
F
(
x
)
=
P
(
X
≤
x
)
=
1
1
+
e
−
x
−
μ
γ
F(x)=P(X\leq x)=\frac{1}{1+e^{-\frac{x-\mu}{\gamma}}}
F(x)=P(X≤x)=1+e−γx−μ1
f
(
x
)
=
F
′
(
x
)
=
e
−
x
−
μ
γ
γ
(
1
+
e
−
x
−
μ
γ
)
2
f(x)=F\prime(x)=\frac{e^{-\frac{x-\mu}{\gamma}}}{\gamma(1+e^{-\frac{x-\mu}{\gamma}})^2}
f(x)=F′(x)=γ(1+e−γx−μ)2e−γx−μ图像如下:
在分布函数中 μ \mu μ是一个位置参数,图像以点( μ \mu μ, 1 2 \frac{1}{2} 21)为中心对称, γ \gamma γ>0是一个形状参数, γ \gamma γ值越小,分布函数曲线在中心附近增长得越快 - 二项逻辑斯谛回归模型 P ( Y = 1 ∣ x ) = e x p ( w ⋅ x + b ) 1 + e x p ( w ⋅ x + b ) P(Y=1|x)=\frac{exp(w·x+b)}{1+exp(w·x+b)} P(Y=1∣x)=1+exp(w⋅x+b)exp(w⋅x+b) P ( Y = 0 ∣ x ) = 1 1 + e x p ( w ⋅ x + b ) P(Y=0|x)=\frac{1}{1+exp(w·x+b)} P(Y=0∣x)=1+exp(w⋅x+b)1其中x是输入,y是输出,取值为0或1,w为权值向量,b称为偏置(保证在空间的任何位置能够画出决策边界,若不加偏置项,就跟图像只能过原点一样)。在逻辑回归模型中,输出Y=1的对数几率(事件发生的概率与不发生概率的比值)由输入x的线性函数表示,其值越接近正无穷(负无穷),概率值就越接近1(0)。
神经网络
神经网络是一种能将输入数据映射到某种常规的输出的机器学习结构,最初目的是模拟人脑来实现一些算法。
补充:
- 神经网络的独特之处来自于隐藏层的作用,使用隐藏层注意尽量不使用两个以上的隐藏层,因为可能会出现过拟合的现象,隐藏层的作用相当于对数据做一个连续映射。
- 隐藏神经元的数量应在输入神经元数量和输出神经元数量之间
- 隐藏神经元的数量应为输入神经元数量的三分之二,加上输出神经元的数量
- 隐藏神经元的数量应小于输入神经元数量的两倍
- 容错率使我们知道什么时候应该停止训练,通过均方误差进行测量,定义了神经网络的训练停止之处。