决策树 - 如何获得良好的估计

时间:2014-12-29 16:26:26

标签: data-mining decision-tree rapidminer

我想检查一个网上商店的数据集。数据集包括访问次数和包括一些个人数据的订单数量。 我想找出一个"高订单率"要看。我的想法是使用决策树,因为规则易于理解,您可以根据结果轻松采取行动。 我创建了一个名为"堕胎率"的新专栏。它的访问和订单的关系。 50%以上的一切都很高,其他都很低。 之后,我将数据拆分为训练和测试数据,并基于决策树生成模型。 我的问题是,有一些"少数"堕胎率低的记录。决策树似乎工作正常,但实际上它宣称几乎所有记录都很高,只有5个低流产率的记录是正确的。 我真的不知道如何解决这个问题。有什么想法吗?

RapidMiner process

提前致谢。



<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.015">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="5.3.015" expanded="true" name="Process">
    <parameter key="logverbosity" value="init"/>
    <parameter key="random_seed" value="2001"/>
    <parameter key="send_mail" value="never"/>
    <parameter key="notification_email" value=""/>
    <parameter key="process_duration_for_mail" value="30"/>
    <parameter key="encoding" value="SYSTEM"/>
    <process expanded="true">
      <operator activated="true" class="read_csv" compatibility="5.3.015" expanded="true" height="60" name="Read CSV" width="90" x="45" y="30">
        <parameter key="csv_file" value="C:\temp\WebData.csv"/>
        <parameter key="column_separators" value=";"/>
        <parameter key="trim_lines" value="false"/>
        <parameter key="use_quotes" value="true"/>
        <parameter key="quotes_character" value="&quot;"/>
        <parameter key="escape_character" value="\"/>
        <parameter key="skip_comments" value="false"/>
        <parameter key="comment_characters" value="#"/>
        <parameter key="parse_numbers" value="true"/>
        <parameter key="decimal_character" value=","/>
        <parameter key="grouped_digits" value="false"/>
        <parameter key="grouping_character" value=","/>
        <parameter key="date_format" value=""/>
        <parameter key="first_row_as_names" value="false"/>
        <list key="annotations">
          <parameter key="0" value="Name"/>
        </list>
        <parameter key="time_zone" value="SYSTEM"/>
        <parameter key="locale" value="English (United States)"/>
        <parameter key="encoding" value="windows-1252"/>
        <list key="data_set_meta_data_information">
          <parameter key="0" value="ID.true.integer.attribute"/>
          <parameter key="1" value="Age.true.integer.attribute"/>
          <parameter key="2" value="Sex.true.polynominal.attribute"/>
          <parameter key="3" value="Income.true.polynominal.attribute"/>
          <parameter key="4" value="PersonsHoushold.true.integer.attribute"/>
          <parameter key="5" value="ShippingFlat.true.binominal.attribute"/>
          <parameter key="6" value="OneKlickBuy.true.binominal.attribute"/>
          <parameter key="7" value="CustomerSince.true.real.attribute"/>
          <parameter key="8" value="Visits.true.integer.attribute"/>
          <parameter key="9" value="Orders.true.integer.attribute"/>
          <parameter key="10" value="att11.false.attribute_value.attribute"/>
        </list>
        <parameter key="read_not_matching_values_as_missings" value="false"/>
        <parameter key="datamanagement" value="double_array"/>
      </operator>
      <operator activated="true" class="generate_attributes" compatibility="5.3.015" expanded="true" height="76" name="Generate Attributes" width="90" x="179" y="30">
        <list key="function_descriptions">
          <parameter key="AbortionRate" value="(Visits-Orders)/Visits"/>
        </list>
        <parameter key="use_standard_constants" value="true"/>
        <parameter key="keep_all" value="true"/>
      </operator>
      <operator activated="true" class="generate_attributes" compatibility="5.3.015" expanded="true" height="76" name="Generate Attributes (2)" width="90" x="313" y="30">
        <list key="function_descriptions">
          <parameter key="AbortionRate_Bio" value="(if(AbortionRate&lt;0.5, &quot;low&quot;,&quot;high&quot;))"/>
        </list>
        <parameter key="use_standard_constants" value="true"/>
        <parameter key="keep_all" value="true"/>
      </operator>
      <operator activated="true" class="set_role" compatibility="5.3.015" expanded="true" height="76" name="Set Role" width="90" x="447" y="30">
        <parameter key="attribute_name" value="AbortionRate_Bio"/>
        <parameter key="target_role" value="label"/>
        <list key="set_additional_roles"/>
      </operator>
      <operator activated="true" class="select_attributes" compatibility="5.3.015" expanded="true" height="76" name="Select Attributes" width="90" x="581" y="30">
        <parameter key="attribute_filter_type" value="subset"/>
        <parameter key="attribute" value=""/>
        <parameter key="attributes" value="Income|Sex|OneKlickBuy|ShippingFlat|Age|PersonsHoushold|AbortionRate_Bio|CustomerSince"/>
        <parameter key="use_except_expression" value="false"/>
        <parameter key="value_type" value="attribute_value"/>
        <parameter key="use_value_type_exception" value="false"/>
        <parameter key="except_value_type" value="time"/>
        <parameter key="block_type" value="attribute_block"/>
        <parameter key="use_block_type_exception" value="false"/>
        <parameter key="except_block_type" value="value_matrix_row_start"/>
        <parameter key="invert_selection" value="false"/>
        <parameter key="include_special_attributes" value="false"/>
      </operator>
      <operator activated="true" class="split_data" compatibility="5.3.015" expanded="true" height="94" name="Split Data" width="90" x="715" y="30">
        <enumeration key="partitions">
          <parameter key="ratio" value="0.7"/>
          <parameter key="ratio" value="0.3"/>
        </enumeration>
        <parameter key="sampling_type" value="shuffled sampling"/>
        <parameter key="use_local_random_seed" value="false"/>
        <parameter key="local_random_seed" value="1992"/>
      </operator>
      <operator activated="true" class="decision_tree" compatibility="5.3.015" expanded="true" height="76" name="Decision Tree" width="90" x="447" y="210">
        <parameter key="criterion" value="gain_ratio"/>
        <parameter key="minimal_size_for_split" value="4"/>
        <parameter key="minimal_leaf_size" value="2"/>
        <parameter key="minimal_gain" value="0.02"/>
        <parameter key="maximal_depth" value="20"/>
        <parameter key="confidence" value="0.25"/>
        <parameter key="number_of_prepruning_alternatives" value="3"/>
        <parameter key="no_pre_pruning" value="false"/>
        <parameter key="no_pruning" value="false"/>
      </operator>
      <operator activated="true" class="apply_model" compatibility="5.3.015" expanded="true" height="76" name="Apply Model" width="90" x="648" y="210">
        <list key="application_parameters"/>
        <parameter key="create_view" value="false"/>
      </operator>
      <connect from_op="Read CSV" from_port="output" to_op="Generate Attributes" to_port="example set input"/>
      <connect from_op="Generate Attributes" from_port="example set output" to_op="Generate Attributes (2)" to_port="example set input"/>
      <connect from_op="Generate Attributes (2)" from_port="example set output" to_op="Set Role" to_port="example set input"/>
      <connect from_op="Set Role" from_port="example set output" to_op="Select Attributes" to_port="example set input"/>
      <connect from_op="Select Attributes" from_port="example set output" to_op="Split Data" to_port="example set"/>
      <connect from_op="Split Data" from_port="partition 1" to_op="Decision Tree" to_port="training set"/>
      <connect from_op="Split Data" from_port="partition 2" to_op="Apply Model" to_port="unlabelled data"/>
      <connect from_op="Decision Tree" from_port="model" to_op="Apply Model" to_port="model"/>
      <connect from_op="Apply Model" from_port="labelled data" to_port="result 1"/>
      <connect from_op="Apply Model" from_port="model" to_port="result 2"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="0"/>
      <portSpacing port="sink_result 2" spacing="0"/>
      <portSpacing port="sink_result 3" spacing="0"/>
    </process>
  </operator>
</process>
&#13;
&#13;
&#13;

更新:

我将Rapidminer流程更改为:

&#13;
&#13;
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.015">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="5.3.015" expanded="true" name="Process">
    <process expanded="true">
      <operator activated="true" class="read_csv" compatibility="5.3.015" expanded="true" height="60" name="Read CSV" width="90" x="45" y="30">
        <parameter key="csv_file" value="C:\temp\WebData.csv"/>
        <parameter key="decimal_character" value=","/>
        <parameter key="first_row_as_names" value="false"/>
        <list key="annotations">
          <parameter key="0" value="Name"/>
        </list>
        <parameter key="encoding" value="windows-1252"/>
        <list key="data_set_meta_data_information">
		  <parameter key="0" value="ID.true.integer.attribute"/>
		  <parameter key="1" value="Age.true.integer.attribute"/>
		  <parameter key="2" value="Sex.true.polynominal.attribute"/>
		  <parameter key="3" value="Income.true.polynominal.attribute"/>
		  <parameter key="4" value="PersonsHoushold.true.integer.attribute"/>
		  <parameter key="5" value="ShippingFlat.true.binominal.attribute"/>
		  <parameter key="6" value="OneKlickBuy.true.binominal.attribute"/>
		  <parameter key="7" value="CustomerSince.true.real.attribute"/>
		  <parameter key="8" value="Visits.true.integer.attribute"/>
		  <parameter key="9" value="Orders.true.integer.attribute"/>
          <parameter key="10" value="att11.false.attribute_value.attribute"/>
        </list>
        <parameter key="read_not_matching_values_as_missings" value="false"/>
      </operator>
      <operator activated="true" class="generate_attributes" compatibility="5.3.015" expanded="true" height="76" name="Generate Attributes" width="90" x="179" y="30">
        <list key="function_descriptions">
          <parameter key="A_AbortionRate" value="(Visits-Orders)/Visits"/>
        </list>
      </operator>
      <operator activated="true" class="generate_attributes" compatibility="5.3.015" expanded="true" height="76" name="Generate Attributes (2)" width="90" x="313" y="30">
        <list key="function_descriptions">
          <parameter key="A_AbortionRate_Bio" value="(if(AbortionRate&lt;0.5, &quot;low&quot;,&quot;high&quot;))"/>
          <parameter key="A_Age" value="(if(Age&lt;18,&quot;Teen&quot;,if(Age&lt;30,&quot;young Adult&quot;,if(Age&lt;60,&quot;Adult&quot;,&quot;Pensioner&quot;))))"/>
          <parameter key="A_CustomerSince" value="(if(CustomerSince&lt;=1,&quot;up to 1 Year&quot;,if(CustomerSince&lt;=2,&quot;1-2 Years&quot;,if(CustomerSince&lt;=3,&quot;2-3 Years&quot;,&quot;over 3 Years&quot;))))"/>
          <parameter key="A_PersonsHoushold" value="(if(PersonsHoushold&lt;=1,&quot;Single&quot;,if(PersonsHoushold&lt;=2,&quot;Pair&quot;,if(PersonsHoushold&lt;=5,&quot;Family&quot;,&quot;extended family&quot;))))"/>
        </list>
      </operator>
      <operator activated="true" class="set_role" compatibility="5.3.015" expanded="true" height="76" name="Set Role" width="90" x="447" y="30">
        <parameter key="attribute_name" value="A_AbortionRate_Bio"/>
        <parameter key="target_role" value="label"/>
        <list key="set_additional_roles">
          <parameter key="K_ID" value="id"/>
        </list>
      </operator>
      <operator activated="true" class="select_attributes" compatibility="5.3.015" expanded="true" height="76" name="Select Attributes" width="90" x="581" y="30">
        <parameter key="attribute_filter_type" value="subset"/>
        <parameter key="attributes" value="A_AbortionRate_Bio|A_Aage|A_CustomerSince|Income|Sex|OneKlickBuy|ShippingFlat|A_PersonsHoushold"/>
      </operator>
      <operator activated="true" class="split_validation" compatibility="5.3.015" expanded="true" height="130" name="Validation" width="90" x="715" y="30">
        <parameter key="sampling_type" value="stratified sampling"/>
        <process expanded="true">
          <operator activated="true" class="multiply" compatibility="5.3.015" expanded="true" height="94" name="Multiply (2)" width="90" x="45" y="30"/>
          <operator activated="true" class="filter_examples" compatibility="5.3.015" expanded="true" height="76" name="Filter Examples (3)" width="90" x="179" y="120">
            <parameter key="condition_class" value="attribute_value_filter"/>
            <parameter key="parameter_string" value="A_AbortionRate_Bio = high"/>
          </operator>
          <operator activated="true" class="sample" compatibility="5.3.015" expanded="true" height="76" name="Sample (4)" width="90" x="313" y="120">
            <parameter key="sample_size" value="1675"/>
            <list key="sample_size_per_class"/>
            <list key="sample_ratio_per_class"/>
            <list key="sample_probability_per_class"/>
          </operator>
          <operator activated="true" class="filter_examples" compatibility="5.3.015" expanded="true" height="76" name="Filter Examples (4)" width="90" x="179" y="30">
            <parameter key="condition_class" value="attribute_value_filter"/>
            <parameter key="parameter_string" value="A_AbortionRate_Bio = low"/>
          </operator>
          <operator activated="true" class="sample" compatibility="5.3.015" expanded="true" height="76" name="Sample" width="90" x="313" y="30">
            <parameter key="sample_size" value="1675"/>
            <list key="sample_size_per_class"/>
            <list key="sample_ratio_per_class"/>
            <list key="sample_probability_per_class"/>
          </operator>
          <operator activated="true" class="append" compatibility="5.3.015" expanded="true" height="94" name="Append (2)" width="90" x="447" y="75"/>
          <operator activated="true" class="decision_tree" compatibility="5.3.015" expanded="true" height="76" name="Decision Tree (2)" width="90" x="581" y="75">
            <parameter key="criterion" value="information_gain"/>
            <parameter key="minimal_gain" value="0.025"/>
            <parameter key="maximal_depth" value="6"/>
          </operator>
          <connect from_port="training" to_op="Multiply (2)" to_port="input"/>
          <connect from_op="Multiply (2)" from_port="output 1" to_op="Filter Examples (4)" to_port="example set input"/>
          <connect from_op="Multiply (2)" from_port="output 2" to_op="Filter Examples (3)" to_port="example set input"/>
          <connect from_op="Filter Examples (3)" from_port="example set output" to_op="Sample (4)" to_port="example set input"/>
          <connect from_op="Sample (4)" from_port="example set output" to_op="Append (2)" to_port="example set 2"/>
          <connect from_op="Filter Examples (4)" from_port="example set output" to_op="Sample" to_port="example set input"/>
          <connect from_op="Sample" from_port="example set output" to_op="Append (2)" to_port="example set 1"/>
          <connect from_op="Append (2)" from_port="merged set" to_op="Decision Tree (2)" to_port="training set"/>
          <connect from_op="Decision Tree (2)" from_port="model" to_port="model"/>
          <portSpacing port="source_training" spacing="0"/>
          <portSpacing port="sink_model" spacing="0"/>
          <portSpacing port="sink_through 1" spacing="0"/>
        </process>
        <process expanded="true">
          <operator activated="true" class="apply_model" compatibility="5.3.015" expanded="true" height="76" name="Apply Model (2)" width="90" x="45" y="30">
            <list key="application_parameters"/>
          </operator>
          <operator activated="true" class="performance" compatibility="5.3.015" expanded="true" height="76" name="Performance" width="90" x="179" y="30"/>
          <connect from_port="model" to_op="Apply Model (2)" to_port="model"/>
          <connect from_port="test set" to_op="Apply Model (2)" to_port="unlabelled data"/>
          <connect from_op="Apply Model (2)" from_port="labelled data" to_op="Performance" to_port="labelled data"/>
          <connect from_op="Performance" from_port="performance" to_port="averagable 1"/>
          <portSpacing port="source_model" spacing="0"/>
          <portSpacing port="source_test set" spacing="0"/>
          <portSpacing port="source_through 1" spacing="0"/>
          <portSpacing port="sink_averagable 1" spacing="0"/>
          <portSpacing port="sink_averagable 2" spacing="0"/>
          <portSpacing port="sink_averagable 3" spacing="0"/>
        </process>
      </operator>
      <connect from_op="Read CSV" from_port="output" to_op="Generate Attributes" to_port="example set input"/>
      <connect from_op="Generate Attributes" from_port="example set output" to_op="Generate Attributes (2)" to_port="example set input"/>
      <connect from_op="Generate Attributes (2)" from_port="example set output" to_op="Set Role" to_port="example set input"/>
      <connect from_op="Set Role" from_port="example set output" to_op="Select Attributes" to_port="example set input"/>
      <connect from_op="Select Attributes" from_port="example set output" to_op="Validation" to_port="training"/>
      <connect from_op="Validation" from_port="model" to_port="result 1"/>
      <connect from_op="Validation" from_port="training" to_port="result 2"/>
      <connect from_op="Validation" from_port="averagable 1" to_port="result 3"/>
      <connect from_op="Validation" from_port="averagable 2" to_port="result 4"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="0"/>
      <portSpacing port="sink_result 2" spacing="0"/>
      <portSpacing port="sink_result 3" spacing="0"/>
      <portSpacing port="sink_result 4" spacing="0"/>
      <portSpacing port="sink_result 5" spacing="0"/>
    </process>
  </operator>
</process>
&#13;
&#13;
&#13;

结果更好,但仍然不好。

类预测为91.53%(高)和33.47%(低)。而低是有趣的部分...... :) 有什么想法吗?

0 个答案:

没有答案