-
项目目标是通过数据找出盗用公司资金的嫌疑人;通过机器学习来预测未标记的人是否是嫌疑人;
-
2000年美国最大十家公司之一的安然公司在2002年突然破产,其中公司内存在严重的欺诈行为,数据集就是安然公司高管的邮件和详细财务的数据,可以根据未标记人跟嫌疑人的邮件往来信息和财务数据来预测一个人是否是嫌疑人,其中得到财务最大的人就很有可能是嫌疑人,跟嫌疑人交流相对密集的人也可能是嫌疑人。
-
数据集共有146个人的邮件和财务信息,其7个邮件信息,13个财务信息,其中18个已知的嫌疑人和128个非嫌疑人,数据不均衡;
-
异常值:’LOCKHART EUGENE E’信息全为nan没有价值删除掉,TOTAL和TRAVEL AGENCY IN THE PARK可能是拼写错误删除掉,其余的nan值设置成0;email_address,loan_advances这两个特征不是数值或布尔型的数量太多了,没有价值删除掉。
-
这里因为数据不均衡所以使用Precision(精确率)和Recall(召回率)来衡量效果;
Precision(精确率)是计算对是"正确被检索的item"占所有“实际被检索到的item”的比列
在这里就是(poi的人被检索为poi的人数)/(检索到的poi的总数)
Recall(召回率)"正确被检索的item"占所有"应该被检索到的item"的比例
这里就是(正确被检索为poi的人数)/(实际的poi人数=18)
最终使用[other','from_this_person_to_poi''expenses','exercised_stock_options']这组特征,通过交叉验证StratifiedShuffleSplit和feature_importances_从两个特征数量试到十个特征数量发现4个特征数量表现最好,
新增加bns和poi_messages,bns特征即salary和bonus之和通过这个特征可以避免遗漏salary与bonus之和很大而其中一个值很小的情况,poi_messages及(from_poi_to_this_person/from_messages)通过这个特征可以知道那些人跟poi 邮件交往更多;
-
贝叶斯和决策树对特征缩放不敏感但是用到的SVM算法,统一缩放特征;
-
用feature_importances_查看特征的重要性'other'得分0.057,from_this_person_to_poi得分0.036,expenses得分0.071,exercised_stock_options得分0.0633;用交叉验证和feature_importances_方法跑了10次分别选出了在3、4、5个特征数中得分最高的一组特征:
-
3个特征['exercised_stock_options', 'deferred_income', 'poi_messages']得分Precision=0.45, Recall=0.42,
-
4个特征[other', 'from_this_person_to_poi'; 'expenses', 'exercised_stock_options']得分Precision=0.52,Recall=0.48;
-
5个特征['expenses', 'total_stock_value', 'bns', 'other', 'exercised_stock_options']得分Precision=0.41,Recall=0.42;
-
还有一个重复出现在这里个高得分特征集中的特征集['exercised_stock_options', 'other', 'expenses']得分Precision=0.43,Recall=0.42;
综合以上最终选用四个特征的特征集得到
- Precision=0.52,Recall=0.48
因为GridSearchCV默认使用的StratifedKFold的交叉验证方式,但是测试时使用的是StratifiedShuffleSplit方式,所以放弃使用GridSearchCV改为手动调整参数。调整max_depth-初始的树的深度,更好拟合数据。
最终使用了决策树算法,还尝试贝叶斯算法,贝叶斯算法Precision和Recall值差距较大,决策树算法Precision和Recall差距较小
-
用同一特征[other', 'from_this_person_to_poi'; 'expenses', 'exercised_stock_options']决策树得分Precision=0.52,Recall=0.48;贝叶斯得分Precision=0.48,Recall=0.19,这一组特征贝叶斯的精确率和召回率明显低于决策树特别是召回率还不到0.2说明这一组特征用贝叶斯正确分类到的poi很低。
-
贝叶斯算法:选出3-7个特征集的最佳特征和一个特征多次出现在这几个特征集里面的额特征集,最后得出6个特征集效果最好Precision=0.48,Recall=0.41,特征为['poi', 'exercised_stock_options', 'bns', 'long_term_incentive', 'poi_messages', 'salary', 'bonus', 'deferred_income']
最终选择了决策树算法4个特征集为 ['poi', 'other', 'from_this_person_to_poi', 'expenses', 'exercised_stock_options']
Precision=0.52,Recall=0.48
在决策树上最佳特征集中加入新特征bns,看看Precision和Recall是不是比原来高,加入新特征后Precision=0.40,Recall=0.38,所以这个特征没有选好,不用在最终特征中,
优化分类器的性能,使分类器能够更好地拟合数据,不调整参数分类起不能更好的拟合数据;调整的方式在一个参数的范围内循环遍历选择最佳参数。
最终选择的是决策树分类器调整了criterion参数,选择用‘gini’代表基尼系数
max_depth表示决策树最大的深度设置成9 ,如果不调试max_depth数据拟合不太好。
项目用验证方法评估分类器的性能避免过拟合,数据分为训练集和测试集,用交叉验证验证我的分析
网友评论