XGBoost+PCA主成分分析组合模型案例 用户流失风险预测 数学建模竞赛题目+Python源代码_第1页
XGBoost+PCA主成分分析组合模型案例 用户流失风险预测 数学建模竞赛题目+Python源代码_第2页
XGBoost+PCA主成分分析组合模型案例 用户流失风险预测 数学建模竞赛题目+Python源代码_第3页
XGBoost+PCA主成分分析组合模型案例 用户流失风险预测 数学建模竞赛题目+Python源代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XGBoost+PCA案例:用户流失风险预测问题背景:某视频平台需预测用户是否会取消会员订阅,用户特征含50项(如日均观看时长、互动评论数、付费历史等),存在大量冗余特征(如“周均观看时长”与“日均观看时长”强相关),导致模型过拟合。数据:10000名会员的50项特征及流失标签(1=流失,0=留存)。要求:用PCA降维至10个主成分,输入XGBoost模型,对比降维前后的预测精度(AUC值)和训练时间,分析关键流失因素(如“连续3天未登录”)。14.XGBoost+PCA代码:用户流失风险预测importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromsklearn.decompositionimportPCAfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.metricsimportroc_auc_score,classification_reportimportxgboostasxgb#1.数据准备(10000名会员的50项特征)np.random.seed(42)n_samples=10000n_features=50#生成高维特征(模拟用户行为:观看时长、评论数、付费次数等)X=np.random.randn(n_samples,n_features)#核心特征(与流失强相关)core_features=np.random.choice(n_features,5,replace=False)fori,idxinenumerate(core_features):ifi<3:#正向特征(值越高越不易流失)X[:,idx]=np.random.normal(5,1,n_samples)else:#负向特征(值越高越易流失)X[:,idx]=np.random.normal(2,1,n_samples)#生成流失标签(1=流失,0=留存)#核心逻辑:核心特征决定大部分流失概率流失概率=0.5-0.1*X[:,core_features[0]]-0.1*X[:,core_features[1]]-0.1*X[:,core_features[2]]+\0.1*X[:,core_features[3]]+0.1*X[:,core_features[4]]流失概率=np.clip(流失概率,0,1)y=np.where(np.random.rand(n_samples)<流失概率,1,0)print(f"用户流失率:{sum(y)/n_samples:.2%}")#2.数据标准化scaler=StandardScaler()X_scaled=scaler.fit_transform(X)#3.PCA降维pca=PCA(n_components=0.95,random_state=42)#保留95%信息X_pca=pca.fit_transform(X_scaled)print(f"原始特征数:{n_features},降维后特征数:{pca.n_components_}")#4.划分数据集X_train_raw,X_test_raw,y_train,y_test=train_test_split(X_scaled,y,test_size=0.3,random_state=42)X_train_pca,X_test_pca=train_test_split(X_pca,test_size=0.3,random_state=42)#5.XGBoost模型训练与评估deftrain_xgboost(X_train,X_test,y_train,y_test,title):model=xgb.XGBClassifier(objective='binary:logistic',n_estimators=100,max_depth=5,learning_rate=0.1,random_state=42)model.fit(X_train,y_train)y_pred=model.predict(X_test)y_prob=model.predict_proba(X_test)[:,1]auc=roc_auc_score(y_test,y_prob)print(f"\n{title}AUC:{auc:.4f}")print("分类报告:")print(classification_report(y_test,y_pred,target_names=['留存','流失']))returnmodel,auc#基于原始特征的XGBoostmodel_raw,auc_raw=train_xgboost(X_train_raw,X_test_raw,y_train,y_test,"原始特征XGBoost")#基于PCA降维特征的XGBoostmodel_pca,auc_pca=train_xgboost(X_train_pca,X_test_pca,y_train,y_test,"PCA降维XGBoost")#6.结果对比plt.figure(figsize=(8,5))plt.bar(['原始特征','PCA降维'],[auc_raw,auc_pca],color=['blue','orange'])plt.ylim(0.5,1.0)plt.ylabel('AUC值(越大越好)')plt.title('XGBoost模型AUC对比')plt.grid(axis='y',alpha=0.3)plt.show()#7.特征重要性分析(降维后模型)ifhasattr(model_pca,'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论