<?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.166.104.71&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.166.104.71&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.166.104.71"/>
		<updated>2026-04-21T20:23:45Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B8%D0%B4%D1%8B_%D0%B0%D0%BD%D1%81%D0%B0%D0%BC%D0%B1%D0%BB%D0%B5%D0%B9&amp;diff=74396</id>
		<title>Виды ансамблей</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%92%D0%B8%D0%B4%D1%8B_%D0%B0%D0%BD%D1%81%D0%B0%D0%BC%D0%B1%D0%BB%D0%B5%D0%B9&amp;diff=74396"/>
				<updated>2020-06-06T08:48:28Z</updated>
		
		<summary type="html">&lt;p&gt;46.166.104.71: /* Реализации и применения бустинга */ Видимо, перепутали местами описание LightGBM и CatBoost&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; K &amp;lt;/tex&amp;gt; классов: &amp;lt;tex&amp;gt;Y = \{1, 2, ..., K\}&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Пусть имеется &amp;lt;tex&amp;gt; M &amp;lt;/tex&amp;gt; классификаторов (&amp;quot;экспертов&amp;quot;): &amp;lt;tex&amp;gt; f_1, f_2, ..., f_M &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;tex&amp;gt; f_m : X \rightarrow Y, f_m \in F, m = (1 ... M) &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда давайте посмотрим новый классификатор на основе данных:&lt;br /&gt;
&lt;br /&gt;
Простое голосование: &amp;lt;tex&amp;gt; f(x) = \max \limits_{k = 1 .. K} \sum \limits_{i = 1}^M I(f_i(x) = k) &amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Взвешенное голосование:  &amp;lt;tex&amp;gt; f(x) = \max \limits_{k = 1 .. K} \sum \limits_{i = 1}^M \alpha_i I(f_i(x) = k), \sum \limits_i \alpha_i = 1, \alpha_i &amp;gt; 0&amp;lt;/tex&amp;gt;. &amp;lt;br&amp;gt;&lt;br /&gt;
Где &amp;lt;tex&amp;gt; \begin{equation*}&lt;br /&gt;
I(x) = \begin{cases}&lt;br /&gt;
   1 &amp;amp;\text{x = true}\\&lt;br /&gt;
   0 &amp;amp;\text{x = false}&lt;br /&gt;
 \end{cases}&lt;br /&gt;
\end{equation*}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Теорема Кондорсе о присяжных ==&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Если каждый член жюри присяжных имеет независимое мнение, и если вероятность правильного решения члена жюри больше 0.5, то тогда вероятность правильного решения присяжных в целом возрастает с увеличением количества членов жюри, и стремится к единице. &amp;lt;br&amp;gt;&lt;br /&gt;
Если же вероятность быть правым у каждого из членов жюри меньше 0.5, то вероятность принятия правильного решения присяжными в целом монотонно уменьшается и стремится к нулю с увеличением количества присяжных.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; — количество присяжных, &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; — вероятность правильного решения одного эксперта, &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; — вероятность правильного решения всего жюри,&lt;br /&gt;
&amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; — минимальное большинство членов жюри &amp;lt;tex&amp;gt; = \lfloor \frac N  2 \rfloor + 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тогда &amp;lt;tex&amp;gt; R = \sum \limits_{i = m}^M C_M^i  p ^ i (1 - p) ^ {M - i} &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Виды_Ансамблей_2.png|none|400px|thumb|Вероятность правильного решения всего жюри (R) в зависимости от вероятности правильного решения одного эксперта (p) при разном количестве экспертов(M)]]&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;N&amp;lt;/tex&amp;gt;. Количество классификаторов &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм использует метод бутстрэпа (англ. ''bootstrap''):&lt;br /&gt;
&lt;br /&gt;
    Из всего множества объектов равновероятно выберем N объектов с возвращением. Это значит, что после выбора каждого из объектов мы будем возращать его в множество для выбора. Отметим, что из-за возвращения некоторые объекты могут повторяться в выбранном множестве.&amp;lt;br&amp;gt;   Обозначим новую выборку через &amp;lt;tex&amp;gt;X_1&amp;lt;/tex&amp;gt;. Повторяя процедуру &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; раз, сгенерируем &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; подвыборок &amp;lt;tex&amp;gt;X_1 ... X_M&amp;lt;/tex&amp;gt;. Теперь мы имеем достаточно большое число выборок и можем оценивать различные статистики исходного распределения.&lt;br /&gt;
&lt;br /&gt;
Шаги алгоритма бэггинг:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Генерируется с помощью бутстрэпа M выборок размера N для каждого классификатора.&lt;br /&gt;
&amp;lt;li&amp;gt; Производится независимое обучения каждого элементарного классификатора (каждого алгоритма, определенного на своем подпространстве).&lt;br /&gt;
&amp;lt;li&amp;gt; Производится классификация основной выборки на каждом из подпространств (также независимо).&lt;br /&gt;
&amp;lt;li&amp;gt;  Принимается окончательное решение о принадлежности объекта одному из классов. Это можно сделать несколькими разными способами, подробнее описано ниже.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Окончательное решение о принадлежности объекта классу может приниматься, например, одним из следующих методов:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Консенсус: если все элементарные классификаторы присвоили объекту одну и ту же метку, то относим объект к выбранному классу.&lt;br /&gt;
&amp;lt;li&amp;gt; Простое большинство: консенсус достижим очень редко, поэтому чаще всего используют метод простого большинства. Здесь объекту присваивается метка того класса, который определило для него большинство элементарных классификаторов.&lt;br /&gt;
&amp;lt;li&amp;gt; Взвешивание классификаторов: если классификаторов четное количество, то голосов может получиться поровну, еще возможно, что для экспертов одна из групп параметров важна в большей степени, тогда прибегают к взвешиванию классификаторов. То есть при голосовании голос классификатора умножается на его вес. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Виды_ансамблей_Бэггинг_рус.png|none|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим задачу регрессии с базовыми алгоритмами &amp;lt;tex&amp;gt;b_1, b_2, ..., b_m&amp;lt;/tex&amp;gt;. Предположим, что существует истинная функция ответа для всех объектов y(x), а также задано распределение p(x) на объектах. В этом случае мы можем записать ошибку каждой функции регрессии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; \epsilon_i(x) = b_i(x) - y(x), y = 1, ..., n &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и записать матожидание среднеквадратичной ошибки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E_x(b_i(x) - y(x))^2 = E_x \epsilon_i^2(x) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Средняя ошибка построенных функций регрессии имеет вид: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;E_1 = \frac 1 n E_x \sum \limits_{i = 1}^n \epsilon_i^2(x) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предположим, что ошибки несмещены и некоррелированы: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; E_x\epsilon_i(x) = 0, E_x\epsilon_i(x)\epsilon_j(x) = 0, i ≠ j &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Построим теперь новую функцию регрессии, усредняющую ответы уже построенных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; a(x) = \frac 1 n \sum \limits_{i = 1}^n b_i(x) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Найдем ее среднеквадратичную ошибку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; E_n = E_x(\frac 1 n \sum \limits_{i = 1}^n (b_i(x) - y(x))^2&lt;br /&gt;
= E_x(\frac 1 n \sum \limits_{i = 1}^n \epsilon_i)^2&lt;br /&gt;
= \frac 1 {n^2} E_x(\sum \limits_{i = 1}^n \epsilon_i^2(x) + \sum \limits_{i ≠ j} \epsilon_i(x)\epsilon_j(x)) &lt;br /&gt;
= \frac 1 n E_1 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, усреднение ответов позволило уменьшить средний квадрат ошибки в &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; раз.&lt;br /&gt;
&lt;br /&gt;
== Бустинг ==&lt;br /&gt;
&lt;br /&gt;
[[Бустинг, AdaBoost|'''Бустинг''']] (англ. boosting — улучшение) — это процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. Бустинг представляет собой жадный алгоритм построения композиции алгоритмов.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;h(x, a)&amp;lt;/tex&amp;gt; — базовый классификатор, где &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; — вектор параметров.&lt;br /&gt;
&lt;br /&gt;
Задача состоит в том, чтоб найти такой алгоритм &amp;lt;tex&amp;gt;H_T(x) = \sum_{t=1}^T b_t h(x, a),&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;b_t \in \mathbb{R}&amp;lt;/tex&amp;gt; — коэффиценты, такие, чтобы минимизировать эмпирический риск &amp;lt;tex&amp;gt;Q = \sum_i L(H_T(x_i), y_i) \rightarrow min&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;L(H_T(x_i), y_i)&amp;lt;/tex&amp;gt; — функция потерь.&lt;br /&gt;
&lt;br /&gt;
Очевидно, что сложно найти сразу &amp;lt;tex&amp;gt;\{(a_t, b_t)\}_{t=1}^T.&amp;lt;/tex&amp;gt;  Основная идея в том, чтоб найти решение пошагово &amp;lt;tex&amp;gt;H_t(x) = H_{t — 1}(x) + b_t h(x, a_t)&amp;lt;/tex&amp;gt;. Таким образом мы сможем постепенно оценивать изменение эмпирического риска &amp;lt;tex&amp;gt;Q^{(t)} = \sum_{i = 1}^l L(H_t(x_i), y_i) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Алгоритмы бустинга:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Бустинг, AdaBoost|AdaBoost]]  — адаптивный алгоритм бустинга, усиливающий классификаторы, объединяя их в «комитет». Чувствителен к шуму.&lt;br /&gt;
&amp;lt;li&amp;gt;BrownBoost — алгоритм бустинга, эффективный на зашумленных наборах данных&lt;br /&gt;
&amp;lt;li&amp;gt;GradientBoost — алгоритм бустинга, использующий идеи линейной регресии&lt;br /&gt;
&amp;lt;li&amp;gt;LogitBoost — алгоритм бустинга, использующий идеи логистической регресси&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализации и применения бустинга  ==&lt;br /&gt;
&lt;br /&gt;
Реализации бустинга:&lt;br /&gt;
&lt;br /&gt;
* [[XGBoost|XGBoost]] — одна из самых популярных и эффективных реализаций алгоритма градиентного бустинга на деревьях на 2019-й год. &lt;br /&gt;
* [[CatBoost|CatBoost]] — открытая программная библиотека, разработанная компанией Яндекс.&lt;br /&gt;
* LightGBM — библиотека для метода машинного обучения, основанная на градиентном бустинге (англ. gradient boosting).&lt;br /&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;
* исследованиях на Большом адронном коллайдере (БАК) для объединения информации с различных частей детектора LHCb в максимально точное, агрегированное знание о частице.&lt;br /&gt;
&lt;br /&gt;
== Различия между алгоритмами == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Оба алгоритма используют N базовых классификаторов&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бустинг использует последовательное обучение &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бэггинг использует параллельное обучение &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Оба генерируют несколько наборов данных для обучения путем случайной выборки&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бустинг определяет вес данных, чтоб утяжелить тяжелые случаи &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бэггинг имеет невзвешенные данные &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Оба принимают окончательное решение, усредняя N классификаторов&lt;br /&gt;
  &amp;lt;ul&amp;gt; &lt;br /&gt;
    &amp;lt;li&amp;gt; В бустинге определяются веса для них &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; В бэггинге они равнозначны &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Оба уменьшают дисперсию и обеспечивают более высокую стабильность&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бэггинг может решить проблему переобучения &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Бустинг пытается уменьшить смещение, но может увеличить проблему переобучения &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примеры кода ==&lt;br /&gt;
&lt;br /&gt;
'''Инициализация'''&lt;br /&gt;
&lt;br /&gt;
    from pydataset import data&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;#Считаем данные The Boston Housing Dataset&amp;lt;ref&amp;gt;[http://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html The Boston Housing Dataset]&amp;lt;/ref&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
    df = data('Housing')&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;#Проверим данные&amp;lt;/font&amp;gt;&lt;br /&gt;
    df.head().values&lt;br /&gt;
    array([[42000.0, 5850, 3, 1, 2, 'yes', 'no', 'yes', 'no', 'no', 1, 'no'],&lt;br /&gt;
           [38500.0, 4000, 2, 1, 1, 'yes', 'no', 'no', 'no', 'no', 0, 'no'],&lt;br /&gt;
           [49500.0, 3060, 3, 1, 1, 'yes', 'no', 'no', 'no', 'no', 0, 'no'], ...&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Создадим словарь для слов 'no', 'yes'&amp;lt;/font&amp;gt;&lt;br /&gt;
    d = dict(zip(['no', 'yes'], range(0,2)))&lt;br /&gt;
    for i in zip(df.dtypes.index, df.dtypes):&lt;br /&gt;
        if str(i[1]) == 'object':&lt;br /&gt;
            df[i[0]] = df[i[0]].map(d)&lt;br /&gt;
    df[‘price’] = pd.qcut(df[‘price’], 3, labels=[‘0’, ‘1’, ‘2’]).cat.codes&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Разделим множество на два&amp;lt;/font&amp;gt;&lt;br /&gt;
    y = df['price'] &lt;br /&gt;
    X = df.drop('price', 1)&lt;br /&gt;
&lt;br /&gt;
'''Бэггинг'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Импорты классификаторов&amp;lt;/font&amp;gt;&lt;br /&gt;
    from sklearn.model_selection import cross_val_score&lt;br /&gt;
    from sklearn.ensemble import BaggingClassifier, ExtraTreesClassifier, RandomForestClassifier&lt;br /&gt;
    from sklearn.neighbors import KNeighborsClassifier&lt;br /&gt;
    from sklearn.linear_model import RidgeClassifier&lt;br /&gt;
    from sklearn.svm import SVC&lt;br /&gt;
    &lt;br /&gt;
    seed = 1075&lt;br /&gt;
    np.random.seed(seed)&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Инициализуруем классификаторы&amp;lt;/font&amp;gt;&lt;br /&gt;
    rf = RandomForestClassifier()&lt;br /&gt;
    et = ExtraTreesClassifier()&lt;br /&gt;
    knn = KNeighborsClassifier()&lt;br /&gt;
    svc = SVC()&lt;br /&gt;
    rg = RidgeClassifier()&lt;br /&gt;
    clf_array = [rf, et, knn, svc, rg]&lt;br /&gt;
    &lt;br /&gt;
    for clf in clf_array:&lt;br /&gt;
        vanilla_scores = cross_val_score(clf, X, y, cv=10, n_jobs=-1)&lt;br /&gt;
        bagging_clf = BaggingClassifier(clf, max_samples=0.4, max_features=10, random_state=seed)&lt;br /&gt;
        bagging_scores = cross_val_score(bagging_clf, X, y, cv=10, n_jobs=-1)&lt;br /&gt;
        print &amp;quot;Mean of: {1:.3f}, std: (+/-) {2:.3f [{0}]&amp;quot;  &lt;br /&gt;
                           .format(clf.__class__.__name__, &lt;br /&gt;
                           vanilla_scores.mean(), vanilla_scores.std())&lt;br /&gt;
        print &amp;quot;Mean of: {1:.3f}, std: (+/-) {2:.3f} [Bagging {0}]\n&amp;quot;&lt;br /&gt;
                           .format(clf.__class__.__name__, &lt;br /&gt;
                            bagging_scores.mean(), bagging_scores.std())&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;#Результат&amp;lt;/font&amp;gt;&lt;br /&gt;
    Mean of: 0.632, std: (+/-) 0.081 [RandomForestClassifier]&lt;br /&gt;
    Mean of: 0.639, std: (+/-) 0.069 [Bagging RandomForestClassifier]&lt;br /&gt;
    &lt;br /&gt;
    Mean of: 0.636, std: (+/-) 0.080 [ExtraTreesClassifier]&lt;br /&gt;
    Mean of: 0.654, std: (+/-) 0.073 [Bagging ExtraTreesClassifier]&lt;br /&gt;
    &lt;br /&gt;
    Mean of: 0.500, std: (+/-) 0.086 [KNeighborsClassifier]&lt;br /&gt;
    Mean of: 0.535, std: (+/-) 0.111 [Bagging KNeighborsClassifier]&lt;br /&gt;
    &lt;br /&gt;
    Mean of: 0.465, std: (+/-) 0.085 [SVC]&lt;br /&gt;
    Mean of: 0.535, std: (+/-) 0.083 [Bagging SVC]&lt;br /&gt;
    &lt;br /&gt;
    Mean of: 0.639, std: (+/-) 0.050 [RidgeClassifier]&lt;br /&gt;
    Mean of: 0.597, std: (+/-) 0.045 [Bagging RidgeClassifier]&lt;br /&gt;
&lt;br /&gt;
'''Бустинг'''&lt;br /&gt;
&lt;br /&gt;
    ada_boost = AdaBoostClassifier()&lt;br /&gt;
    grad_boost = GradientBoostingClassifier()&lt;br /&gt;
    xgb_boost = XGBClassifier()&lt;br /&gt;
    boost_array = [ada_boost, grad_boost, xgb_boost]&lt;br /&gt;
    eclf = EnsembleVoteClassifier(clfs=[ada_boost, grad_boost, xgb_boost], voting='hard')&lt;br /&gt;
    &lt;br /&gt;
    labels = ['Ada Boost', 'Grad Boost', 'XG Boost', 'Ensemble']&lt;br /&gt;
    for clf, label in zip([ada_boost, grad_boost, xgb_boost, eclf], labels):&lt;br /&gt;
        scores = cross_val_score(clf, X, y, cv=10, scoring='accuracy')&lt;br /&gt;
        print(&amp;quot;Mean: {0:.3f}, std: (+/-) {1:.3f} [{2}]&amp;quot;.format(scores.mean(), scores.std(), label))&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Результат&amp;lt;/font&amp;gt;&lt;br /&gt;
    Mean: 0.641, std: (+/-) 0.082 [Ada Boost]&lt;br /&gt;
    Mean: 0.654, std: (+/-) 0.113 [Grad Boost]&lt;br /&gt;
    Mean: 0.663, std: (+/-) 0.101 [XG Boost]&lt;br /&gt;
    Mean: 0.667, std: (+/-) 0.105 [Ensemble]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[:Бустинг, AdaBoost|Бустинг, AdaBoost]]&lt;br /&gt;
* [[:XGBoost|XGBoost]]&lt;br /&gt;
* [[:CatBoost|CatBoost]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/Microsoft/LightGBM&lt;br /&gt;
* https://github.com/dmlc/xgboost&lt;br /&gt;
* https://ru.wikipedia.org/wiki/CatBoost&lt;br /&gt;
* https://quantdare.com/what-is-the-difference-between-bagging-and-boosting/&lt;br /&gt;
* https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Ансамбли]]&lt;/div&gt;</summary>
		<author><name>46.166.104.71</name></author>	</entry>

	</feed>