4.4 特征的重要性
哪些特征增加了一个发行股未来成功的概率?不幸的是,对于这个问题没有简单的答案。不过,我们将探讨两种方法,来评估这一点。由于我们建立模型时采用的是逻辑回归,所以可以观察每个特征参数的相关系数。请记住逻辑函数使用的是以下形式。
ln(p/1-p) = B0 + B1x
这里,p表示正向结果的概率,B0是截距,B1是特征的系数。一旦我们拟合了模型,就可以检查这些系数。现在立即获取它们。
f fv = pd.DataFrame(X_train.columns, clf.coef_.T).reset_index() fv.columns = ['Coef', 'Feature'] fv.sort_values('Coef', ascending=0).reset_index(drop=True)
上述代码生成图4-38的输出。
对于分类型的特征,特征系数上的正符号告诉我们当这个特征存在时,相对于基线而言它增加了正向结果的概率。对于连续性的特征,正号表示该特征值的增加,会导致正向结果的概率增加。系数的大小告诉我们概率增加的幅度。让我们来看看星期几这个特征。
fv[fv['Feature'].str.contains('Week Day')]
上述代码生成图4-39的输出。
图4-38
图4-39
从图4-38中,我们可以看出没有星期五。这意味着星期五是所有其他同类特征用于比较的基线。我们也看到了根据这里的模型,周四增加了IPO成功的几率。
重要的是,系数并不代表相对于基线,概率实际增加了多少。为了得到这个值,我们必须取其指数。相对于周五,周四概率的增加为e(0.053885) = 1.055。这意味着如果保持所有其他因素不变,周四出现一个成功IPO的可能性比星期五的高出5.5%。我们也可以看到对于IPO而言,星期一是最糟糕的一天,e(-0.132437) = 0.876,也就是出现成功IPO的概率下降约12.4%。
回到特征的重要性,你很可能认为,在这个时候可以拿出具有最大正系数的那些特征,将它们扔到模型里,然后你就会拥有主宰新股市场的一切了。别急着下结论。
让我们看看基于正系数大小的前两个特征。
ipos[ipos['Lead Mgr'].str.contains('Keegan|Towbin')]
上述代码生成图4-40的输出。
图4-40
我们的前两个特征代表了四次IPO的总和。这就是为什么很难从逻辑回归模型提取信息,特别是这么复杂的模型。
然而,并不是没有任何希望了。我们可以利用另一种称为随机森林分类器的模型,来获得重要性的度量。本章不会深入说明这个模型是如何运作的,但它会给出和逻辑回归模型相似的结果,此外,它还将附带提供一个非常好的总结,告诉我们哪些特征对正向结果的影响最大。
使用与前面相同的训练和测试数据集,我们将拟合随机森林分类器。
clf_rf = RandomForestClassifier(n_estimators=1000) clf_rf.fit(X_train, y_train) f_importances = clf_rf.feature_importances_ f_names = X_train f_std = np.std([tree.feature_importances_ for tree in clf_rf.estimators_], axis=0) zz = zip(f_importances, f_names, f_std) zzs = sorted(zz, key=lambda x: x[0], reverse=True) imps = [x[0] for x in zzs[:20]] labels = [x[1] for x in zzs[:20]] errs = [x[2] for x in zzs[:20]] plt.subplots(figsize=(15,10)) plt.bar(range(20), imps, color="r", yerr=errs, align="center") plt.xticks(range(20), labels, rotation=-70);
上述代码生成图4-41的输出。
图4-41
这里的输出向我们提供了一个包含每个特征误差条的排序列表,用于表明特征的重要性。观察这份列表,以“gap opening percentage”和“dollar change from opening”开头的排序看上去非常合理。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论