机器学习
Contents
机器学习
模型 损失 策略
分类
逻辑回归 通常二分类
朴素贝叶斯
KNN
决策树
SVM
其核心思想是寻找一个最佳的分离超平面,将不同类别的数据点充分分开
合页损失
核函数在支持向量机和其他机器学习模型中发挥着重要作用,通过隐式地将数据映射到高维空间,从而能够有效地处理非线性可分的问题
通过sklearn.svm.SVC
类来实现。以下是 SVM 主要的参数及其作用:
1. C
(惩罚系数)
- 控制分类的松弛程度。
- 较大的
C
值会让模型对训练样本进行严格分类,从而减少误分类(即小间隔的硬边界),但可能导致过拟合。 - 较小的
C
值会增大间隔,使得算法更具泛化性,但可能允许一定的误分类(即软边界)。
2. kernel
(核函数类型)
- SVM 使用核函数将数据映射到高维空间,使得非线性数据可以进行线性分割。
- 常用的核函数包括:
linear
:线性核,适用于线性可分数据。poly
:多项式核,用于更复杂的多项式边界。rbf
:径向基核(高斯核),用于大多数非线性问题。sigmoid
:S 型核,有时用于神经网络中。
- 默认值是
rbf
。
3. degree
(多项式核的阶数)
- 仅在
kernel='poly'
时有效。 - 指定多项式核的阶数,常见的值为 2 或 3,阶数越高,模型越复杂。
集成模型类:
随机森林
Bagging
AdaBoost
GBDT
XGBoost
回归
https://ster.im/py_sklearn_1/#%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA%E5%9B%9E%E5%BD%92
基础模型:
- 线性回归(包含岭回归、Lasso回归、弹性网络回归)
- 树回归
- 支持向量机回归 SVR
- K近邻回归
集成模型:
- 随机森林回归
- 极端随机树回归
- AdaBoost回归
- Gradient Boosting回归
聚类(无监督)
K-means
- 原理:通过将数据点分配到最近的簇心来形成簇,然后更新簇心,重复这一过程直到收敛。
- 优点:简单易实现,计算效率高,适用于大规模数据。
- 缺点:需要预先指定簇的数量 k,对初始簇心敏感,可能会陷入局部最优。
算法伪代码
输入:数据点集 X,簇数量 k
初始化:随机选择 k 个数据点作为初始簇心
重复直到收敛:
1. 对每个数据点 x_i ∈ X:
a. 计算与每个簇心的距离
b. 将 x_i 分配给最近的簇心
2. 对每个簇 j:
a. 更新簇心为属于该簇的所有点的均值
输出:每个数据点的簇分配和最终簇心
Mean Shift
GMM(Gaussian Mixture Model)
降维
PCA与SVD
- PCA 需要计算数据协方差矩阵 C=m−11XTX,并找出其特征向量和特征值。而 SVD 将 X 分解为 X=UΣVT 后,矩阵 V 的列就是协方差矩阵 C 的特征向量。
- 奇异值 Σ 中的每个值的平方,按比例与协方差矩阵的特征值相关联。这表示数据在主成分方向上的方差大小。
- SVD 是实现 PCA 的一种方法:在实际应用中,PCA 通常使用 SVD 来计算数据的主成分,因为 SVD 更稳定且适用于任意矩阵。
- 使用 SVD 进行 PCA 时,主成分是由 SVD 中的右奇异向量(矩阵 V)决定的,而奇异值的平方与数据的方差成比例。
离群检测
1. 基于统计的方法
Z-Score 方法:
通过计算每个数据点的 Z-Score(标准分数)来判断离群点。如果 Z-Score 超过设定的阈值,则认为该点是离群点。
公式:
Z=σ(X−μ)
其中,μ 是均值,σ 是标准差。Z=(X−μ)σZ = \frac{(X - \mu)}{\sigma}
μ\mu
σ\sigma
箱形图(Box Plot):
- 通过分析数据的四分位数(Q1, Q3)和四分位距(IQR = Q3 - Q1)来判断离群点。通常,超过 Q1 - 1.5 * IQR 或 Q3 + 1.5 * IQR 的数据点被视为离群点。
from sklearn.covariance import EllipticEnvelope
Elliptic Envelope 是一种基于统计的方法,用于离群检测,特别适用于高维数据的异常点检测。该算法通过拟合一个椭圆形的边界来估计数据的分布,从而识别离群点。