分类算法
- 主题:
- 查询
创建对象:
- 开发人员
本文档概述了各种分类算法,重点介绍了它们的配置、关键参数以及在高级统计模型中的实际使用。 分类算法用于根据输入特征向数据点分配类别。 每个部分都包含参数描述和示例代码,可帮助您为决策树、随机林和朴素贝叶斯分类等任务实施和优化这些算法。
Decision Tree Classifier
Decision Tree Classifier是一种用于统计信息、数据挖掘和机器学习的监督学习方法。 该方法使用决策树作为分类任务的预测模型,从一组观测值中得出结论。
参数
下表概述了用于配置和优化Decision Tree Classifier性能的关键参数。
参数 | 描述 | 默认值 | 可能值 |
---|---|---|---|
MAX_BINS | 最大桶数确定如何将连续特征划分为离散间隔。 这会影响特征在每个决策树节点上的分割方式。 更多的二进制文件提供了更高的粒度。 | 32 | 必须至少为2,并且至少等于任何分类特征中的类别数。 |
CACHE_NODE_IDS | 如果false ,则算法将树传递到执行器以将实例与节点进行匹配。 如果true ,则算法会缓存每个实例的节点ID,从而加快深度树的训练。 | false | true 、false |
CHECKPOINT_INTERVAL | 指定对缓存的节点ID进行检查的频率。 例如,10 表示每10次迭代就检查一次缓存。 | 10 | (>= 1) |
IMPURITY | 用于信息增益计算的标准(区分大小写)。 | “基尼” | entropy 、gini |
MAX_DEPTH | 树的最大深度(非负值)。 例如,深度0 表示一个叶节点,深度1 表示一个内部节点和2个叶节点。 | 5 | (>= 0) (范围: [0,30]) |
MIN_INFO_GAIN | 在树节点上考虑拆分所需的最小信息增益。 | 0.0 | (>= 0.0) |
MIN_WEIGHT_FRACTION_PER_NODE | 拆分后每个子项必须具有的加权样本数的最小分数。 如果拆分导致每个子代中总重量的分数小于此值,则放弃拆分。 | 0.0 | (>= 0.0, <= 0.5) |
MIN_INSTANCES_PER_NODE | 拆分后每个子级必须具有的最小实例数。 如果拆分产生的实例数少于此值,则拆分会被放弃。 | 1 | (>= 1) |
MAX_MEMORY_IN_MB | 分配给直方图聚合的最大内存(以MB为单位)。 如果此值太小,则每个迭代只拆分1个节点,并且其聚合可能会超过此大小。 | 256 | (>= 0) |
PREDICTION_COL | 预测输出的列名称。 | “预测” | 任意字符串 |
SEED | 随机种子。 | 不适用 | 任何64位数字 |
WEIGHT_COL | 列名称,例如,权重。 如果未设置或为空,则所有实例权重都将被视为1.0 。 | 未设置 | 任意字符串 |
ONE_VS_REST | 启用或禁用使用One-vs-Rest包装此算法,用于多类分类问题。 | false | true 、false |
示例
Create MODEL modelname OPTIONS(
type = 'decision_tree_classifier'
) AS
select col1, col2, col3 from training-dataset
Factorization Machine Classifier
Factorization Machine Classifier是一个支持普通梯度下降和AdamW求解器的分类算法。 因子化机分类模型使用Logistic损失,该损失可通过梯度下降来优化,并且通常包含正则化项(如L2)以防止过拟合。
参数
下表概述了用于配置和优化Factorization Machine Classifier性能的关键参数。
参数 | 描述 | 默认值 | 可能值 |
---|---|---|---|
TOL | 收敛公差,控制优化精度。 | 1E-6 | (>= 0) |
FACTOR_SIZE | 因子的维数。 | 8 | (>= 0) |
FIT_INTERCEPT | 指定是否适合截取项。 | true | true 、false |
FIT_LINEAR | 指定是否适合线性项(也称为单向项)。 | true | true 、false |
INIT_STD | 初始化系数的标准偏差。 | 0.01 | (>= 0) |
MAX_ITER | 算法运行的最大迭代次数。 | 100 | (>= 0) |
MINI_BATCH_FRACTION | 在训练期间用于小批次的数据部分。 必须在(0, 1] 范围内。 | 1.0 | 0 <值<= 1 |
REG_PARAM | 正则化参数有助于控制模型的复杂性和防止过拟合。 | 0.0 | (>= 0) |
SEED | 算法中用于控制随机进程的随机种子。 | 不适用 | 任何64位数字 |
SOLVER | 用于优化的求解器算法。 支持的选项为gd (梯度下降)和adamW 。 | “adamW” | gd 、adamW |
STEP_SIZE | 优化的初始步长,通常解释为学习率。 | 1.0 | > 0 |
PROBABILITY_COL | 预测类条件概率的列名称。 注意:并非所有模型都会输出经过良好校准的概率;应将这些概率视为置信度分数,而不是确切概率。 | “概率” | 任意字符串 |
PREDICTION_COL | 预测类标签的列名称。 | “预测” | 任意字符串 |
RAW_PREDICTION_COL | 原始预测值的列名称(也称为置信度)。 | "rawPrediction" | 任意字符串 |
ONE_VS_REST | 指定是否为多类分类启用One-vs-Rest。 | FALSE | true 、false |
示例
CREATE MODEL modelname OPTIONS(
type = 'factorization_machines_classifier'
) AS
SELECT col1, col2, col3 FROM training-dataset
Gradient Boosted Tree Classifier
Gradient Boosted Tree Classifier使用决策树集合来提高分类任务的准确性,组合多个树以增强模型性能。
参数
下表概述了用于配置和优化Gradient Boosted Tree Classifier性能的关键参数。
MAX_BINS
CACHE_NODE_IDS
false
,则算法将树传递到执行器以将实例与节点进行匹配。 如果true
,则算法会缓存每个实例的节点ID,从而加快深度树的训练。false
true
、false
CHECKPOINT_INTERVAL
10
表示每10次迭代就检查一次缓存。MAX_DEPTH
0
表示一个叶节点,深度1
表示一个内部节点和2个叶节点。MIN_INFO_GAIN
MIN_WEIGHT_FRACTION_PER_NODE
MIN_INSTANCES_PER_NODE
MAX_MEMORY_IN_MB
PREDICTION_COL
VALIDATION_INDICATOR_COL
false
表示训练,true
表示验证。 如果未设置值,则默认值为None
。RAW_PREDICTION_COL
LEAF_COL
FEATURE_SUBSET_STRATEGY
auto
(基于任务自动确定)、all
(使用所有功能)、onethird
(使用三分之一的功能)、sqrt
(使用功能数量的平方根)、log2
(使用功能数量的基2对数)和n
(其中n是功能的分数,如果位于范围(0, 1]
内,则为特定功能数量,如果位于范围[1, total number of features]
内)。auto
,all
,onethird
,sqrt
,log2
,n
WEIGHT_COL
1.0
。LOSS_TYPE
logistic
(不区分大小写)STEP_SIZE
(0, 1]
范围内的步长大小(也称为学习率),用于缩小每个估算器的贡献。MAX_ITER
SUBSAMPLING_RATE
(0, 1]
PROBABILITY_COL
ONE_VS_REST
false
true
、false
示例
Create MODEL modelname OPTIONS(
type = 'gradient_boosted_tree_classifier'
) AS
select col1, col2, col3 from training-dataset
Linear Support Vector Classifier (线性SVC)
Linear Support Vector Classifier (LinearSVC)构造一个超平面以分类高维空间中的数据。 您可以使用它来最大化类之间的边距,以最大限度地减少分类错误。
参数
下表概述了用于配置和优化Linear Support Vector Classifier (LinearSVC)性能的关键参数。
MAX_ITER
AGGREGATION_DEPTH
FIT_INTERCEPT
true
true
、false
TOL
MAX_BLOCK_SIZE_IN_MB
0
,则自动选择最佳值(通常约为1 MB)。REG_PARAM
STANDARDIZATION
true
true
、false
PREDICTION_COL
RAW_PREDICTION_COL
ONE_VS_REST
false
true
、false
示例
Create MODEL modelname OPTIONS(
type = 'linear_svc_classifier'
) AS
select col1, col2, col3 from training-dataset
Logistic Regression
Logistic Regression是用于二进制分类任务的监督算法。 它使用Logistic函数对实例属于某个类的概率进行建模,并将实例分配给概率较高的类。 这适合将数据分为两类中的一类的问题。
参数
下表概述了用于配置和优化Logistic Regression性能的关键参数。
MAX_ITER
REGPARAM
ELASTICNETPARAM
ElasticNet
混合参数控制L1 (套索)和L2 (凸纹)处罚之间的平衡。 值为0会应用L2惩罚(Ridge,用于减小系数的大小),值为1会应用L1惩罚(Lasso,通过将某些系数设置为零来鼓励稀疏性)。示例
Create MODEL modelname OPTIONS(
type = 'logistic_reg'
) AS
select col1, col2, col3 from training-dataset
Multilayer Perceptron Classifier
Multilayer Perceptron Classifier (MLPC)是前向人工神经网络分类器。 它由多个完全连接的节点层组成,每个节点应用一个加权线性输入组合,后跟一个激活函数。 MLPC算法用于需要非线性决策边界的复杂分类任务。
参数
MAX_ITER
BLOCK_SIZE
STEP_SIZE
gd
)。TOL
1E-6
PREDICTION_COL
SEED
PROBABILITY_COL
RAW_PREDICTION_COL
ONE_VS_REST
false
true
、false
示例
CREATE MODEL modelname OPTIONS(
type = 'multilayer_perceptron_classifier'
) AS
select col1, col2, col3 from training-dataset
Naive Bayes Classifier
Naive Bayes Classifier是一个简单的概率多类分类器,它基于Bayes定理,特征间具有强(朴素)独立性假设。 它通过在训练数据中一次传递计算条件概率来有效地训练,以计算给定每个标签的每个特征的条件概率分布。 对于预测,它使用Bayes定理来计算给定观测值的每个标签的条件概率分布。
参数
MODEL_TYPE
"multinomial"
、"complement"
、"bernoulli"
和"gaussian"
。 模型类型区分大小写。"multinomial"
、"complement"
、"bernoulli"
、"gaussian"
SMOOTHING
PROBABILITY_COL
WEIGHT_COL
1.0
。PREDICTION_COL
RAW_PREDICTION_COL
ONE_VS_REST
false
true
、false
示例
CREATE MODEL modelname OPTIONS(
type = 'naive_bayes_classifier'
) AS
SELECT col1, col2, col3 FROM training-dataset
Random Forest Classifier
Random Forest Classifier是一种集成学习算法,用于在训练期间构建多个决策树。 它通过平均预测和选择大多数树为分类任务选择的类别来缓解过度拟合。
参数
MAX_BINS
CACHE_NODE_IDS
false
,则算法将树传递到执行器以将实例与节点进行匹配。 如果为true
,则算法将缓存每个实例的节点ID,从而加快训练速度。false
true
、false
CHECKPOINT_INTERVAL
10
表示每10次迭代就检查一次缓存。IMPURITY
entropy
、gini
MAX_DEPTH
0
表示一个叶节点,深度1
表示一个内部节点和2个叶节点。MIN_INFO_GAIN
MIN_WEIGHT_FRACTION_PER_NODE
MIN_INSTANCES_PER_NODE
MAX_MEMORY_IN_MB
PREDICTION_COL
WEIGHT_COL
1.0
。SEED
BOOTSTRAP
true
true
、false
NUM_TREES
1
,则不使用引导。 如果大于1
,则应用引导。SUBSAMPLING_RATE
LEAF_COL
PROBABILITY_COL
RAW_PREDICTION_COL
ONE_VS_REST
false
true
、false
示例
Create MODEL modelname OPTIONS(
type = 'random_forest_classifier'
) AS
select col1, col2, col3 from training-dataset