只是为了帮助自己理解经典算法,
常见的分类算法模型
KNN
- 找出距离目标点最近的几个样本点,用样本点的标注投票,视作目标点的标注。
- 距离:
- 欧氏距离 p=2
- (|x1 - x2|^2 + |y1 - y2|^2) ^(1/2)
- 平方和 再 开根号 - 曼哈顿距离 p=1
- 各个特征的绝对差的和 - 闵可夫斯基距离
- 各个特征的绝对差的N次方 求和 再开N次根
- 欧氏距离 p=2
- KNeighborsClassifier() 常用参数
- n_neighbors 选择几个样本点
- p 几阶距离
朴素贝叶斯
- 朴素:即认为特征之间是相互独立的
- 基于联合概率分布
- AB同时发生:P(A)* P(B|A) = P(B)*P(A|B)
- P(B|A) = P(B)*P(A|B)/P(A)
- 高斯贝叶斯 GaussianNB
- 特征是高斯分布 (正态分布)
- 伯努利贝叶斯 BernoulliNB
- 特征是伯努利分布 (0-1分布)
决策树
- 在每次决策时,都优先找出最能区分这些样本点的要素,用这个要素进行样本的区分,并重复此步骤,直到所有点都决策完成,或者在决策最大深度,进行样本点投票,多数点的标注即为此样本类别的标注。
- 怎么找:
- Gini系数
- 信息熵增益
- 信息熵增益率
- DecisionTreeClassifier 常用参数
- criterion 怎么找:Gini/entropy
- max_depth 最大深度
- min_samples_split 最小样本拆分
- min_samples_leaf 最小叶节点样本数
支持向量机
- 试图用一条线将样本点分为两类, 如果不能分,可以通过核函数向高维空间映射,或者找到最优的解,求错误归类的程度最小。
- SVC 参数
- C 错误归类点的惩罚值 用来调整精度
- kernel 核函数
- max_iter 最大迭代次数
- tol 运算终止的阈值
- decision_function_shape 分类比较方法
- ovo one vs one
- ovr one vs rest
集成方法
- 随机森林
- 用多棵树进行并联的决策模型,每棵树选取若干特征, 然后均值投票。
- 默认 10*squart(n)模型 即 10棵树每一棵根号n个特征,然后投票。
- 参数
- n_estimators 决策树个数
- criterion 分叉判别方式
- max_feature 每棵树最大特征(12个/ 80% /函数个/全部)
- max_depth min_samples_split
- min_samples_leaf 叶节点的最小样本数,
- bootstrap=True 放回采样 oob_score 在放回采样中 用未采样点进行决策树评估
- Adaboost
- 用多个若分类器的串联进行模拟,这一次模拟中分类错的点在下一次模拟中会增加权重,满足阈值要求后,将各个模拟器进行分权投票,得到最终的模型结果。
- 参数
- base_estimator 规则 默认决策树
- n_estimators 分类器个数
- learning_rate (0-1) 分类器权值的衰减
- algorithm
- SAMME.R:用对样本集分类的预测概率大小作为弱学习器权重 (默认)
- SAMME:用对样本集分类效果作为弱学习器权重
逻辑回归
- 广义的线性回归 在线性可分时 表现较好
- LogisticRegression 参数
- penalty "l1" 一范式均值 或者 "L2"二范式 均方差 正则化
- tol 算法停止的阈值
- C c越大 正则化就越弱
- solver
- 小数据集 libliner
- sag 随机梯度下降
- max_iter 最大迭代次数
梯度提升树
- 对连续数值的决策分类,依据不再是Gini系数,而是“方差最小化”
- 用一阶差分值作为下一棵树的分类样本
常见的聚类算法
Kmeans
基于切割的聚类
-
算法
- 1.随机选择 n 个样本点作为聚类中心,求各个点到这些聚类中心的距离,按照距离远近分类。
- 2.此时将样本分成n类,求这n个聚类的聚类中心,然后按照这三个聚类中心再一次将样本点分成n类,会得到新的n个聚类和聚类中心,循环往复,直到某两次聚类的聚类中心变化不大。认为聚类完成。
受异常点的影响较为明显。
DBSCAN
- 基于密度的聚类
- 1.指定的E邻域内,样本点书大于等于阈值的点 称为核心对象,这些E邻域内的点与核心对象直接密度可达。
- 2.核心点- 核心点 - 核心点 - 点 ,样本点与核心点 密度可达。
- 3.点- 核心点- 核心点 - 点 点与点之间密度相连
- 所有密度相连的点归为一类。
- 离群点不明显
- 参数
- min_samples 最小点数
- eps E邻域范围
层次聚类
- 1.先把距离很近的点归为一类
- 2.再向上靠拢,把新生成的样本类视作分类对象,逐层减少分类的个数。
- 簇间距离的算法:
- 最短聚类
- 最长距离
- 平均距离
- Ward 平方残差和, 在簇合并前后,平方残差和增加的越小,证明簇与簇之间越应该合并。
- 聚类灵活 但是容易受离群点影响。
模型评价
模型泛化结果
-
混淆矩阵
绘制 预测结果与实际分类的矩阵
TP 正确地 识别为正 图中共104个样本
TN 正确地 识别为负 图中共881个样本
FP 错误地 识别为正(样本点实际属于负类)图中共12个样本
FN 错误地 识别为负 图中共3个样本
-
指标
- 正确率 Accuracy
- 所有识别正确的比例
- 召回率 Recall
- 所有实际为正类的样本中,识别为正类的比例。
- 精准率 Precision 也叫TPR
- 所有识别为正类的样本中,识别正确的比例。
- 错误接收率 FPR
- 所有识别为负类的样本中,识别错误的比例。
- F分数
β=1 时 即F1分数,precision 和 Recall 同样重要,无论哪个数值很小都会使得F1分数变小。F分数评价避免了样本不均,即样本中正类负类比例相差很大时,准确率高,但模型泛化能力依然较差的情况。
- 正确率 Accuracy
-
ROC曲线 受试者工作模式曲线。
- 横轴为TPR,纵轴为FPR。
- 曲线越接近左上角,曲线下方的面积 AUC 越大, 模型的泛化能力越好。
- 虚线为完全随机的二分类预测,虚线附近、虚线右下侧对应的模型没有实际应用意义。