K最近邻算法简述K 最近邻算法是一种懒惰学习方法,其基于已有数据进行分类,需要确认五个信息:
已有数据的数据集 $T = {(x_1,y_1),(x_2,y_2),(x_3,y_3)···(x_N,y_N)}$
采用的距离度量$D(·)$
邻近点的个数K
待分类的实例点的特征向量 $x$
邻近算法的分类决策机制(如:多数表决法、权重法)
KNN算法的过程KNN算法的过程主要分为3个步骤:
计算实例点到所有训练实例点距离$D$,时间复杂度为$O(Np)$
选取K个离实例点最近的邻近点,构成集合$N_k(x)$,此时要选取最小的K个值需要对集合$D$进行排序,此时时间复杂度根据排序算法计算
根据集合$N_k(x)$ 中点对应的标签,对输入的新实例进行分类决策(如:投票表决法,若该点邻近的k个点均为+实例,则该点被判定为+实例)
距离度量常用距离度量:
欧式距离
曼哈顿距离
3.$L_∞$ norm distance
参数选择与分类方法在K最近邻算法中,重点需要设置的参数就是K,K会影响模型的泛化性,不同的K值预测结果也会不同;K很小时,模型对数据比较 ...
回归模型1. 有监督学习1.1 线性回归1.1.1 正规方程法
$ h(X_i;\theta)=\theta_1x_1+\theta_2x_2+\theta_3x_3=x^T\theta$
均方误差: $ MSE = \frac{1}{n}\sum_{i=1}^n(y_i-h(X_i))^2$
最小化损失函数:$ argminL(\theta)=\frac{1}{n}\sum_{i=1}^n(y_i-h(X_i;\theta))^2$
求解最优参数即求解最小化损失函数
构建损失函数
对损失函数求导(一阶偏导数即梯度 Gradient),令其等于0
求解二阶偏导数(黑塞矩阵 Hessian矩阵),判断极值情况,$ X^TX>=0$时,取极小值$ \theta$
求参数θ: $ \theta = (X^TX)^{-1}X^Ty$ (要求$ X^TX$可逆(列满秩),若不可逆则需要正则化)
12import numpy as npw = np.linalg.inv(X.T@X)@X.T ...