本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。
原文链接:竞赛总结:科大讯飞2024 企业经营健康评估挑战赛 Top3
-
赛题名称:企业经营健康评估挑战赛
-
赛题类型:数据挖掘
-
赛题任务:预测测试集中所以样本对应公司健康状况,判断企业是否濒临破产
https://challenge.xfyun.cn/topic/info?type=management-health
赛事背景
企业经营不善的话,会导致破产或倒闭,会对企业本身和全球经济产生负面影响。简而言之,对于许多相关金融机构来说,评估企业的健康是一项非常重要的任务。金融机构需要有效的预测模型,以便做出适当的贷款决定。
所以有效的企业健康评估对于金融机构做出适当的贷款决定至关重要。一般来说,输入变量(或特征),如财务比率、预测技术等,是影响健康评估的两个最重要的因素。
赛事任务
本次比赛任务是根据公司经营指标相关数据,如偿付能力、盈利能力、现金流比率、资本结构比率、营业额比率、增长等相关字段,然后通过训练数据训练模型,预测测试集中所以样本对应公司健康状况,判断企业是否濒临破产。
赛题数据集
赛题数据由6万条训练集、4万条测试集据组成,共包含95个字段,其中id为样本唯一表示,target字段为预测目标,即此公司是否濒临破产。
其余字段名为x1至x93表示公司经营指标相关数据,如偿付能力、盈利能力、现金流比率、资本结构比率、营业额比率、增长等相关字段。
特别注意,为了保证比赛的公平性,这部分字段(x1-x93)为匿名处理字段。
评估指标
本次竞赛的评价标准采用AUC ,即AUC越高,效果越好。
第三名方案

https://github.com/GODWITHKING1/iFLYTEK-AI-3rd-solution?tab=readme-ov-file
参赛选手为MZX,算法工程师,在科大讯飞、kaggle、量化等多个比赛获奖,热衷于AI的研究和在不同领域的应用。
-
数据可视化

-
数据预处理
from sklearn.preprocessing import StandardScaler
import math
scale= StandardScaler()
train[features]=scale.fit_transform(train[features])
train1=train[~train.T.isnull().any()]
test=train[train.T.isnull().any()]
-
模型训练与验证
kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=24)
train1['preds'] = 0
scores = defaultdict(list)
features_importance= pd.DataFrame()
df_importance_list = []
for fold, (trn_ind, val_ind) in enumerate(kfold.split(train1, y)):
print(f"=====================fold: {fold}=====================")
X_train, y_train = train1.iloc[trn_ind], y.iloc[trn_ind]
X_valid, y_valid = train1.iloc[val_ind], y.iloc[val_ind]
#X_train,X_valid=get_c_default_k_fold(X_train,X_valid)
cb_model = CatBoostClassifier(
iterations=3000,
learning_rate=0.02,
depth=9,
colsample_bylevel=0.85,
subsample=0.8,
auto_class_weights='Balanced',#SqrtBalanced'
eval_metric='AUC',
l2_leaf_reg= 2,
random_seed = 24,
bagging_temperature = 0.2,
od_type='Iter',
metric_period = 75,
min_data_in_leaf=100,
od_wait=100,
boosting_type='Ordered',
)
cb_model.fit(X_train[features], y_train,
eval_set=[(X_train[features], y_train),(X_valid[features],y_valid)],
cat_features=[],
use_best_model=True,
verbose=True)
joblib.dump(cb_model, f'catboost_seed{24}_{fold}.pkl')
preds = cb_model.predict_proba(X_valid[features])[:,1]
train1.loc[val_ind, "preds"] = preds
scores["auc"].append(roc_auc_score(y_valid, preds))
#scores["pearsonr"].append(pearsonr(y_valid, preds)[0])
df_importance = pd.DataFrame({
'column': features,
'importance': cb_model.feature_importances_,
})
df_importance_list.append(df_importance)
del cb_model
gc.collect()
print(f"catboost {5} folds mean auc: {np.mean(scores['auc'])}")
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。


905

被折叠的 条评论
为什么被折叠?



