就像生活中的大多数事物一样,假设前提直接决定了成功或失败的方向。同样,在机器学习中,了解机器学习技术背后的假定逻辑将引导您朝着为数据应用最佳工具迈进。
K-NN(K最近的邻居)
假设前提:
- 数据在特征空间中,这意味着可以通过距离度量标准(例如Manhattan,Euclidean等)来测量特征空间中的数据。
- 每个训练数据点由一组向量和与每个向量关联的类别标签组成。
- 在两种分类的情况下,期望以 'K' 作为奇数。
优点:
- 易于理解,实施和解释。
- 是一种非参数算法,因此没有严格的假设。
- 无需训练步骤。它在运行时使用训练数据进行预测,使其比所有需要训练的算法更快。
- 由于不需要训练数据,因此可以轻松添加数据点。
缺点:
- 当数据集很大时效率低下且速度慢。至于计算成本,新点和训练点之间的距离很大。
- 对于高维数据来说,效果不佳,因为在高维中很难找到距离。
- 对异常值敏感,因为它很容易受到异常值的影响。
- 数据丢失时无法使用。因此,需要手动估算数据才能使其正常工作。
- 需要功能缩放/标准化。
Logistic回归
假设前提:
- 假设自变量之间没有多重共线性。
- 通常需要大量样本才能正确预测。
- 它假设观测值彼此独立。
优点:
- 易于解释,实施和培训。不需要太多的计算能力。
- 不假定类分布。
- 快速分类未知记录。
- 可以轻松容纳新的数据点。
- 要素可线性分离时非常有效。
缺点:
- 尝试预测精确的概率结果,这会导致在高维度上过度拟合。
- 由于它具有线性决策面,因此无法解决非线性问题。
- 很难获得线性关系以外的复杂关系。
- 要求很少或不需要多重共线性。
- 需要所有类别的大型数据集和足够的训练示例,以做出正确的预测
线性回归
假设前提:
- 数据应该存在线性关系。
- 应该没有或几乎没有多重共线性。
- 均方差:对于任何X值,残差的方差应相同。
优点:
- 当自变量和因变量之间存在线性关系时,效果很好。
- 如果过度拟合,则可以通过L1或L2规范轻松减少过度拟合。
缺点:
- 它假设数据独立。
- 线性可分离性的假设。
- 对异常值敏感。
支持向量机
假设前提:
- 它假定数据是独立的并且分布相同。
优点:
- 在高维数据上非常有效。
- 内存高效。
- 在维数大于样本数的情况下有效。
缺点:
- 不适合大型数据集。
- 当数据集有噪声(即目标类重叠)时,效果不佳。
- 慢训练。
- 没有关于分类的概率解释。
决策树
假设:
- 最初,整个训练数据被视为根。
- 记录根据属性值递归分布。
优点:
- 与其他算法相比,数据准备所需的时间更少。
- 不需要将数据标准化。
- 缺失值在一定程度上不会对其性能产生太大影响。
- 非常直观,可以解释为if-else条件。
缺点:
- 需要大量时间来训练模型。
- 数据的微小变化可能会导致决策树结构发生相当大的变化。
- 训练比较昂贵。
- 不适用于回归任务。
朴素贝叶斯
假设:
- 最大且唯一的假设是条件独立性的假设。
优点:
- 当满足条件独立性假设时,将提供高性能。
- 易于实现,因为只需要计算概率。
- 适用于高维数据,例如文本。
- 快速进行实时预测。
缺点:
- 如果条件独立性不成立,则表现不佳。
- 由于几个小数的乘法,因此存在数值稳定性或数值下溢的问题。
随机森林
假设:
- 假设没有形式化的发布。作为非参数模型,它可以处理偏斜和多模式数据。
优点:
- 对异常值的鲁棒性。
- 适用于非线性数据。
- 低过拟合的风险。
- 在大型数据集上高效运行。
缺点:
- 训练慢。
- 在处理分类变量时有偏见。
XGBoost
假设:
- 可以假设每个变量的编码整数值具有序数关系。
优点:
- 可以并行工作。
- 可以处理缺失值。
- 无需缩放或标准化数据。
- 快速解释。
- 极高的执行速度。
缺点:
- 如果参数调整不当,很容易过度拟合。
- 很难调音。