常用机器学习算法简记

  • Logistic Regression逻辑回归

tips:sigmoid函数转换

损失函数:极大似然函数

求解算法:梯度上升(特征归一化处理)

缺点:对特征的多重共线性敏感

  • Naive Bayes朴素贝叶斯

tips:条件概率;GaussianNB要求特征的先验概率为正态分布

损失函数:交叉熵损失函数

求解算法:极大似然估计

缺点:对特征的独立性要求和特征取值的分布要求较高

  • SVM支持向量机

tips:二分类;内机核函数、支持向量、几何间隔、最优超平面;拉格朗日对偶

目标函数:找到超平面使得样本点到超平面的最小几何距离最大化

优点:支持向量起决定性作用,一定程度的鲁棒性及一定程度上避免维度灾难;

缺点:涉及矩阵运算,大样本计算量过大;解决多分类有困难。

  • KNN

tips:距离度量的选择

缺点:计算量大(需要计算未知样本到所有样本的距离,可以事先筛选)、内存开销大(树的存储)、效率低(样本索引速度较慢,可以通过构建kd-tree等优化)、可解释性差、对高维数据敏感(近邻间的距离可能会被大量不相关特征所支配,可通过加权优化)。

  • Decision Tree决策树

决策树算法对比
算法 支持模型 树结构 结点划分依据 连续特征处理 缺失值处理 剪枝
ID3 分类 多叉树 信息增益 不支持 不支持 不支持
C4.5 分类 多叉树(效率低) 信息增益比 离散化 缺失特征的样本划分给所有叶节点 支持
CART 回归&分类 二叉树

均方误差MSE、

Gini系数

离散化 支持 支持(如代价复杂性剪枝CCP)

缺点:容易过拟合;样本变动引起树结构的剧烈改变(改进:集成学习);寻找最优决策树是通过启发式方法MSE/Gini系数,容易陷入局部最优(改进:集成学习);特征的样本比例过大时,决策树容易偏向这些特征(改进:加权)。

 

  • Random Forest随机森林

tips:随机放回抽样、特征子集、多数表决(分类)或简单平均(回归)、oob error

分裂准则:MSE/Gini

优点:可以处理高维、不平衡数据;并行化

缺点:噪声造成过拟合(优化:控制树深度、叶子结点样本数、最小不纯度减少等);取值较多的属性会产生更大影响

  • 梯度提升决策树GBDT

tips:损失函数的负梯度值拟合残差、多个CART树的累计、学习率

损失函数(常见):MSE/Huber(回归)、交叉熵(分类)

划分准则、叶子结点取值:使得损失函数极小化

缺点:难以并行训练;数据维度较高时计算复杂度高(树分裂时特征的选择以及阈值的确定)

  • Xgboost

tips:目标函数中的正则化项、损失函数的泰勒展开、每个样本点会落到叶子结点

目标函数:损失函数+正则化项(对树复杂度的惩罚:深度、叶子结点个数、叶子结点取值)

分裂准则:增益(剪枝后误差增加最少的特征及特征阈值) Gain=Obj_{C}-Obj_{L}-Obj_{R}

GBDT与Xgboost:

  1. Xgboost增加了正则化项;
  2. Xgboost利用了二阶导,GBDT只利用了一阶导(但是GBDT后续用的牛顿迭代法实际上也利用了二阶导信息?);
  3. 分裂准则:GBDT(启发式MSE或Gini);Xgboost是由目标函数推导出来的Gain;
  4. 缺失值处理:Xgboost缺失值自动处理,自动学习缺失值的分裂方向(选择增益大的方向);
  5. Xgboost支持列抽样(特征子集选择),能减少过拟合和计算量;
  6. Xgboost支持特征粒度的并行运算。预先对特征值进行排序,存储为block结构,调用此结构并行计算多个特征的Gain;
  7. 可并行的近似直方图算法,根据分位数选出可能成为分裂点的候选特征,计算最佳分割点。

  • LightGBM

速度、内存优化(连续特征的直方图算法);Leaf-wise算法;数据并行、特征并行、投票并行

  • Adaboost

tips:极小化指数损失函数等价于最小化误分率

损失函数:指数损失函数

步骤:样本权重初始化——>误分率——>分类器权重——>样本权重更新——>分类器整合

分裂准则:最小化误分率

优点:精度高

缺点:对异常样本敏感(高权重)

  • KMeans

步骤:初始质心——>K近邻——>重新计算质心——>迭代直到质心不变或质心变化小于设定的阈值

缺点:人工指定K;对初始质心敏感(局部最优,改进:初始点选择尽可能远);对噪声敏感(优化:离群点检测和剔除);不能处理非球形簇、不同尺度和不同密度的簇。

  • DBSCAN

样本点分类:核心对象CORE、密度可达点REACHABLE、异常点OUTLIER

步骤:找一个没有类别的CORE点作为种子,找到它可以密度可达的样本点(可能包含多个CORE,密度可达的传递性),即为一个簇。迭代这个过程直到所有CORE有类别。

优点:可以发现任何形状的簇;可以发现异常点且对异常点不敏感;无需指定类的数目。

缺点:时间复杂度(搜索树的构造以及最近邻查找的计算量,优化:ball-tree、kd-tree、R-tree索引);对参数 \epsilon 敏感;不适合密度差异很大的数据集。

 

你可能感兴趣的:(学习笔记,机器学习)