我对我的数据应用了scikit决策树算法来获得结果。现在,我想要一种机制来确定哪些因素对我的算法以用户可读格式做出的预测贡献最大。
示例:假设我的训练和测试数据与下表相同。
<table border='1'>
<thead>
<th>Parameter1</th>
<th>Parameter2</th>
<th>Parameter3</th>
<th>Parameter4</th>
<th>Class</th>
</thead>
<tr>
<td>abc</td>
<td>1</td>
<td>0.5</td>
<td>2</td>
<td>Success</td>
</tr>
<tr>
<td>pqr</td>
<td>1.2</td>
<td>0.6</td>
<td>1.4</td>
<td>Success</td>
</tr>
<tr>
<td>abc</td>
<td>0.9</td>
<td>1</td>
<td>2</td>
<td>Failure</td>
</tr>
</table>
&#13;
应用算法后,我能够以很好的精度预测事物。现在,我想要的是为用户提供导致预测成功/失败的所有参数的权重。
实施例:
<table border='1'>
<thead>
<th>Parameter1</th>
<th>Parameter2</th>
<th>Parameter3</th>
<th>Parameter4</th>
<th>Class</th>
</thead>
<tr>
<td style="background-color:#FEF3AD;">50%</td>
<td style="background-color:#00FF00;">80%</td>
<td style="background-color:#00FF00;">80%</td>
<td style="background-color:#FEF3AD;">50%</td>
<td>Success</td>
</tr>
<tr>
<td style="background-color:#00BB00;">100%</td>
<td style="background-color:#00D500;">90%</td>
<td style="background-color:#c9ff00;">70%</td>
<td style="background-color:#00D500;">90%</td>
<td>Success</td>
</tr>
<tr>
<td style="background-color:#FEF3AD;">50%</td>
<td style="background-color:#ff7f39;">10%</td>
<td style="background-color:#ff1a00;">5%</td>
<td style="background-color:#FEF3AD;">50%</td>
<td>Failure</td>
</tr>
</table>
&#13;
因此,第二个表格表明相关参数在多大程度上有助于该特定行的成功。
我到目前为止尝试的是具备以下机制:
SELECT Parameter1, COUNT('SUCCESS')/COUNT(*) FROM table and joins WHERE clauses GROUP BY Parameter1;
将参数相关系数添加到从查询中获得的Success%。此步骤是将相关因子添加到正常统计百分比。
将每个参数存储在我的数据库中: 示例:
参数1,abc,50%
参数1,pqr,100%
等等......
有更好或更有效的方法吗?请提供详细信息。
谢谢。
答案 0 :(得分:0)
您可以使用feature_importances_
了解每个功能的贡献。
但是,值feature_importances_
返回并不直接考虑预测准确性。
出于此目的,您可以使用mean decrease accuracy
来评估有关特定评估指标的每个功能贡献。
以下博客文章包含很好的解释和python示例代码。
Selecting good features – Part III: random forests - Diving into data
mean decrease accuracy
的主要思想是选择一个特征并随机排列数据集中所有实例中的特征值,使特征无意义。
(A) If accuracy decreases, the selected feature is important for prediction.
(B) If not, the selected feature is not so important for prediction.
使用mean decrease accuracy
的优点是:
(1) You can apply it to any classifiers including ensemble models.
(2) You can apply it to any evaluation metric.