参考资料《机器学习算法的数学解析与Python实现》,作者莫凡。
分类算法 | 优点 | 缺点 | 应用领域 | 基本Python库导入 |
Logistic回归分类算法 | 简单,可解释性强 | 易出现欠拟合 | 二分类;作为神经网络的激活函数 | from sklearn.linear_model import LogisticRegression |
备注(助理解) | Logistic函数在不同跨度下观察,其图像可出现线性或阶跃的形态;需要损失函数+梯度下降等优化方法调整模型参数。 | |||
KNN分类算法 | 简单,可实现在线训练 | 对样本分布比较敏感 | 模式识别(如OCR);文本分类;多分类领域 | from sklearn.neighbors import KNeighborsClassifier |
备注(助理解) | KNN算法中“多数表决”和距离的计算是关键;K的确定一般依靠具体问题和经验来决定。 | |||
朴素贝叶斯分类算法 | 可解释性强,对于大规模数据集训练效率高 | 假设特征“相互独立”,但实际若违背假设将导致预测偏差 | 垃圾邮件分类;以及其他文本分类 | from sklearn.naive_bayes import MultinomialNB |
备注(助理解) | 该算法会涉及到先验概率、后验概率、条件概率、似然度。一般令朴素贝叶斯算法求的是后验概率。“朴素”是指在使用算法时给问题作了假设,比如假设特征相互独立等。对结果的判断也是看的概率。 | |||
决策树分类算法 | 算法逻辑清晰,树形结构易可视化 | 容易过拟合,特征相互关联时易对结果造成影响 | 相关“决策”领域,如商业决策等 | from sklearn.tree import DecisionTreeClassifier |
备注(助理解) | 决策树算法指的是一类算法,比如具有代表性的决策树算法有:ID3、C4.5、CART等。这类算法关键在于决策条件的选择(机器选择+人工完善)、提高“纯度”(一组中某一类的占比)。决策条件从数据特征中来,可依靠“信息增益”、“增益率”、“基尼指数”方法来选择等。对于“过拟合”的问题,可通过前期或后期删除相关决策条件来改善。 | |||
支持向量机分类算法 | 能解决非线性问题,适合小样本分类 | 对非线性问题缺乏通解,核函数有时难找 | 广泛用于各种分类问题,如文本分类等 | from sklearn.svm import SVC |
备注(助理解) | 支持向量机分类重点要关注最大间隔、高维映射、核函数,其中核函数就是用来完成高维映射的。将“非线性的问题”转换为“线性问题”再解决。一般使用拉格朗日乘子法搭配SMO算法使间隔最大。 | |||
K-means聚类算法 | 简单,运算效率高 | 需要人为根据经验决定簇的个数;只适合数值类型数据;对孤立点敏感; | 适用于特征纬度为数值型的聚类问题 | from sklearn.cluster import KMeans |
备注(助理解) | 是无监督算法,但和KNN在某些方面类似,比如“多数表决”“距离度量”等。但K-means方法需要不断更新质心,直达质心不再变化,通过计算均值来确定质心。 | |||
神经网络分类算法 | 网络结果拓展性好,通过调参可能会有意想不到的效果 | 可解释性差,调参依赖经验,可能陷入局部最优解 | 应用领域广,如图像处理、语音识别、自然语言处理等 | from sklearn.neural_network import MLPClassifier |
备注(助理解) | 关键理解“节点”、“激活函数”、“正向传播”、“反向传播”、“权值更新”。具有代表性的激活函数有:Sigmoid函数、Tanh函数、ReLu函数。 | |||
集成学习方法 | 可以集合多种机器学习算法的长处 | 部分算法易出现过拟合、学习时间长、可解释性差(因算法而异) | 分类问题、回归问题、特征选取和异常点检测等 | from sklearn.ensemble import RandomForestClassifier/GradientBoostingClassifier/AdaBoostClassifier(随机森林或GBDT或Adaboost算法) |
备注(助理解): | 集成学习中可分为“串联学习”、“并联学习”,并联是指集成中的各学习器训练是同时进行的,串联是各学习器依次学习,前一个会把学习后的结果传给后一个学习器;而将结果集成的方法有:平均法和投票法;集成学习中常见的有:Bagging算法、Boosting算法、Stacking算法。 |