Кросс-валидация — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов.  
 
'''Кросс-валидация''' или '''скользящий контроль''' это процедура оценивания обобщающей способности алгоритмов.  
 
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы.  
 
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы.  
 +
  
 
== Разновидности Кросс-валидации ==
 
== Разновидности Кросс-валидации ==
  
=== Hold-out Validation ===
+
=== Контроль на отложенных данных (Hold-Out Validation) ===
Обучающая выборка разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex>
+
 
 +
Обучающая выборка один раз случайным образом разбивается на две части <tex> T^l = T^t \cup T^{l-t} </tex>
 +
 
 +
После чего решается задача оптимизации:
 +
 
 +
<tex>HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex>
 +
 
 +
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации.
 +
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.
 +
 +
=== Полная кросс-валидация (CVV) ===
 +
# Выбирается значение <tex>t</tex>
 +
# Выборка разбивается всеми возможными способами на две части <tex> T^l = T^t \cup T^{l-t} </tex>
 +
 
 +
После чего решается задача оптимизации:
 +
 +
<tex>CVV_t = \frac{1}{C_l^{l-t}}
 +
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min </tex>
  
<tex> HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min </tex>
+
=== k-fold Кросс-валидация ===
  
== Алгоритм  кросс-валидации ==
+
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей <tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k}  </tex>
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей;
 
 
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:
 
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:
 
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;
 
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;
 
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;
 
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении;
# В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.
+
 
 +
Каждая из <tex>k</tex> частей единожды используется для тестирования.
 +
Как правило <tex>k = 10</tex> (5 в случае малого размера выборки)
 +
 
 +
В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.
  
 
== См. также ==
 
== См. также ==
 +
* [[Общие понятия]]<sup>[на 17.01.19 не создан]</sup
 
* [[Модель алгоритма и ее выбор]]
 
* [[Модель алгоритма и ее выбор]]
* [[Мета-обучение]]<sup>[на 16.01.19 не создан]</sup>
+
* [[Мета-обучение]]<sup>[на 17.01.19 не создан]</sup>
  
 
== Примечания ==
 
== Примечания ==

Версия 20:14, 17 января 2019

Кросс-валидация или скользящий контроль это процедура оценивания обобщающей способности алгоритмов. С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы.


Разновидности Кросс-валидации

Контроль на отложенных данных (Hold-Out Validation)

Обучающая выборка один раз случайным образом разбивается на две части [math] T^l = T^t \cup T^{l-t} [/math]

После чего решается задача оптимизации:

[math]HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min [/math]

Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.

Полная кросс-валидация (CVV)

  1. Выбирается значение [math]t[/math]
  2. Выборка разбивается всеми возможными способами на две части [math] T^l = T^t \cup T^{l-t} [/math]

После чего решается задача оптимизации:

[math]CVV_t = \frac{1}{C_l^{l-t}} \displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min [/math]

k-fold Кросс-валидация

  1. Обучающая выборка разбивается на [math] k [/math] непересекающихся одинаковых по объему частей [math]T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k} [/math]
  2. Производится [math] k [/math] итераций. На каждой итерации происходит следующее:
    1. Модель обучается на [math] k - 1 [/math] части обучающей выборки;
    2. Модель тестируется на части обучающей выборки, которая не участвовала в обучении;

Каждая из [math]k[/math] частей единожды используется для тестирования. Как правило [math]k = 10[/math] (5 в случае малого размера выборки)

В результате можно посчитать различные метрики, показывающие, насколько модель удачная, например, среднюю ошибку на частях, которые не участвовали в обучающей выборке.

См. также

Примечания

  1. Кросс-валидация
  2. Автоматизированный выбор модели в библиотеке WEKA для Java
  3. Автоматизированный выбор модели в библиотеке TPOT для Python
  4. Автоматизированный выбор модели в библиотеке sklearn для Python

Источники информации

  1. Скользящий контроль - статья на MachineLearning.ru
  2. Применение обучения с подкреплением для одновременного выбора модели алгоритма классификации и ее структурных параметров