算法说明

逻辑回归LR

算法简介

一种线性二分类模型。训练好的逻辑回归模型,基于样本特征的加权和以及logistic 函数,实现对样本分类的概率预测P(y|x),其中x表示样本特征,y表示类别(通常分为1类,0类),P(y|x)越大样本越倾向1类,否则倾向0类。P(y|x)默认的分类阈值是0.5,也可根据实际需求自行设定。逻辑回归模型表达式:1/(1+exp(-(wx+b)))。其中w(通常为向量)和b(bias)为模型参数,可以基于训练数据,通过优化算法进行估计。训练过程中可以通过设置L1-norm,L2-norm正则项的系数控制非零参数的规模或数值幅度,从而使模型具有更好的泛化能力。

特点

逻辑回归模型适用于两类数据在特征空间上线性可分或近似线性可分的问题。

  • 作为线性模型,可以通过多种优化算法求解出全局最优解;相比于其他线性分类器,逻辑回归模型的损失函数有较好的鲁棒性,适用于高噪的训练数据。
  • 逻辑回归模型不适用于非线性分类问题,但可通过对原始特征空间进行扩充,从而实现高维空间的近似线性可分。基函数展开是常用的特征扩充方法,如多项式基展开。

模型训练

参数名 API 是否必选 默认值 示例值 详细说明
L1权重 l1Weight 0 0.1 L1 norm正则项系数,主要用于控制非零参数的规模,设置的越小,非零的参数越多
通常<0.001,常见取值为1e-5~1e-6,超过0.001可能模型不收敛
L2权重 l2Weight 0 0.1 L2 norm正则项系数,主要用于控制参数的数值幅度,越大,参数的变化幅度越小,可提高模型的稳定性
通常<0.001,常见取值为1e-5~1e-6,超过0.001可能模型不收敛
算法收敛条件 termination 0.0001 0.0001 LR的收敛判断条件,当过去5轮的目标函数的平均相对下降量小于该值,认为找到最优解,算法退出迭代过程
大于0
最大迭代次数 maxIter 200 100 算法的最大迭代次数,达到最大迭代次数即退出
大于0的整数

模型评估

进行模型训练之后,可以通过模型评估作业,判断模型的优劣。逻辑回归模型评估的API参数包括:

参数名 API 是否必选 示例值 详细说明
模型ID modelId model-1sdfolnxnco12 模型ID
数据集ID datasetId dataset-lsislpqcs3ok 数据集ID
对应的数据集label数必须为2,API层会做校验;对应的数据集必须和训练数据集稀疏性一致,即SparseID/SparseIDWeight的训练集对应SparseID/SparseIDWeight的数据集,DENSE训练集对应DENSE的数据集,API层会做校验。

评估输出结果包括AUC,ROC和PR。

ROC(Receiver Operating Characteristic)曲线和AUC(Area Under Curve)常被用来评价一个二值分类器(binary classifier)的优劣。

ROC的横坐标为False positive rate,纵坐标为True positive rate。取某一个阈值T1,预测值大于T1认为预测结果为正类,这些结果中真实结果为正类的个数为V1,V1除以全部样本正样本个数即为纵坐标,真实结果为负类的个数为V2,V2除以全部样本负类个数即为横坐标,横纵坐标的点即为ROC曲线中的一个点,阈值从0到1计算一连串的坐标点,组成了ROC曲线。曲线下的面积即为AUC。

PR(Precision Recall)正确率召回率曲线,横坐标为召回率,召回的正样本占全部正样本的比例。纵坐标为正确率,召回的正样本占全部召回样本的比例。

注意:由于数据的原因,有可能会导致AUC为nan的情况,如所有预测结果只有一个预测值的情况。

模型预测

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID,对应的数据集必须和训练数据集稀疏性一致,即SparseID/SparseIDWeight的训练集对应SparseID/SparseIDWeight的数据集,DENSE训练集对应DENSE的数据集,API层会做校验。
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。

输出数据格式为:原始数据;label1 rate1,label2 rate2

深度神经网络DNN

算法简介

一种非线性模型,通常包括输入层,输出层,以及一个或多个隐藏层(当没有隐藏层时,等价于线性模型)。不同节点之间通过边(带权重)相连(不一定是全连接)。对于除输入层外的每个节点,输入值为与其相连的所有节点输出值的线性加权和,输出值为输入值经激活函数变换后的数值。

特点

  • 可解决多分类和回归问题。具有极强的函数逼近能力和数据表征能力,可有效的减轻特征工程的工作量;对各种问题都上手较快,但用好较难。
  • 人工神经网络的参数优化只能保证是局部最优,且模型对噪声相对敏感;不同的问题,网络结构差异较大,激活函数只有在非饱和区间具备调节模型的作用,因此,输入层特征的数值范围,中间层节点的输出值等在训练过程中都需要注意。

模型训练

参数名 API 是否必选 默认值 示例值 详细说明
隐藏层各层节点数 layerNode NULL [100,20,10] 隐藏层的节点数,参数必须符合上述规范,头尾带中括号必须以[和]结束,必须以半角逗号分隔,每个元素必须是大于0的整数
隐藏层各层激活函数 layerActive NULL ['sigmoid','tanh','tanh'] 各隐藏层的激活函数,目前仅支持sigmoid和tanh两种,需要注意的是必须要加单引号,头尾带单引号,且个数必须与layerNode中指定的层数相同
L1权重 l1Weight 0 0.1 L1 norm正则项系数,用于控制非零权重的规模,以及限制变化幅度
<0.001,常见取值为1e-5~1e-6,超过0.001可能模型不收敛
学习率 learningRate 0.1 0.1 学习率
0<learningRate<1
学习率下降速度 learningRateDecay 1.0 1.0 学习率下降速率,学习率每过一轮会乘以learning_rate_decay
0<learningRateDecay<1
最大迭代次数 maxIter 100 100 maxIter
大于0的整数
训练类型 modelType classification regression 训练类型,可以支持分类和回归两种,默认为分类模型,可选为回归模型
只能是classification或regression

模型评估

DNN模型评估的API参数与LR的API参数相同,请参照逻辑回归模型评估。

  • 二分类评估结果为AUC,多分类评估结果为多类交叉熵,回归类型评估结果为MSE。

模型预测

DNN模型预测的API参数与LR的API参数相同,请参照逻辑回归预测参数。

  • 二分类结果输出格式:No label(原始的) predict_value(0的预测结果) prediction_value(1的预测结果),中间以空格分隔。

  • 多分类输出结果格式:No label(原始的) 0分类对应结果 1分类对应结果 2分类对应结果 依次类推。

聚类Kmeans

算法简介

一种聚类算法,根据用户指定的聚类数k,找出最优的k个聚类中心,并将数据集划分为k个聚类,每个样本只能属于一个聚类。基本思想是:以特征空间中k个点为中心进行聚类,将数据划分到与其聚类最近的中心点所对应的聚类;通过迭代的方法,交替更新k个聚类中心点,以及数据集的聚类划分方式;直至收敛。

特点

通用的聚类算法,适用于大部分的聚类问题。

  • 适用于大规模数据的聚类分析;模型收敛速度快。
  • 聚类结果局部最优,聚类中心的初始值不同,最终的聚类结果可能会不同;在特征空间上,同一个超椭球体内的数据通常聚为一类,对类环形分布的同类数据会出现聚类失效,但可通过特征变换进行改善。

模型训练

参数名 API 是否必选 默认值 示例值 详细说明
聚类个数 clusterNum NULL 10 聚类个数,大于0的整数
最大迭代次数 maxIter 可选 100 100 最大迭代次数,大于0的整数
收敛条件 convengence 0.001 0.001 收敛判断条件,类内每个点到中心点的距离均值,当两次均值的变化比例小于阈值时,该类收敛。如果全部聚类收敛,则聚类过程收敛,算法结束。大于0
中心点初始化方式 clusterInit INITCLUSTER_RANDOM INITCLUSTER_CANOPY 中心点初始化方式,必须为INITCLUSTER_CANOPY或INITCLUSTER_RANDOM二选一。前者是Canopy选择中心点,或者是随机选取
Canopy的T1值 clusterInitCanopyT1 1.0 1.0 clusterInit为INITCLUSTER_CANOPY时有效,Canopy的T1值。大于0
Canopy的T2值 clusterInitCanopyT2 0.5 0.5 clusterInit为INITCLUSTER_CANOPY时有效,Canopy的T2值。大于0,且T2<T1
距离计算方式 distanceType 0.5 0.5 clusterInit为INITCLUSTER_CANOPY时有效,Canopy的T2值。大于0,且T2<T1
训练结束后,是否根据最终的中心点对原始数据进行分类 datasetCluster false true 训练结束后,是否根据最终的中心点对原始数据进行分类。只能是true或false
数据集保存路径 datasetClusterPath NULL bos://bucketname/path datasetCluster为true时,必须指定该选项,需要保证用户对该路径有写权限,如果路径不存在则创建路径,如果已经存在该路径,会自动清空。
中心点存储方式 clusterSparseSave false true 中心点存储方式,true为稀疏存储方式,false为稠密存储方式。稀疏存储会降低计算效率,因此当特征维度不高时,尽量使用稠密存储方式。如果维度过高使用稠密方式,可能因为内存太小导致任务失败。只能是true或false

模型评估

kmeans算法不提供模型评估程序。

模型预测

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID
对应的数据集必须和训练数据集稀疏性一致,即SparseID/SparseIDWeight的训练集对应SparseID/SparseIDWeight的数据集,DENSE训练集对应DENSE的数据集,API层会做校验。
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。
用户对该路径有写权限,如果路径不存在则创建路径,如果已经存在该路径,会自动清空。

输出结果格式为:原始数据;classid

主题模型LDA

算法简介

一种概率主题模型(topic model),可以看作是PLSA的加强版,可以更加灵活的配置先验参数。原始版本的LDA基于EM算法对全部参数进行估计,包括learning和inference两部分,其中inference部分利用变分的方法进行估计,计算成本较高;引入gibbs sampling算法后,LDA的参数估计过程仅限于inference部分,先验参数全部手工指定。

特点

适用于主题分析,文本聚类,文本特征降噪以及信息检索等。

  • 相比于PLSA,能更加灵活的配置模型先验。
  • 在训练样本充分大时,效果与PLSA近似等价。

模型训练

参数名 API 是否必选 默认值 示例值 详细说明
主题个数 topicNum NULL 10 lda主题个数。大于0的整数
是否每个词频单独计算topic splitTf true true 是否对一篇文档中词的每个词频单独计算topic。true为单独计算,false为统一计算。默认为单独计算,模型效果更优。但单独计算时,迭代训练中更占内存,原始数据膨胀词频的倍数,若训练数据过大,引起训练过程中内存空间不足,请关闭此选项。只能是true或false
Alpha先验 alpha 0.02 0.02 lda算法alpha先验,大于0,常用值为topic数目除以100
Beta先验 beta 0.02 0.01 lda算法beta先验,大于0,常用值为0.01
最大迭代次数 maxIter 30 30 最大迭代次数,大于0的整数

模型评估

参数名 API 是否必选 示例值 详细说明
模型ID modelId model-1sdfolnxnco12 模型ID
数据集ID datasetId dataset-lsislpqcs3ok 对应的数据集的输入类型必须为SparseIDWeight,api层会做校验

模型预测

模型预测的参数如下表所示:

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID,对应的数据集inputType必须为SparseIDWeight,APIi层会做校验
每条样本要预测的主题个数 batchPredictPara {"topicNum":"10"} LDA批量预测时需要指定的其余参数,包含topicNum;
topicNum为每条样本要预测的主题个数、大于0的整数;
若大于LDA模型主题聚类的主题数,则实际预测结果为模型的主题数。
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。
用户对该路径有写权限,如果路径不存在则创建路径,如果已经存在该路径,会自动清空。

批量预测结果格式:原始数据;topic1 value1,topic2 value2,topic3 value3...value从大到小排序

协同过滤算法CF

算法简介

利用集体智慧的一个典型方法,协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。此算法只支持SparseIDWeight格式的数据,并要求原始数据的No字段(即数据的第一列)和特征字段(即数据的第2-N列)必须存在且为整形数,不要求连续有序。

模型训练

参数名 API 是否必选 默认值 示例值 详细说明
有效评价的最小值 minRateThreshold 0 0 有效评价的最小值,小于该值的评价将被推荐系统忽略。这个参数可以用来对数据集进行过滤,过滤掉噪音之类的数据。大于0的浮点数。
有效评价的最大值 maxRateThreshold 5 10 有效评价的最大值,大于该值的评价将被推荐系统忽略。类似于min_rate_threshold。大于0的浮点数,且大于min_rate_threshold。
给用户推荐商品最大个数 number 1000000 1000000 每个商品有效评价的最大个数,超过这个数的评价将被忽略,默认值为1000000。大于0的整数。
与该商品最相似的商品个数 numberSimilarities 100 100 计算与该商品相似度的topN商品,number_similarities指明了TOPN的大小。一般情况下,最终给用户推荐的商品数量有限,把这个参数设置合理的值,最终生成的相似度维度就会减小,这样推荐的时候计算量就会减小。大于0的整数。
相似度计算方式 similarityClass SIMILARITYPEARSON
CORRELATION
SIMILARITYPEARSON
CORRELATION
相似度计算方式:SIMILARITY_PEARSON_CORRELATION,SIMILARITY_COSINE_CORRELATION,SIMILARITY_TANIMOTO_COEFFICIENT。必须是以上三种之一

模型评估

协同过滤的模型评估是采用RMSE(根均方误差)的方式。指定测试集(待被推荐的用户列表文件)和真实结果集(用户指定的应该的推荐结果)。

系统先根据测试集对待被推荐的用户列表进行推荐,再与真实结果集进行计算RMSE,最终的评估结果是一个数值,评估结果文件存储在模型BOS目录下。

输入数据集格式:

测试集(待被推荐的用户列表文件)和真实结果集格式都一样。

  1. 稀疏带权重
    userIdi,[user_tagi], itemi0 ratei0,itemi1 ratei1,...

    itemIdi,[item_tagi],useri0 ratei0,useri1 ratei1,...

  2. 稀疏不带权重
    userIdi,[user_tagi],itemi0,itemi1,...

    itemIdi,[item_tagi],useri0,useri1,...

rate表示评分

参数说明:

参数名 API 是否必选 默认值 示例值 详细说明
有效评价的最小值 minRateThreshold 0 0 小于该值的评价将被推荐系统忽略。大于0的整数。
有效评价的最大值 maxRateThreshold 5 10 有效评价的最大值,大于该值的评价将被推荐系统忽略。大于等于0的整数,且大于 min_rate_threshold。
给用户推荐商品最大个数 number 10 10 指明TOPN的数量,也是给每个用户推荐商品最大数量。大于0的整数。
与该商品相似的商品个数 numberSimilarities 100 100 指明参与推荐计算的相似度的数量,选取的方式是取TopN。大于0的整数。

模型预测

模型预测的参数如下表所示:

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID,对应的数据集inputType必须为SparseIDWeight,
api层会做校验
给用户推荐项目topN batchPredictPara {"topicNum":"10"} 为空,代表为每个用户推荐10个最匹配的商品
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。

贝叶斯深度学习推荐Alaya

算法简介

该算法结合贝叶斯与深度学习技术,辅以在线学习策略,充分利用用户、物品的属性等信息,在Netflix公开数据集上,其RMSE达到冠军相同级别。

模型训练

参数名 API 是否必选 默认值 数值类型 详细说明
L1权重 l1Weight 0.0 float L1 norm正则项系数,主要用于控制非零参数的规模,设置的越小,非零的参数越多。
常见取值为1e-5~1e-6,超过0.001可能模型不收敛
L2权重 l2Weight 0.0 float L2 norm正则项系数,主要用于控制参数的数值幅度,越大,参数的变化幅度越小,可提高模型的稳定性。
常见取值为1e-5~1e-6,超过0.001可能模型不收敛
维度 traitSpaceDim / int(大于0) Alaya会在训练过程中将user_feature和item_feature降维,traitSpaceDim是降维后的维度
最大评分 maxOrdinal / uint 如果rating_val为ordinal形式,则设置为最大的评分(对于五星这个例子来说,就设置为5)。
如果rating_val为not_ordinal形式,则设置为0

模型评估

Alaya 算法暂不提供模型评估程序。

模型预测

与逻辑回归LR相同。

梯度提升决策树GBDT

算法简介

一种通过迭代逐步提升分类能力的决策树算法,该算法由多棵决策树组成,加权累加所有树的结果作为最终结果。

特点

对输入数据要求比较低,无需进行归一化等较复杂操作。同时GBDT作为一种常用的非线性模型,分类能力很强。

模型训练

参数名 API 参数类型 是否必选 默认值 示例值 详细说明
树的个数 tree_num int / 3 树的个数
必须:范围在[1, 500]
树的最大深度 tree_max_depth int / 3 建树的最大深度
必须:范围在[1, 50]
最小样本个数 min_split_num int 3 3 切分节点所包含的最小样本个数
例如:当该值设置为3,计算中一个节点只被分到2个样本,那么该节点就作为叶子节点,不再继续进行切分
必须:sparse_filter_min_num>0
稀疏特征最少出现次数 sparse_filter_min_num int 1 1 如果某个稀疏特征在所有样本中出现的次数小于sparse_filter_min_num,那么建树的时候不考虑使用该特征
必须:sparse_filter_min_num>0

模型评估

GBDT算法暂不提供模型评估程序。

模型预测

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID,对应的数据集必须和训练数据集稀疏性一致。
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。
用户对该路径有写权限,如果路径不存在则创建路径,如果已经存在该路径,会自动清空。

输出结果格式为:样本ID,原始label,预测label,正样本概率,负样本概率,树1:节点ID,...,树N:节点ID

备注

  1. GBDT预测样本中label可以为空,但是训练样本是必须要有label的。

  2. 可选参数会有默认值,如果传递错误的数据类型,会检查类型,导致训练终止。

  3. 不同样本的样本ID,在训练时允许重复,但在预测时需要保证唯一。

  4. 样本ID与feature可以一样。

  5. 训练时样本中需要有正样本和负样本。

因子分解模型FM

算法简介

FM算法的本质是通过机器学习的因子分解方法训练模型,在普通线性模型的基础上增强了分类能力,同时控制参数的规模。

特点

能较好地平衡分类能力和参数个数,有效控制过拟合问题,有较强的泛化能力。能有效地自动进行特征组合。

模型训练

参数名 参数类型 是否必选 默认值 示例值 详细说明
fmSize int 20 20 因子的维数
大于0的整数。
learningRate float 0.01 0.01 学习率
0<learningRate<1,学习率过大可能不收敛(甚至发散),学习率过小会收敛缓慢。
maxIter int 100 100 最大迭代次数
大于0的整数。
termination float 0.00001 0.00001 大于0
FM算法的收敛判断条件,当前后两次的目标函数的差值小于该值,认为找到最优解,算法退出迭代过程。
lrWeightMin float 0.00001 0.00001 fm线性参数截断阀值(绝对值小于此值,不输出在模型中)
lrL2Weight float 0 0 fm线性参数惩罚因子权重值
fmL2Weight float 0 0 fm非线性参数(特征组合)惩罚因子权重值

模型评估

参数名 API 是否必选 示例值 详细说明
模型ID modelId model-1sdfolnxnco12 模型ID
数据集ID datasetId dataset-lsislpqcs3ok 数据集ID
对应的数据集label数必须为2,api层会做校验
对应的数据集必须和训练数据集稀疏性一致,即(SparseID/SparseIDWeight的训练集对应SparseID/SparseIDWeight的数据集,DENSE训练集对应DENSE的数据集),api层会做校验

评估输出结果包括AUC。

AUC(Area Under Curve)常被用来评价一个二值分类器(binary classifier)的优劣。

注意:由于数据的原因,有可能会导致AUC为nan的情况,如所有预测结果只有一个预测值的情况。

模型预测

BML提供数据的批量预测功能,指定数据集和模型,根据模型计算该数据集的预测结果。

参数名 API 是否必选 示例值 详细说明
连接模型 modelId model-1sdfolnxnco12 模型ID
测试数据集 datasetId dataset-lsislpqcs3ok 数据集的ID,对应的数据集必须和训练数据集稀疏性一致,即SparseID/SparseIDWeight的训练集对应SparseID/SparseIDWeight的数据集。
输出路径 outPath bos://bucketName/outpath 输出路径,用户的BOS路径,需要用户有可写权限。
用户对该路径有写权限,如果路径不存在则创建路径,如果已经存在该路径,会自动清空。

结果说明

用户原始数据格式;预测结果(预测label1 概率,预测label2 概率)

其中:用户原始数据格式:[样本ID,原始lable, feature1 weight1, feature2 weight2, ......],详情参考生成数据集部分。

预测结果格式如:

99333,1,喜欢吃苹果 100, 喜欢吃香蕉 5; 1 0.89,0 0.11

即:第99333条样本,原始label 是1(这里是二分类,只能是0和1),feature1 weight1,feature2 weight2;预测1的概率是%89,预测0的概率是%11

备注

  1. FM算法仅支持二分类模型。

  2. 数据类型必须是SparseID或者SparseIDWeight。

  3. 样本ID可以为空,但必须用逗号占位。

  4. 可选参数会有默认值,如果传递错误的数据类型,会检查类型,导致训练终止。

  5. 如果样本数据中权重值的精度超过8位(小数点后超过8位),预测结果中的原始样本会只保留小数点后8位(四舍五入)。

聚类算法DBSCAN

算法简介

DBSCAN 基于密度的空间聚类算法,将具有足够密度的区域划分为簇,并在具有噪声的空间中发现任意形状的簇类。DBSCAN 算法需要指定两个参数:距离阈值ε和样本点阈值minPts。

特点

与kmeans(K均值聚类)相比,不需要输入划分的聚类个数;聚类簇的形状没有偏倚;可以过滤噪声数据。

模型训练

参数名 API 参数类型 是否必选 默认值 示例值 详细说明
输出路径 outputPath string / bos://mybucket/dbscan/output 输出路径,用户的BOS路径,需要用户有写权限
最小样本数 minPoint int / 10 半径内最小的样本数,必须为正整数
半径阈值 radius float / 0.1 半径阈值,须大于0
距离计算方法 distance enum DISTANCE_EUCLIDEAN DISTANCE_EUCLIDEAN 距离计算方法,包括DISTANCE_EUCLIDEAN(欧氏距离),
DISTANCE_SQUAREEUCLIDEAN(平方欧式距离),DISTANCE_MANHATTAN(马哈顿距离),
DISTANCE_COSINE(余弦距离),DISTANCE_TANIMOTO(jaccard距离)等算法

模型结果说明:

最终结果只输出No;classid(以英文分号隔开)
离群点没有输出到结果中。

模型评估

DBSCAN不输出模型,只输出训练数据所属的类别。因此该算法不提供评估的功能。

模型预测

该算法不提供预测功能。

分类算法SVM

算法简介

分类算法SVM(Support Vector Machine)通常用于解决线性不可分问题,通过构建一个或多个高维(甚至是无限多维)的超平面来分类样本点。

分类边界为了减低分类器的泛化误差,需要距离最近的训练资料点越远越好。将分类边界与最近的训练资料点之间的距离称为间隔(margin);SVM 的目标就是要找出间隔最大的超平面来作为分类边界。

特点

SVM 建立在统计学习理论的VC维(Vapnik-Chervonenkis Dimension)理论和结构风险最小原理基础上,根据有限的样本信息在模型的复杂性之间寻求最佳折衷,期望获得最好的推广能力。

模型训练

参数名 API 参数类型 是否必选 默认值 示例值 详细说明
迭代次数 iterator int 200 200 迭代次数
学习率 learnRate float 0.000001 0.000001 学习率
L2正则项系数 regularization float 0.000001 0.000001 L2正则项系数
batch的大小 batchSize int 100 100 batch的大小
最大特征值 maxFeatureNumber int 1000000 1000000 一个样本非零feature的最大个数。如果数据集中的feature个数大于maxFeatureNumber,
则会截取数据集中的前maxFeatureNumber个feature来进行训练。

模型评估

参数名 参数类型 是否必选 示例值 详细说明
datasetId string dataset-sd12lpodfk 用户模型训练的输入数据的数据集id。数据集的格式支持稀疏不带权、稀疏带权和稠密。
数据集的label和id不能为空,id为字符串
modelId string svm-model 用户自定义的模型名称。
evaluatePara map - 算法参数,由算法参数组成的key value组成的map,具体可参考算法API文档。

结果说明

评估的结果存在model的目录下的evaluate_result文件夹中,该文件夹下的dataset-id_job-id文件夹中有三个文件,auc.file,evaluate.result,pr.file。在每次评估结束后,会在评估结果中选择F1值(F1=(2recallprecision) / (recall + precision))最优的bias存入bias.file中,bias.file存放在evaluate_result文件夹下,格式为bias=xxx。注:每次评估结束后生成的bias.file会将之前的bias.file覆盖。

  • auc.file有三列,分别是:bias值,False Positive Rate(FPR 假正率),True Positive Rate(TPR,也就是召回率recall),通过auc的值可以画出auc曲线。

模型预测

模型预测之前必须进行模型评估,否则无法得到正确的bias值,会默认bias值为0。

模型预测的参数如下表所示:

参数名 API 是否必选 示例值 详细说明
连接模型 modelId svm-model 用户自定义的模型ID。
测试数据集 datasetId dataset-sd12lpodfk 用户模型训练的输入数据的数据集id。数据集的格式支持稀疏不带权、稀疏带权和稠密。
数据集的label可以为空,id不能为空,id为字符串验。
算法参数 batchPredictPara - 由算法参数组成的key value组成的map,具体可参考算法API文档。
输出路径 outPath - 输出路径。

结果说明

输出的结果为稀疏带权格式,样例如下

No,label,feature1 weight1,feature2 weight2,.....featureN weightN

其中的label为这条数据预测得到的label,weight为原始数据中feature对应的weight。

逻辑回归算法FTRL

算法简介

逻辑回归算法FTRL(Follow the Regularized Leader)算法是一种在线LR(Logistic Regression)算法。相比较普通的LR算法,FTRL仅需迭代一轮数据就可以达到较好的收敛性。

特点

FTRL算法是目前解决离散特征稀疏解的最好的一种在线优化方法。

模型训练

参数名 API 参数类型 是否必选 默认值 示例值 详细说明
学习率 learningRate float 0.1 0.55 学习率,0< learningRate<1 范围内
初始Bias initialBias float 1.0 1.0 初始Bias
L1正则化系数 l1Weight float 0.1 4.0 L1正则化系数大于0
L2正则化系数 l2Weight float 0.1 0.5 L2正则化系数大于0
特征过滤率 filtRate float 1 1 特征过滤率,即每个特征会以featureCount * filtRate的概率被保存,0< filtRate<=1

模型评估

FTRL模型的结果和LR保持一致,FTRL模型的评估过程复用LR的评估和预测,请求参数完全一致。

结果说明

训练会生成2种结果文件(不带原始特征和带原始特征的,分别为2列和3列)

feature weight \t feature id

feature weight \t feature id \t 原始特性

(对于包含原始特征的输出:只会输出权重值大于1e-6的数据)

模型预测

预测参数与逻辑回归LR相同。