Machine Learning App提供score算子用来做不同场景和不同数据下的模型评估。
score支持的算法评估方式可以分为以下几类:
分类 - Classification
使用场景及限制:
- 建议在测试数据集上运行,通过比较目标变量的真实数据和预测数据,用来评估分类模型的预测效果。
- 支持1-1,1-n,n-n的比较,多用于评估比较不同分类模型在同一数据集上的预测效果。
- 数据必须为int或者str,不支持float。
- 模糊搜索( *)只能在1-n的情况下使用。
通用语法:
..| score <scoring-method-name> [options] <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
以下算法评估方式可以用来评估分类模型的预测效果。
准确性 - Accuracy
用accuracy_score可以计算真实值和预测值之间的准确性,即对于给定的测试数据集,分类器正确分类的样本数与总样本数之比,通常来说,准确率越高,分类器越好
语法:
..| score accuracy_score normalize=<True|False> <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
参数说明:
- 当normalize=True的时候,输出为正确分类的比例;当normalize=False的时候,输出为正确分类的绝对数量。
- normalize 默认为True。
混淆矩阵 - Confusion Matrix
用confusion_matrix可以计算真实值和预测值的混淆矩阵,其每一列代表预测值,每一行代表的是实际的类别。它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class)。
语法:
..| score confusion_matrix <actual_field> against <predicted_field>
使用场景:
- 只支持1-1的比较。
- 不支持模糊搜索( *)。
- 不接受任何参数。
F-1值 - F1-score
用f1_score可以计算真实值和预测值之间的F-1值,即精确率和召回率的一种调和平均数,F-1值越高,分类器越好。F-1值默认准确率和召回率所占权重相同。
语法:
..| score f1_score average=<binary(default) | micro | macro | weighted> pos_label=<str | int> <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
参数说明:
- average参数用来指定计算平均值的方式,支持设为None, Binary, Micro, Macro and Weighted。
- average=Binary(默认值),只支持二元数据(即数据中只有两个类),输出为定义为pos_label的类的平均值。
- average=None,输出为每一个类分别的平均值,只适用于1-1比较的情况。
- average=micro,计算总体的平均值。
- average=macro,计算每一个类的不加权的平均值,不关心类的数量的不平衡。
- average=weighted,计算每一个类的加权后的平均值,关心类的数量的不平衡。
- pos_label参数用来指定在二元数据中的正样本。
- pos_label必须存在于预测值或者真实值之中。
- 当average不是binary的时候,pos_label会被忽略。
AUC值 - ROC-AUC-Score
用roc_auc_score可以计算真实值和预测值之间的AUC值,即ROC曲线下的面积。AUC值越高,分类器越好。
语法:
score roc_auc_score pos_label=<str | int> <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
使用场景:
- 只能用于二元数据的分析。如果原始数据是多元的,必须通过pos_label参数把多元数据转变成二元数据。
- 输入值必须为连续性数据(int或者float)。
参数说明:
- pos_label参数用来指定数据中的正样本。
- 当数据是二元的时候,pos_label可以不提供。
- 当数据是多元的时候,pos_label必须提供,且存在于预测值或者真实值之中。在这种情况下,pos_label指定的正样本会被识别为1,其他所有类都会被识别为0。
回归 - Regression
使用场景及限制:
- 建议在测试数据集上运行,通过比较目标变量的真实数据和预测数据,用来评估回归模型的预测效果。
- 支持1-1,1-n,n-n的比较,多用于评估比较不同回归模型在同一数据集上的预测效果。
- actual_fields的数量和predicted_fields的数量必须相等或者其中一者的数量为1。
- 在1-n的情况下,参数multioutput自动设为raw_values,如果用户已经设定multioutput为其他参数数值,评估算法会报错。
- 数据必须为int或者float,不支持str。
- 模糊搜索( *)只能在1-n的情况下使用。
通用语法:
..| score <scoring-method-name> [options] <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
以下算法评估方式可以用来评估回归模型的预测效果
决定系数 - R2-score
用r2_score可以计算真实值和预测值的R-squared值。
语法:
...|score r2_score multioutput=<raw_values(default) | uniform_average | variance_weighted | None > <actual_field_1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
参数说明:
- multioutput用来指定若干单个变量损失以何种方式被平均
- multioutput=raw_values(默认值),分别返回各维度得分。在multi-class的场景,输出每一个actual_field的field和每一个predicted_field的field相互比较的得分。
- multioutput=uniform_average, 各输出维度得分的平均
- multioutput=variance_weighted, 对所有输出的分数进行平均,并根据每个输出的方差进行加权。
- multioutput=None, 等于multioutput=uniform_average
均方误差 - Mean Squared Error (MSE)
用mean_squared_error可以计算真实值和预测值的MSE值。
语法:
...|score mean_squared_error multioutput=<raw_values(default) | uniform_average> <actual_field__1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
参数说明:
- multioutput用来指定若干单个变量损失以何种方式被平均
- multioutput=raw_values(默认值),分别返回各维度得分。在multi-class的场景,输出每一个actual_field的field和每一个predicted_field的field相互比较的得分。
- multioutput=uniform_average, 各输出维度得分的平均
平均绝对误差 - Mean Absolute Error (MAE)
用mean_absolute_error可以计算真实值和预测值的MAE值。
语法:
...|score mean_absolute_error multioutput=<raw_values(default) | uniform_average> <actual_field__1> ... <actual_field_n> against <predicted_field_1> ... <predicted_field_n>
参数说明:
- multioutput用来指定若干单个变量损失以何种方式被平均
- multioutput=raw_values(默认值),分别返回各维度得分。在multi-class的场景,输出每一个actual_field的field和每一个predicted_field的field相互比较的得分。
- multioutput=uniform_average, 各输出维度得分的平均
聚类 - Clustering
使用场景及限制:
- 建议在测试数据集上运行,通过验证聚类之后的结果评估聚类模型的效果。
- 不支持模糊搜索( *)
通用语法:
..| score <scoring-method-name> [options] <label_field> against <feature_field_1> ... <feature_field_n>
以下算法评估方式可以用来评估聚类模型的预测效果
轮廓系数 - Silhouette Score
用silhouette_score可以计算聚类结果的轮廓系数。通过计算样本i距离簇内其他样本的平均距离(即样本i的簇内不相似度),和样本i距离其他某簇Cj的所有样本的平均距离(样本i与簇Cj的不相似度),评估聚类模型对于簇的划分是否理想。通常来说,轮廓系数越大,说明聚类模型的分簇效果越好。
语法:
...|score silhouette_score metric=<euclidean(default) | cityblock | cosine | l1 | l2 | manhattan | braycurtis | canberra | chebyshev | correlation | hamming | matching | minkowski | sqeuclidean> <label_field> against <feature_field_1> ... <feature_field_n>
参数说明:
- feature_array可以有一个或者n个字段,数据必须为int或者float,不支持str。feature_array的输入为用来做聚类建模的特征字段。
- label_array仅允许一个字段,且该字段必须为离散型数据(例如:a,b,c或1,2,3)。label_arary的输入为聚类的类别标签,可以是真实标签或者聚类之后划分的标签。
- metric用来设定计算样本间距离的方式,默认为euclidean(欧式距离)。