<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.242.9.103&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.242.9.103&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/46.242.9.103"/>
		<updated>2026-04-04T04:02:46Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=74965</id>
		<title>Кросс-валидация</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=74965"/>
				<updated>2020-07-27T00:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;46.242.9.103: /* Разновидности кросс-валидации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Кросс-валидация''' или '''скользящий контроль''' {{---}} процедура эмпирического оценивания обобщающей способности алгоритмов. &lt;br /&gt;
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. &lt;br /&gt;
&lt;br /&gt;
=== Определения и обозначения === &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} множество [[Общие понятия | признаков]], описывающих объекты, а &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt; {{---}} конечное множество меток.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = {(x_i, y_i)}_{i=1}^{l}, x_i \in X, y_i \in Y&amp;lt;/tex&amp;gt; {{---}} обучающая выборка,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; {{---}} мера качества,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; {{---}} [[Модель алгоритма и ее выбор | модель]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mu: (X \times Y)^l \to A, &amp;lt;/tex&amp;gt; {{---}} алгоритм обучения.&lt;br /&gt;
&lt;br /&gt;
== Разновидности кросс-валидации ==&lt;br /&gt;
&lt;br /&gt;
=== Валидация на отложенных данных (Hold-Out Validation) ===&lt;br /&gt;
&lt;br /&gt;
Обучающая выборка один раз случайным образом разбивается на две части &amp;lt;tex&amp;gt; T^l = T^t \cup T^{l-t} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Hold-out.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После чего решается задача оптимизации: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. &lt;br /&gt;
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.&lt;br /&gt;
&lt;br /&gt;
=== Полная кросс-валидация (Complete cross-validation) ===&lt;br /&gt;
# Выбирается значение &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# Выборка разбивается всеми возможными способами на две части &amp;lt;tex&amp;gt; T^l = T^t \cup T^{l-t} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:CompleteCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;CVV_t = \frac{1}{C_l^{l-t}} &lt;br /&gt;
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Здесь число разбиений &amp;lt;tex&amp;gt;C_l^{l-t}&amp;lt;/tex&amp;gt; становится слишком большим даже при сравнительно малых значениях t, что затрудняет практическое применение данного метода.&lt;br /&gt;
&lt;br /&gt;
=== k-fold кросс-валидация ===&lt;br /&gt;
&lt;br /&gt;
# Обучающая выборка разбивается на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; непересекающихся одинаковых по объему частей;&lt;br /&gt;
# Производится &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; итераций. На каждой итерации происходит следующее:&lt;br /&gt;
## Модель обучается на &amp;lt;tex&amp;gt; k - 1 &amp;lt;/tex&amp;gt; части обучающей выборки;&lt;br /&gt;
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении.&lt;br /&gt;
Каждая из &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; частей единожды используется для тестирования. &lt;br /&gt;
Как правило, &amp;lt;tex&amp;gt;k = 10&amp;lt;/tex&amp;gt; (5 в случае малого размера выборки).&lt;br /&gt;
&lt;br /&gt;
[[Файл:K-fold-validation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k}, &lt;br /&gt;
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Пример кода для k-fold кросс-валидации:&lt;br /&gt;
  '''# Пример классификатора, cпособного проводить различие между всего лишь двумя&lt;br /&gt;
  '''# классами, &amp;quot;пятерка&amp;quot; и &amp;quot;не пятерка&amp;quot; из набор данных MNIST&amp;lt;/font&amp;gt;&lt;br /&gt;
  '''import''' numpy '''as''' np&lt;br /&gt;
  '''from''' sklearn.model_selection '''import''' StratifiedKFold&lt;br /&gt;
  '''from''' sklearn.datasets '''import''' fetch_openml&lt;br /&gt;
  '''from''' sklearn.base '''import''' clone&lt;br /&gt;
  '''from''' sklearn.linear_model '''import''' SGDClassifier&lt;br /&gt;
  &lt;br /&gt;
  mnist = fetch_openml('mnist_784', version=1)&lt;br /&gt;
  X, y = mnist[&amp;quot;data&amp;quot;], mnist[&amp;quot;target&amp;quot;]&lt;br /&gt;
  y = y.astype(np.uint8)&lt;br /&gt;
  X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]&lt;br /&gt;
  y_train_5 = (y_train == 5) &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; # True для всех пятерок, False для в сех остальных цифр. Задача опознать пятерки&amp;lt;/font&amp;gt;&lt;br /&gt;
  y_test_5 = (y_test == 5)&lt;br /&gt;
  sgd_clf = SGDClassifier(random_state=42)&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; # классификатор на основе метода стохастического градиентного спуска (Stochastic Gradient Descent SGD)&amp;lt;/font&amp;gt;&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Разбиваем обучающий набора на 3 блока&amp;lt;/font&amp;gt;&lt;br /&gt;
  # выработку прогнозов и их оценку осуществляем на каждом блоке с использованием модели, обученной на остальных блоках&amp;lt;/font&amp;gt;&lt;br /&gt;
  skfolds = StratifiedKFold(n_splits=3, random_state=42)&lt;br /&gt;
  for train_index, test_index in skfolds.split(X_train, y_train_5):&lt;br /&gt;
      clone_clf = clone(sgd_clf)&lt;br /&gt;
      X_train_folds = X_train[train_index]&lt;br /&gt;
      y_train_folds = y_train_5[train_index]&lt;br /&gt;
      X_test_fold = X_train[test_index]&lt;br /&gt;
      y_test_fold = y_train_5[test_index]&lt;br /&gt;
      clone_clf.fit(X_train_folds, y_train_folds)&lt;br /&gt;
      y_pred = clone_clf.predict(X_test_fold)&lt;br /&gt;
      n_correct = sum(y_pred == y_test_fold)&lt;br /&gt;
      print(n_correct / len(y_pred))&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# print 0.95035 &lt;br /&gt;
  #       0.96035 &lt;br /&gt;
  #       0.9604&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== t×k-fold кросс-валидация === &lt;br /&gt;
# Процедура выполняется &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; раз: &lt;br /&gt;
## Обучающая выборка случайным образом разбивается на &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; непересекающихся одинаковых по объему частей;&lt;br /&gt;
## Производится &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; итераций. На каждой итерации происходит следующее:&lt;br /&gt;
### Модель обучается на &amp;lt;tex&amp;gt; k - 1 &amp;lt;/tex&amp;gt; части обучающей выборки;&lt;br /&gt;
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k}  &amp;lt;/tex&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Кросс-валидация по отдельным объектам (Leave-One-Out) === &lt;br /&gt;
Выборка разбивается на &amp;lt;tex&amp;gt;l-1&amp;lt;/tex&amp;gt; и 1 объект &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; раз.&lt;br /&gt;
&lt;br /&gt;
[[Файл:LeaveOneOut.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_i = (x_i, y_i)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Преимущества LOO в том, что каждый объект ровно один раз участвует в контроле, а длина обучающих подвыборок лишь на единицу меньше длины полной выборки.&lt;br /&gt;
&lt;br /&gt;
Недостатком LOO является большая ресурсоёмкость, так как обучаться приходится &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; раз. Некоторые методы обучения позволяют достаточно быстро перенастраивать внутренние параметры алгоритма при замене одного обучающего объекта другим. В этих случаях вычисление LOO удаётся заметно ускорить.&lt;br /&gt;
&lt;br /&gt;
=== Случайные разбиения (Random subsampling) === &lt;br /&gt;
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз.&lt;br /&gt;
&lt;br /&gt;
[[Файл:CompleteCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Критерий целостности модели (Model consistency criterion) === &lt;br /&gt;
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ModelConsistencyCriterion.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Метод может быть обобщен как аналог &amp;lt;tex&amp;gt; CV_{t \times 2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Общие понятия]]&lt;br /&gt;
* [[Модель алгоритма и ее выбор]]&lt;br /&gt;
* [[Мета-обучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] -  статья на MachineLearning.ru&lt;br /&gt;
# [https://drive.google.com/open?id=1p9CTAa1_gJpj94RXBEcQ09aVOa-KTlrd Model assessment and selection]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>46.242.9.103</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=74964</id>
		<title>Кросс-валидация</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F&amp;diff=74964"/>
				<updated>2020-07-27T00:58:05Z</updated>
		
		<summary type="html">&lt;p&gt;46.242.9.103: /* Разновидности кросс-валидации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Кросс-валидация''' или '''скользящий контроль''' {{---}} процедура эмпирического оценивания обобщающей способности алгоритмов. &lt;br /&gt;
С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы. &lt;br /&gt;
&lt;br /&gt;
=== Определения и обозначения === &lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; X &amp;lt;/tex&amp;gt; {{---}} множество [[Общие понятия | признаков]], описывающих объекты, а &amp;lt;tex&amp;gt; Y &amp;lt;/tex&amp;gt; {{---}} конечное множество меток.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = {(x_i, y_i)}_{i=1}^{l}, x_i \in X, y_i \in Y&amp;lt;/tex&amp;gt; {{---}} обучающая выборка,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; {{---}} мера качества,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; {{---}} [[Модель алгоритма и ее выбор | модель]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mu: (X \times Y)^l \to A, &amp;lt;/tex&amp;gt; {{---}} алгоритм обучения.&lt;br /&gt;
&lt;br /&gt;
== Разновидности кросс-валидации ==&lt;br /&gt;
&lt;br /&gt;
=== Валидация на отложенных данных (Hold-Out Validation) ===&lt;br /&gt;
&lt;br /&gt;
Обучающая выборка один раз случайным образом разбивается на две части &amp;lt;tex&amp;gt; T^l = T^t \cup T^{l-t} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Hold-out.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После чего решается задача оптимизации: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;HO(\mu, T^t, T^{l-t}) = Q(\mu(T^t), T^{l-t}) \to min &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. &lt;br /&gt;
Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.&lt;br /&gt;
&lt;br /&gt;
=== Полная кросс-валидация (Complete cross-validation) ===&lt;br /&gt;
# Выбирается значение &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;;&lt;br /&gt;
# Выборка разбивается всеми возможными способами на две части &amp;lt;tex&amp;gt; T^l = T^t \cup T^{l-t} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:CompleteCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;CVV_t = \frac{1}{C_l^{l-t}} &lt;br /&gt;
\displaystyle\sum_{T^l = T^t \cup T^{l-t}} Q(\mu(T^t), T^{l-t}) \to min &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Здесь число разбиений &amp;lt;tex&amp;gt;C_l^{l-t}&amp;lt;/tex&amp;gt; становится слишком большим даже при сравнительно малых значениях t, что затрудняет практическое применение данного метода.&lt;br /&gt;
&lt;br /&gt;
=== k-fold кросс-валидация ===&lt;br /&gt;
&lt;br /&gt;
# Обучающая выборка разбивается на &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; непересекающихся одинаковых по объему частей;&lt;br /&gt;
# Производится &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; итераций. На каждой итерации происходит следующее:&lt;br /&gt;
## Модель обучается на &amp;lt;tex&amp;gt; k - 1 &amp;lt;/tex&amp;gt; части обучающей выборки;&lt;br /&gt;
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении.&lt;br /&gt;
Каждая из &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; частей единожды используется для тестирования. &lt;br /&gt;
Как правило, &amp;lt;tex&amp;gt;k = 10&amp;lt;/tex&amp;gt; (5 в случае малого размера выборки).&lt;br /&gt;
&lt;br /&gt;
[[Файл:K-fold-validation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k}, &lt;br /&gt;
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Пример кода для k-fold кросс-валидации:&lt;br /&gt;
  '''# Пример классификатора, cпособного проводить различие между всего лишь двумя&lt;br /&gt;
  '''# классами, &amp;quot;пятерка&amp;quot; и &amp;quot;не пятерка&amp;quot; из набор данных MNIST&amp;lt;/font&amp;gt;&lt;br /&gt;
  '''import''' numpy '''as''' np&lt;br /&gt;
  '''from''' sklearn.model_selection '''import''' StratifiedKFold&lt;br /&gt;
  '''from''' sklearn.datasets '''import''' fetch_openml&lt;br /&gt;
  '''from''' sklearn.base '''import''' clone&lt;br /&gt;
  '''from''' sklearn.linear_model '''import''' SGDClassifier&lt;br /&gt;
  &lt;br /&gt;
  mnist = fetch_openml('mnist_784', version=1)&lt;br /&gt;
  X, y = mnist[&amp;quot;data&amp;quot;], mnist[&amp;quot;target&amp;quot;]&lt;br /&gt;
  y = y.astype(np.uint8)&lt;br /&gt;
  X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]&lt;br /&gt;
  y_train_5 = (y_train == 5) &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; # True для всех пятерок, False для в сех остальных цифр. Задача опознать пятерки&amp;lt;/font&amp;gt;&lt;br /&gt;
  y_test_5 = (y_test == 5)&lt;br /&gt;
  sgd_clf = SGDClassifier(random_state=42)&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; # классификатор на основе метода стохастического градиентного спуска (Stochastic Gradient Descent SGD)&amp;lt;/font&amp;gt;&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Разбиваем обучающий набора на 3 блока&amp;lt;/font&amp;gt;&lt;br /&gt;
  # выработку прогнозов и их оценку осуществляем на каждом блоке с использованием модели, обученной на остальных блоках&amp;lt;/font&amp;gt;&lt;br /&gt;
  skfolds = StratifiedKFold(n_splits=3, random_state=42)&lt;br /&gt;
  for train_index, test_index in skfolds.split(X_train, y_train_5):&lt;br /&gt;
      clone_clf = clone(sgd_clf)&lt;br /&gt;
      X_train_folds = X_train[train_index]&lt;br /&gt;
      y_train_folds = y_train_5[train_index]&lt;br /&gt;
      X_test_fold = X_train[test_index]&lt;br /&gt;
      y_test_fold = y_train_5[test_index]&lt;br /&gt;
      clone_clf.fit(X_train_folds, y_train_folds)&lt;br /&gt;
      y_pred = clone_clf.predict(X_test_fold)&lt;br /&gt;
  n_correct = sum(y_pred == y_test_fold)&lt;br /&gt;
  print(n_correct / len(y_pred))&lt;br /&gt;
  &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# print 0.95035 &lt;br /&gt;
  #       0.96035 &lt;br /&gt;
  #       0.9604&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== t×k-fold кросс-валидация === &lt;br /&gt;
# Процедура выполняется &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; раз: &lt;br /&gt;
## Обучающая выборка случайным образом разбивается на &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; непересекающихся одинаковых по объему частей;&lt;br /&gt;
## Производится &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; итераций. На каждой итерации происходит следующее:&lt;br /&gt;
### Модель обучается на &amp;lt;tex&amp;gt; k - 1 &amp;lt;/tex&amp;gt; части обучающей выборки;&lt;br /&gt;
### Модель тестируется на части обучающей выборки, которая не участвовала в обучении.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;T^l = F_{(1,1)} \cup \dots \cup F_{(k,1)} = \dots = F_{(1,t)} \cup \dots \cup F_{(k,t)}, |F_{(i,j)}| \approx \frac{l}{k}  &amp;lt;/tex&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; CV_{t \times k} = \frac{1}{tk} \sum_{j=1}^t \sum_{i=1}^{k} Q(\mu(T^l \setminus F_{(i,j)}),F_{(i,j)}) \to min &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Кросс-валидация по отдельным объектам (Leave-One-Out) === &lt;br /&gt;
Выборка разбивается на &amp;lt;tex&amp;gt;l-1&amp;lt;/tex&amp;gt; и 1 объект &amp;lt;tex&amp;gt;l&amp;lt;/tex&amp;gt; раз.&lt;br /&gt;
&lt;br /&gt;
[[Файл:LeaveOneOut.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;LOO = \frac{1}{l} \sum_{i=1}^{l} Q(\mu(T^l \setminus p_i),p_i) \to min &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;p_i = (x_i, y_i)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Преимущества LOO в том, что каждый объект ровно один раз участвует в контроле, а длина обучающих подвыборок лишь на единицу меньше длины полной выборки.&lt;br /&gt;
&lt;br /&gt;
Недостатком LOO является большая ресурсоёмкость, так как обучаться приходится &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt; раз. Некоторые методы обучения позволяют достаточно быстро перенастраивать внутренние параметры алгоритма при замене одного обучающего объекта другим. В этих случаях вычисление LOO удаётся заметно ускорить.&lt;br /&gt;
&lt;br /&gt;
=== Случайные разбиения (Random subsampling) === &lt;br /&gt;
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз.&lt;br /&gt;
&lt;br /&gt;
[[Файл:CompleteCrossValidation.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=== Критерий целостности модели (Model consistency criterion) === &lt;br /&gt;
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ModelConsistencyCriterion.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; D_1 = (\mu, T^{l-t}) = \frac{1}{l} \sum_{i=1}^l (\mu(T^t)(x_i)-\mu(T^{l-t})(x_i)) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
Метод может быть обобщен как аналог &amp;lt;tex&amp;gt; CV_{t \times 2} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Общие понятия]]&lt;br /&gt;
* [[Модель алгоритма и ее выбор]]&lt;br /&gt;
* [[Мета-обучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
# [https://en.wikipedia.org/wiki/Cross-validation_(statistics) Кросс-валидация]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
# [http://www.machinelearning.ru/wiki/index.php?title=%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8C Скользящий контроль] -  статья на MachineLearning.ru&lt;br /&gt;
# [https://drive.google.com/open?id=1p9CTAa1_gJpj94RXBEcQ09aVOa-KTlrd Model assessment and selection]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>46.242.9.103</name></author>	</entry>

	</feed>