一、任务简介
背景简介:
模型迭代优化
在进阶实践部分,将在原有Baseline基础上做更多优化,一般优化思路,从特征工程与模型中来思考。
-
特征选择与删除:分析特征的重要性,可以使用特征选择方法(如基于模型的特征重要性)来选择最具有预测能力的特征,也可以删除一些对模型性能影响较小的特征。
-
特征组合与交互:将不同特征进行组合、相乘、相除等操作,创建新的特征,以捕捉特征之间的复杂关系。
-
数值型特征的分桶(Binning):将连续的数值型特征划分为多个区间,可以提高模型对特征的鲁棒性。
-
类别型特征的编码:除了One-Hot编码外,可以尝试使用其他编码方式,如Label Encoding、Target Encoding等,来更好地处理类别型特征。
-
时间特征的挖掘:除了示例中的日期和小时提取,还可以尝试提取星期几、月份等时间信息,可能会影响用户行为。
-
特征缩放:对数值型特征进行缩放,将它们映射到一个相似的范围,有助于模型收敛和性能提升。
二、实践操作
实操步骤:
-
在现有特征工程基础上,加入新的特征观察模型F1是否发生变化。
-
尝试三组能增加模型精度的特征,并记录下特征编码过程
-
将最优的特征从新训练模型,提交结果。
三、具体操作
1、采用标签编码的方式对数据进行编码
from sklearn import preprocessing
enc=preprocessing.LabelEncoder()
enc=enc.fit(train_data['udmap'])
train_data['udmap_feature']=enc.transform(train_data['udmap'])
enc=preprocessing.LabelEncoder()
enc=enc.fit(test_data['udmap'])
test_data['udmap_feature']=enc.transform(test_data['udmap'])
X=train_data.drop(['target','udmap'],axis=1)
Y=train_data['target']
2、加入新的特征进行训练
train_data['hour_feature']=train_data['common_ts_hour'].apply(hours_feature)
test_data['hour_feature']=test_data['common_ts_hour'].apply(hours_feature)
train_data['hour_freq']=train_data['common_ts_hour'].map(train_data['common_ts_hour'].value_counts())
test_data['hour_freq']=test_data['common_ts_hour'].map(test_data['common_ts_hour'].value_counts())
train_data['hour_mean']=train_data['common_ts_hour'].map(train_data.groupby('common_ts_hour')['target'].mean())
test_data['hour_mean']=test_data['common_ts_hour'].map(train_data.groupby('common_ts_hour')['target'].mean())
3、提交结果