#validation #data-mining #rapidminer #cross-validation
#проверка #интеллектуальный анализ данных #быстрый майнер #перекрестная проверка
Вопрос:
Я нахожусь на этапе выбора функций в проекте интеллектуального анализа данных класса, основной целью которого является сравнение нескольких методов интеллектуального анализа данных (наивные Байи, SVM и т. Д.).). На этом этапе я использую оболочку с X-валидацией, как в примере ниже:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.008">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.3.008" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="optimize_selection" compatibility="5.3.008" expanded="true" height="94" name="Optimize Selection (3)" width="90" x="179" y="120">
<parameter key="generations_without_improval" value="100"/>
<parameter key="limit_number_of_generations" value="true"/>
<parameter key="maximum_number_of_generations" value="-1"/>
<process expanded="true">
<operator activated="true" class="x_validation" compatibility="5.3.008" expanded="true" height="112" name="Validation" width="90" x="179" y="75">
<process expanded="true">
<operator activated="true" class="naive_bayes" compatibility="5.3.008" expanded="true" height="76" name="Naive Bayes (4)" width="90" x="119" y="30"/>
<connect from_port="training" to_op="Naive Bayes (4)" to_port="training set"/>
<connect from_op="Naive Bayes (4)" 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.008" expanded="true" height="76" name="Apply Model (8)" width="90" x="45" y="30">
<list key="application_parameters"/>
</operator>
<operator activated="true" class="performance" compatibility="5.3.008" expanded="true" height="76" name="Performance (8)" width="90" x="209" y="30"/>
<connect from_port="model" to_op="Apply Model (8)" to_port="model"/>
<connect from_port="test set" to_op="Apply Model (8)" to_port="unlabelled data"/>
<connect from_op="Apply Model (8)" from_port="labelled data" to_op="Performance (8)" to_port="labelled data"/>
<connect from_op="Performance (8)" 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"/>
</process>
</operator>
<connect from_port="example set" to_op="Validation" to_port="training"/>
<connect from_op="Validation" from_port="averagable 1" to_port="performance"/>
<portSpacing port="source_example set" spacing="0"/>
<portSpacing port="source_through 1" spacing="0"/>
<portSpacing port="sink_performance" spacing="0"/>
</process>
</operator>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
</process>
</operator>
</process>
Проблема в том, что если я хочу сравнить несколько методов, я должен гарантировать, что наборы, сгенерированные на этапе перекрестной проверки, идентичны для всех методов, чтобы я знал, что точность полученных результатов была получена при точно таких же условиях. Однако внутри оператора X-Validation я не могу поместить более одного оператора создания модели, поэтому я не знаю, как это гарантировать.
Ответ №1:
Optimize Selection
Оператор использует производительность внутренних операторов, чтобы определить, какие атрибуты следует сохранить или удалить во время прямого или обратного выбора. Это означает, что порядок атрибутов будет определяться производительностью, возвращаемой внутренним учеником. Другой внутренний ученик приведет к другому порядку в целом. Если это то, что вы хотите сделать, тогда можно было бы взять копию примера, установленного внутри Optimize Selection
оператора, с помощью Multiply
оператора и передать это другому блоку проверки, содержащему другого учащегося. Затем вы можете использовать Log
оператор для записи значений производительности для этого учащегося и исходного, который управляет упорядочением атрибутов. Optimize Selection
Оператор также может регистрировать свой прогресс, и можно записывать имена функций, которые в настоящее время рассматриваются.
Комментарии:
1. Я понимаю, что вы имеете в виду. Но внутри выбора Optimize у нас есть x-validation для оценки производительности, если я решу использовать k подмножеств в x-validation, есть ли какая-либо гарантия, что у внутреннего ученика будут те же k подмножеств, сгенерированных x-validation?
2. Вы можете установить начальное значение случайного числа для
X-Validation
оператора. Это может дать желаемый эффект, если каждый раз выбирать одни и те же строки внутри сгибов. Перекрестная проверка — это только оценка того, какой может быть производительность. Используемая модель основана на 90% данных, и делается предположение, что это достаточно близко к окончательной модели, когда усредняются 10 различных характеристик модели на 90%.