感知机
属于比较简单的二分类模型,其思想是:错误驱动、梯度下降
。且解不唯一(只要能满足样本点正确分类就视为成功),与初始状态和优化过程
有关。其由输入空间到输出空间的函数如下:
f ( x ) = s i g n ( w T x + b ) f(x) = sign(w^Tx + b) f(x)=sign(wTx+b)
因此,对于给定的训练数据集: T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)} T=(x1,y1),(x2,y2),...,(xN,yN),其中 x i ∈ X = R N x_i \in \mathbb{X} = R^N xi∈X=RN, y i ∈ Y = { + 1 , − 1 } y_i \in \mathbb{Y} = \{+1, -1\} yi∈Y={+1,−1}, i = 1 , 2 , 3 , . . . N i=1, 2, 3, ... N i=1,2,3,...N,则其任务的损失函数如下:
L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) L(w, b) = -\sum_{x_i \in M} y_i (wx_i + b) L(w,b)=−xi∈M∑yi(wxi+b)
显然该目标损失函数为非负
的,因为当错分类时(
y
i
(
w
x
i
+
b
)
<
0
y_i(wx_i+b) < 0
yi(wxi+b)<0),正确分类时(=0)。而且,误分类点越少时,误分类点距离超平面也越近,损失函数值越小。一个特定样本点的损失函数:
- 在误分类时是参数 w , b w, b w,b 的线性函数;
- 当正确分类时是0
因此,对于给定的数据集 T T T,损失函数 L ( w , b ) L(w,b) L(w,b) 是关于 w , b w, b w,b 的连续可导函数。
在得到了任务的损失函数后,我们的任务目标就是最小化损失函数,即:
m i n L w , b ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) minL_{w, b}(w, b) = - \sum_{x_i \in M} y_i(wx_i+b) minLw,b(w,b)=−xi∈M∑yi(wxi+b)
其中
M
M
M 为 误分类
点的集合。最小化方法采用 梯度下降法
。
L
L
L 关于
w
,
b
w, b
w,b 的梯度为:
Δ w L ( w , b ) = − ∑ x i ∈ M y i x i Δ b L ( w , b ) = − ∑ x i ∈ M y i \Delta_w L(w, b) = - \sum_{x_i \in M} y_i x_i\\ \Delta_b L(w, b) = - \sum_{x_i \in M} y_i ΔwL(w,b)=−xi∈M∑yixiΔbL(w,b)=−xi∈M∑yi
其伪代码实现如下:
epochs = 50
eta = 1e-2
w = 0.01
# 梯度下降
for _ in range(epochs):
error_sum = 0
np.random.shuffle(x_y)
for index in range(0, n_samples):
x_i = x_y[index, :-1]
y_i = x_y[index, -1:]
# 更新错分点的参数
if (x_i.dot(w) * y_i)[0] < 0:
dw = (-x_i * y_i).reshape(-1, 1)
w = w - eta * dw
error_sum += 1
if error_sum == 0:
break
K近邻算法(KNN)
K近邻算法是将数据划分为不同的 单元(cell),当:
- 训练集
- 距离度量(如:欧氏距离,曼哈顿距离等)
- K 值(常用小k值)
- 决策规则(如:多数表决(常用)、最近表决等)
确定之后,任何一个新的输入实例,其所属单元(类别)也将唯一确定。
距离度量
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 = 1 p=1 p=1 时,为曼哈顿距离
- 当 p = 2 p=2 p=2 时,为欧氏距离。
k 值的选择
较小的 k k k 值:
- 优点:
- 学习的近似误差减小,只有与输入实例较近的(相似的)训练实例才对预测起作用。
-缺点: - 学习的估计误差增大,预测结果对近邻的实例点将非常敏感。
- k k k 值的减小意味着,模型将变得复杂,容易发生过拟合。
- 学习的近似误差减小,只有与输入实例较近的(相似的)训练实例才对预测起作用。
较大的 k k k 值:
- 优点:
- 学习的估计误差减小。
-缺点: - 学习的近似误差增大。因为这时与输入实例较远的(不相似的)训练实例也将对预测起作用。
- k k k 值的增大意味着,模型将变得简单。
- 学习的估计误差减小。
分类决策规则
KNN 中往往采用多数表决。
优化方式
对输入的实例 x x x,其最近邻的 k k k 个训练样本组成集合 N k ( x ) N_k(x) Nk(x)。如果涵盖 N k ( x ) N_k(x) Nk(x) 的区域的类别是 c j c_j cj,那么误分类率是:
1 k ∑ x i ∈ N k ( x ) I ( y i ≠ c j ) = 1 − 1 k ∑ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k} \sum_{x_i \in N_k(x)}I(y_i \ne c_j) = 1-\frac{1}{k} \sum_{x_i \in N_k(x)}I(y_i = c_j) k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)
要使误分类率最小,就要使 ∑ x i ∈ N k ( x ) I ( y i = c j ) \sum_{x_i \in N_k(x)}I(y_i = c_j) ∑xi∈Nk(x)I(yi=cj) 最大,所以多数表决规则等价于经验风险(Loss)的最小化。
例: 输入 x x x 是 2 2 2 类, k = 50 k=50 k=50, N k ( x ) N_k(x) Nk(x) 中有 42 42 42 个 2 2 2 类,则误分类的率是:
1 − 42 50 1 - \frac{42}{50} 1−5042
kd-Tree
待续…