Lecture 8¶
1. K Nearest Neighbors (KNN)¶
KNN是一种基于实例的学习方法,主要用于分类和回归任务。它通过计算样本之间的距离来进行分类或预测。 KNN的基本思想是:给定一个待分类的样本,找到训练集中与其距离最近的K个样本,然后根据这K个样本的类别进行投票,选择出现次数最多的类别作为待分类样本的类别。
伪代码如下:
Python | |
---|---|
Majority Voting:在KNN中,投票是通过选择出现次数最多的类别来进行的,这种方法称为多数投票。
Weighted Voting:加权投票是指在投票时考虑邻居的距离,距离越近的邻居权重越大,距离越远的邻居权重越小。例如使用公式1/distance
来计算权重。
KNN和LOESS的比较:
2. Support Vector Machines (SVM)¶
SVM是一种监督学习方法,主要用于分类和回归任务。它通过寻找一个最优的超平面来将不同类别的数据分开。 SVM的基本思想是:在特征空间中找到一个最优的超平面,使得不同类别的数据点被分开,并且距离超平面最近的数据点到超平面的距离最大化。
SVM分为线性SVM和非线性SVM。线性SVM适用于线性可分的数据,而非线性SVM适用于非线性可分的数据。
Kernel Trick:核技巧是SVM中的一个重要概念,它通过将数据映射到高维空间来实现非线性分类。常用的核函数有线性核、多项式核和高斯核等。 常用核函数:
- Linear Kernel:\(K(x_i, x_j) = x_i^T x_j\)
- Polynomial Kernel:\(K(x_i, x_j) = (yx_i^T x_j + c)^d,y>0\)
- Radial Basis Function (RBF) Kernel:\(K(x_i, x_j) = exp(-\frac{y||x_i - x_j||^2}{2\sigma^2}),y>0\)
- Sigmoid Kernel:\(K(x_i, x_j) = tanh(y x_i^T x_j + r)\)
3. Overfitting and Underfitting¶
Overfitting是指模型在训练集上表现良好,但在测试集上表现不佳的现象。它通常是由于模型过于复杂,导致对训练数据的噪声进行拟合。 Overfitting的表现为训练集的准确率很高,但测试集的准确率很低。
Underfitting是指模型在训练集和测试集上都表现不佳的现象。它通常是由于模型过于简单,无法捕捉数据的复杂性。 Underfitting的表现为训练集和测试集的准确率都很低。
一个稳定的模型不会因为训练集的变化而发生很大的变化。
4. Ensemble Learning¶
集成学习是一种通过组合多个模型来提高预测性能的方法。它的基本思想是:通过将多个弱分类器组合成一个强分类器来提高模型的性能。
集成学习可以分为:Bagging、Boosting和Stacking。
- Bagging:自助法,通过对训练集进行抽样来生成多个训练集,然后在每个训练集上训练一个模型,最后将这些模型的预测结果进行平均或投票。例子有随机森林(Random Forest)和Bagged Decision Trees。
- Boosting:提升法,通过使用整个训练集来进行训练模型,将模型中预测错误的样本作为下一个训练集进行第二次训练,以此类推。最后使用所有模型进行投票(一般有权重)。例子有AdaBoost、Gradient Boosting和XGBoost。
- Stacking:堆叠法,通过将多个模型的预测结果作为新的特征输入到一个新的模型中进行训练。例子有StackedClassifier和StackedRegressor。