1、准确率,是指分类正确的样本占总样本个数的比例,其缺点是不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
2、精确率,是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
3、召回率,是指分类正确的正样本个数占真正的正样本个数的比例。
4、P-R(Precision-Recall)曲线,横轴是召回率,纵轴是精确率,对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动生成的。
5、F1 score和ROC曲线也能综合地反映一个排序模型的性能
6、RMSE指标一般能很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。
7、ROC曲线的横坐标为假阳性率(False Positive Rate, FPR),纵坐标为真阳性率(True Positive Rate, TPR)
8、
F
P
R
=
F
P
N
FPR = \frac{FP}{N}
FPR=NFP
T
P
R
=
T
P
P
,
TPR = \frac{TP}{P},
TPR=PTP,
其中P是真实的正样本数量,N是真实的负样本数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。
9、如何绘制ROC曲线,ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的。有一种直观绘制ROC曲线的方法:
10、如何计算AUC
11、欧式距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。
12、k-fold交叉验证
# k-fold示例代码,数据需要自己准备
from sklearn.model_selection import KFold, StratifiedKFold
import lightgbm as lgb
model = lgb.LGBMClassifier(objective='binary',
boosting_type='goss',
tree_learner='serial',
num_leaves=2 ** 8,
max_depth=16,
learning_rate=0.2,
n_estimators=10000,
subsample=0.75,
feature_fraction=0.55,
reg_alpha=0.2,
reg_lambda=0.2,
random_state=1983,
is_unbalance=True,
# scale_pos_weight=130,
metric='auc')
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=1983)
for fold_id, (trn_idx, val_idx) in enumerate(kfold.split(train[feature_names], train[ycol])):
X_train = train.iloc[trn_idx][feature_names]
Y_train = train.iloc[trn_idx][ycol]
X_val = train.iloc[val_idx][feature_names]
Y_val = train.iloc[val_idx][ycol]
print('\nFold_{} Training ================================\n'.format(fold_id + 1))
lgb_model = model.fit(X_train,
Y_train,
eval_names=['train', 'valid'],
eval_set=[(X_train, Y_train), (X_val, Y_val)],
verbose=500,
eval_metric='auc',
early_stopping_rounds=50)
pred_val = lgb_model.predict_proba(
X_val, num_iteration=lgb_model.best_iteration_)
df_oof = train.iloc[val_idx][['session_id', ycol]].copy()
df_oof['pred'] = pred_val[:, 1]
oof.append(df_oof)
pred_test = lgb_model.predict_proba(
test[feature_names], num_iteration=lgb_model.best_iteration_)
prediction[ycol] += pred_test[:, 1] / kfold.n_splits
13、降低过拟合风险的方法
14、降低欠拟合风险的方法
活动地址:CSDN21天学习挑战赛