---
title: 原理描述
description: "- GBDT算法"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_20_0008.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_20_0008.html
indexId: 793ab1997c8d71125d7c79a21be702eaaf2574d2fe9456c51559226fb2850b2373
---
# 原理描述

- GBDT算法
  GBDT（Gradient Boosting Decision Tree，梯度提升决策树）算法是一种十分流行的决策树集成算法，不仅可以适用于分类任务，也可用于回归任务。GBDT通过迭代地训练多棵树来达到最小化损失函数的目的。Spark中的GBDT算法支持二分类和回归，支持连续性特征和类别型特征，通过分布式计算来处理大数据场景下的训练和推理。

- RF算法
  RF（Random Forest，随机森林）算法实现如下功能：给定一份样本数据，包含特征向量和标签值，同时训练多棵决策树，得到一个分类模型或回归模型。使用输出的模型，传入特征向量，可预测出概率最大的标签值。

- SVM算法
  SVM（Support Vector Machines，支持向量机）是一类按监督学习方式对数据进行二元分类的广义线性分类器，其决策边界是对学习样本求解的最大边距超平面。SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险，是一个具有稀疏性和稳健性的分类器。Spark中的LinearSVC算法主要引入了两个优化策略：通过算法原理优化减少对f函数（分布式计算目标函数损失和梯度）的调用次数；增加动量参数更新加速收敛。

- K-means算法
  K-means（K-means Clustering，K-平均算法）源于信号处理中的一种向量量化方法，现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-平均聚类的目的是：把n个点（可以是样本的一次观察或一个实例）划分到k个聚类中，使得每个点都属于离他最近的均值（此即聚类中心）对应的聚类，以之作为聚类的标准。这个问题将归结为一个把数据空间划分为Voronoi cells的问题。

- Decision Tree算法
  DecisionTree，决策树算法是机器学习、计算机视觉等领域内应用极为广泛的一个算法，它不仅可以用来做分类，也可用来做回归。决策树（DecisionTree）算法实现如下功能：给定一份样本数据，包含特征向量和标签值，训练一棵二叉树，得到一个分类模型或回归模型。使用输出的模型，传入特征向量，可预测出概率最大的标签值。

- Linear Regression算法
  回归算法是一种有监督学习算法，用来建立自变量X和观测变量Y之间的映射关系。如果观测变量是连续的，则称其为回归（Regression）。机器学习中，线性回归（LinearRegression）利用线性模型来建模自变量X和观测变量Y之间的映射关系，其未知的模型参数是从训练数据中估计。

- Logistic Regression算法
  Logistic Regression，逻辑回归算法虽然名字里带“回归”，但是它实际上是一种分类方法。逻辑回归是利用线性模型来建模自变量X和观测变量Y之间的映射关系，其未知的模型参数是从训练数据中估计的。

- PCA算法
  PCA（Principal Component Analysis，主成分分析）是一种应用广泛的数据分析方法，它主要用于降维、特征提取、异常检测等方面。对矩阵Am×n进行PCA，是指找到它的前k个主成分向量[v_1,v_2,…,v_k]，以及它对应的权重[s_1,s_2,…,s_k]。

- SPCA算法
  SPCA算法（Principal Component Analysis for Sparse Matrix，稀疏矩阵主成分分析）是对稀疏矩阵进行主成分分析，它将稀疏数据从n维降低到k维（k<n），同时尽可能多的保留原始信息。

- SVD算法
  SVD（Singular Value Decomposition，奇异值分解）算法是线性代数中一种重要的矩阵分解，在生物信息学、信号处理、金融学、统计学等领域，SVD都是提取信息的常用工具。在机器学习领域，它不光可以用于数据压缩、降维，还可以用于推荐系统，自然语言处理等。对矩阵Am×n进行SVD，是指将其分解为A=USVT，其中Um×k叫左奇异矩阵；Vn×k是右奇异矩阵；Sk×k是奇异值矩阵，是对角矩阵，对角线上的元素称为奇异值，奇异值从大到小排列。U和V都是酉矩阵。

- LDA算法
  LDA（Latent Dirichlet Allocation，潜在狄利克雷分布）算法是一种文档主题生成模型，也被称为三层贝叶斯概率模型，包含文档、主题和词三层。LDA是一种非监督机器学习技术，通过分布式计算来处理大数据场景下的训练和推理。

- PrefixSpan算法
  PrefixSpan（Prefix-Projected Pattern Growth，前缀投影的模式挖掘）算法是频繁模式挖掘中的典型算法，用于挖掘满足最小支持度的频繁序列。PrefixSpan算法由于不用产生候选序列，且投影数据库缩小的很快，内存消耗比较稳定，作频繁序列模式挖掘的时候效果很高。

- ALS算法
  ALS（Alternating Least Squares，交替最小二乘法）特指使用交替最小二乘求解的一个协同推荐算法。

- KNN算法
  KNN（K-Nearest Neighbors，K最近邻算法）是一种机器学习领域中的非参数统计法，用于找到距离给定样本最近的k个样本。可以用于分类、回归、信息检索等领域。

- Covariance算法
  Covariance（协方差算法）在概率论和统计学中用于衡量两个随机变量的联合变化程度。而方差是协方差的一种特殊情况，即变量与自身的协方差。

- DBSCAN算法
  DBSCAN（Density-Based Spatial Clustering of Applications with Noise，具有噪声的基于密度的聚类方法）是一种基于密度的空间聚类算法，该算法要求聚类空间中一定区域内所包含对象的数目不小于某一给定阈值，该算法能够有效处理噪声点，并发现任意形状的空间聚类。

- Pearson算法
  Pearson（皮尔逊相关系数）在统计学中用于度量两个变量X和Y之间的相关程度（线性相关），其值介于-1与1之间；在自然科学领域中，该系数广泛用于度量两个变量之间的线性相关程度，+1表示完全正相关，0表示完全不相关，-1表示完全负相关。

- Spearman算法
  Spearman（斯皮尔曼等级相关系数）在统计学中经常用希腊字母ρ表示，是衡量两个变量的依赖性的非参数指标，利用单调方程评价两个统计变量的相关性。如果数据中没有重复值，并且当两个变量完全单调相关时，斯皮尔曼相关系数则为+1或-1。

- XGBoost算法
  XGBoost（极端梯度提升算法）是一个深度优化的分布式梯度提升算法库，拥有高效、灵活和可移植的特性。该库在梯度提升的框架下实现机器学习算法，提供了一个并行树提升算法，可以快速而准确地解决许多数据科学问题。

- IDF算法
  IDF（Inverse Document Frequency，逆文档频率）是一种用于度量词语普遍重要性的方法，用以评估一个词对于一个文件集或一个语料库中的一份文件的重要程度。IDF常用于挖掘文章中的关键词，常被工业用于最开始的文本数据清洗。

- SimRank算法
  SimRank是一种相似性度量，适用于任何具有对象到对象关系的领域，基于对象与其他对象的关系度量对象之间的相似性。SimRank相似度通过迭代求解SimRank等式得到。

- DTB算法
  DTB（Decision Tree Bucket，决策树分箱）是一种基于决策树模型的数据离散化方法，是业界常见的有监督分箱方法。数据离散化是指将连续的数据进行分段，使其变为一段段离散化的区间，离散化过程也被表述成分箱的过程。离散化数值型特征，是将无限空间中有限的个体，映射到有限的空间中，有效减小后续算法的时间和空间开销。

- Word2Vec算法
  Word2Vec（词向量）算法目的是将词转换为稠密向量表示（Distributed Representation），这样词之间的关系就可以用向量之间的距离来表示。除文本外，也可以用于编码类别变量，即“万物皆可Embedding”。相较于One Hot等特征编码方式，Word2Vec可以提取固定长度的稠密特征，富含更多的上下文信息，能提升下游算法的精度和性能。Spark开源Word2Vec算法不能处理词表过大的数据，迭代到收敛非常耗时，因此基于Spark的高效分布式Word2Vec算法很有意义。
