<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%94%D0%B0%D1%80%D1%8C%D1%8F+%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%94%D0%B0%D1%80%D1%8C%D1%8F+%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%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/%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0"/>
	<updated>2026-10-23T08:06:34Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24982</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24982"/>
		<updated>2017-12-04T19:41:48Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительным ядром многоклассовой логистической регрессии является число классов (параметр  &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;). Когда многоклассовая логистическая регрессия становится по сложности константой относительно количества классов, возникает уникальная возможность построения большого количества классификаторов одновременно.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Алгоритм многоклассовой логистической регрессии состоит в проведении следующих макроопераций:&lt;br /&gt;
&lt;br /&gt;
* Для каждого объекта вычисление предсказаний (вероятностей наличия метки) для каждого класса &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
* Среди всех классов &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; выбор того класса, вероятность которого оказалась максимальной&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии в параллельном варианте требуется выполнить &amp;lt;math&amp;gt;N * D * N_{iter}&amp;lt;/math&amp;gt; шагов. &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций. Таким образом алгоритм является константным по количеству классов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time big.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
[[File:Time small.png | Рисунок 3. Параллельная реализация многоклассовой логистической регрессии (увеличенная параллельная реализация)]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). &lt;br /&gt;
Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
Все запуски производились на суперкомпьютере &amp;lt;&amp;lt;Ломоносов&amp;gt;&amp;gt;. В расчетах использовался процессор Intel Xeon X5570 с частотой &amp;lt;math&amp;gt;2.93&amp;lt;/math&amp;gt; GHz, кэшем &amp;lt;math&amp;gt;8192&amp;lt;/math&amp;gt; KB и &amp;lt;math&amp;gt;4&amp;lt;/math&amp;gt; ядрами. Эксперименты производились в очереди test, в которой доступно &amp;lt;math&amp;gt;16&amp;lt;/math&amp;gt; таких процессоров. Максимальное количество доступных мне ядер в очереди test составляло &amp;lt;math&amp;gt;16 * 6 = 64&amp;lt;/math&amp;gt;. В моих экспериментах число ядер было равно числу классов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24981</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24981"/>
		<updated>2017-12-04T18:55:06Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Вычислительное ядро алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительным ядром многоклассовой логистической регрессии является число классов (параметр  &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;). Когда многоклассовая логистическая регрессия становится по сложности константой относительно количества классов, возникает уникальная возможность построения большого количества классификаторов одновременно.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Алгоритм многоклассовой логистической регрессии состоит в проведении следующих макроопераций:&lt;br /&gt;
&lt;br /&gt;
* Для каждого объекта вычисление предсказаний (вероятностей наличия метки) для каждого класса &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
* Среди всех классов &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; выбор того класса, вероятность которого оказалась максимальной&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии в параллельном варианте требуется выполнить &amp;lt;math&amp;gt;N * D * N_{iter}&amp;lt;/math&amp;gt; шагов. &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций. Таким образом алгоритм является константным по количеству классов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). &lt;br /&gt;
Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
Все запуски производились на суперкомпьютере &amp;lt;&amp;lt;Ломоносов&amp;gt;&amp;gt;. В расчетах использовался процессор Intel Xeon X5570 с частотой &amp;lt;math&amp;gt;2.93&amp;lt;/math&amp;gt; GHz, кэшем &amp;lt;math&amp;gt;8192&amp;lt;/math&amp;gt; KB и &amp;lt;math&amp;gt;4&amp;lt;/math&amp;gt; ядрами. Эксперименты производились в очереди test, в которой доступно &amp;lt;math&amp;gt;16&amp;lt;/math&amp;gt; таких процессоров. Максимальное количество доступных мне ядер в очереди test составляло &amp;lt;math&amp;gt;16 * 6 = 64&amp;lt;/math&amp;gt;. В моих экспериментах число ядер было равно числу классов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24980</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24980"/>
		<updated>2017-12-04T18:50:00Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Макроструктура алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Алгоритм многоклассовой логистической регрессии состоит в проведении следующих макроопераций:&lt;br /&gt;
&lt;br /&gt;
* Для каждого объекта вычисление предсказаний (вероятностей наличия метки) для каждого класса &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
* Среди всех классов &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; выбор того класса, вероятность которого оказалась максимальной&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии в параллельном варианте требуется выполнить &amp;lt;math&amp;gt;N * D * N_{iter}&amp;lt;/math&amp;gt; шагов. &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций. Таким образом алгоритм является константным по количеству классов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). &lt;br /&gt;
Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
Все запуски производились на суперкомпьютере &amp;lt;&amp;lt;Ломоносов&amp;gt;&amp;gt;. В расчетах использовался процессор Intel Xeon X5570 с частотой &amp;lt;math&amp;gt;2.93&amp;lt;/math&amp;gt; GHz, кэшем &amp;lt;math&amp;gt;8192&amp;lt;/math&amp;gt; KB и &amp;lt;math&amp;gt;4&amp;lt;/math&amp;gt; ядрами. Эксперименты производились в очереди test, в которой доступно &amp;lt;math&amp;gt;16&amp;lt;/math&amp;gt; таких процессоров. Максимальное количество доступных мне ядер в очереди test составляло &amp;lt;math&amp;gt;16 * 6 = 64&amp;lt;/math&amp;gt;. В моих экспериментах число ядер было равно числу классов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24979</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24979"/>
		<updated>2017-12-04T18:41:52Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии в параллельном варианте требуется выполнить &amp;lt;math&amp;gt;N * D * N_{iter}&amp;lt;/math&amp;gt; шагов. &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций. Таким образом алгоритм является константным по количеству классов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). &lt;br /&gt;
Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
Все запуски производились на суперкомпьютере &amp;lt;&amp;lt;Ломоносов&amp;gt;&amp;gt;. В расчетах использовался процессор Intel Xeon X5570 с частотой &amp;lt;math&amp;gt;2.93&amp;lt;/math&amp;gt; GHz, кэшем &amp;lt;math&amp;gt;8192&amp;lt;/math&amp;gt; KB и &amp;lt;math&amp;gt;4&amp;lt;/math&amp;gt; ядрами. Эксперименты производились в очереди test, в которой доступно &amp;lt;math&amp;gt;16&amp;lt;/math&amp;gt; таких процессоров. Максимальное количество доступных мне ядер в очереди test составляло &amp;lt;math&amp;gt;16 * 6 = 64&amp;lt;/math&amp;gt;. В моих экспериментах число ядер было равно числу классов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24978</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24978"/>
		<updated>2017-12-04T17:31:55Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии в параллельном варианте требуется выполнить &amp;lt;math&amp;gt;N * D * N_{iter}&amp;lt;/math&amp;gt; шагов. &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций. Таким образом алгоритм является константным по количеству классов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24977</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24977"/>
		<updated>2017-12-04T17:24:38Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;. Синие вершины соответствуют объектам из обучающей выборки (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов). Зеленые вершины соответствуют двухклассовым классификаторам (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем в розовых вершинах для каждого объекта вычисляется метка класса с наибольшей вероятностью. Итоговое предсказание заносится в желтую вершину.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
 |[[File:Информаицонный граф 3.001.jpeg|мини|1000px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24974</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24974"/>
		<updated>2017-12-04T16:25:52Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Схема реализации последовательного алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. В последовательной реализации алгоритма сначала производится загрузка обучающей выборки. Далее создается массив весов при признаках модели, который инициализируются нулями. Затем для каждого класса производится обучение массива весов. Процесс обучения является итерационным. На каждой итерации для каждого объекта вычисляется предсказание модели. Затем вычисляется антиградиент минимизируемого функционала &amp;lt;math&amp;gt;Q(w)&amp;lt;/math&amp;gt; и производится сдвиг вектора весов на антиградиент, умноженный на скорость обучения. Число итераций и скорость обучения подбираются на основании обучающей выборки и сходимость модели. Я зафиксировала скорость обучения, равной &amp;lt;math&amp;gt;0.001&amp;lt;/math&amp;gt;, а количество итераций, равным &amp;lt;math&amp;gt;10000&amp;lt;/math&amp;gt;. Это позволило мне получать точные и стабильные решения.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24048</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24048"/>
		<updated>2017-11-19T21:04:38Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24047</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24047"/>
		<updated>2017-11-19T21:04:24Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов. Результаты были получены усреднением по &amp;lt;math&amp;gt;50&amp;lt;/math&amp;gt; запускам.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24046</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24046"/>
		<updated>2017-11-19T20:53:17Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Таким образом каждая логистическая регрессия строится независимо в отдельной ветви. Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24045</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24045"/>
		<updated>2017-11-19T20:43:11Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии как метода машинного обучения заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24044</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24044"/>
		<updated>2017-11-19T20:19:45Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png | Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]]&lt;br /&gt;
&lt;br /&gt;
Для запуска прямой и параллельной версии алгоритма многоклассовой логистической регрессии был сгенерирован синтетический датасет, состоящий из &amp;lt;math&amp;gt;1000&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N = 1000&amp;lt;/math&amp;gt;) объектов с &amp;lt;math&amp;gt;500&amp;lt;/math&amp;gt; признаками (&amp;lt;math&amp;gt;D = 500 &amp;lt;/math&amp;gt;). Как видно на рисунке 2 параллельная версия показывает константное время работы от числа классов. В то время как последовательная версия уже линейно зависит от числа классов.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24043</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24043"/>
		<updated>2017-11-19T20:12:38Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Масштабируемость алгоритма и его реализации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
[[File:Time.png] Рисунок 2. Параллельная реализация многоклассовой логистической регрессии]&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24040</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24040"/>
		<updated>2017-11-19T16:32:42Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Затем для каждого объекта вычисляется метка класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&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;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24035</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=24035"/>
		<updated>2017-11-19T13:35:48Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление метки класса с максимальной вероятностью по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма === &lt;br /&gt;
Как уже записано в описании ядра алгоритма, основную часть работы алгоритма логистической регрессии  в последовательном варианте составляет выполнение последовательного вычисления вероятностей, и затем выполнение последовательного нахождения максимума по уже вычисленным вероятностям для выбора наиболее релевантной метки класса.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
Формулы метода описаны выше. Последовательность исполнения может быть разная. Иными словами, совершенно неважно, в каком порядке будут вычисляться вероятности для каждого класса. Схемы one-vs-rest&lt;br /&gt;
осуществляют построение M независимых классификаторов. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Обучение логистической регрессии в последовательном варианте имеет сложность &amp;lt;math&amp;gt; M * N * D * N_{iter} &amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;N_{iter}&amp;lt;/math&amp;gt; -- число итераций обучения алгоритма. &lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
На рисунке 1 изображён граф алгоритма для случая &amp;lt;math&amp;gt;M = 3, N = 6&amp;lt;/math&amp;gt;.&lt;br /&gt;
[[File:Информаицонный граф 3.001.jpeg|1000 px|Рисунок 1. Схема работы параллельной логистической регрессии.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
Для алгоритма многоклассовой логистической регрессии требуется для каждого объекта (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; объектов) вычислить предсказания &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; двухклассовых классификаторов (&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;br /&gt;
ветвей длины &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;). Затем для каждого объекта вычисление метки класса с наибольшей вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма === &lt;br /&gt;
&lt;br /&gt;
Входные данные: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения: отсутствуют.&lt;br /&gt;
&lt;br /&gt;
Объём входных данных: N * D.&lt;br /&gt;
&lt;br /&gt;
Выходные данные: Предсказания модели для каждого объекта.&lt;br /&gt;
&lt;br /&gt;
Объём выходных данных: N.&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;
&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;
=== Существующие реализации алгоритма ===&lt;br /&gt;
Существует масса различных реализаций логистической регрессии на языке python. Приведу пример параллельной реализация из библиотеки sklearn -- &lt;br /&gt;
[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html Sklearn]. Библиотека является открытой и достаточно популярной. &lt;br /&gt;
Также стоит отметить реализацию параллельной логистической регрессии на программном каркасе PySpark -- [https://spark.apache.org/docs/2.2.0/ml-classification-regression.html PySpark]. Код этой реализации также является открытым и активно используемым в задачах Big Data.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23658</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23658"/>
		<updated>2017-10-30T12:27:06Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Дарья Соболева: Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&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;
=== Информационный граф ===&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;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23478</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23478"/>
		<updated>2017-10-24T12:14:07Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&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;
=== Информационный граф ===&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;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23184</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23184"/>
		<updated>2017-10-21T20:05:07Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&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;
=== Информационный граф ===&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;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23183</id>
		<title>Участник:Дарья Соболева</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%94%D0%B0%D1%80%D1%8C%D1%8F_%D0%A1%D0%BE%D0%B1%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0&amp;diff=23183"/>
		<updated>2017-10-21T19:55:35Z</updated>

		<summary type="html">&lt;p&gt;Дарья Соболева: Новая страница: «&amp;#039;&amp;#039;&amp;#039;Многоклассовая логистическая регрессия&amp;#039;&amp;#039;&amp;#039; == Свойства и структура алгоритма == === Обще…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Многоклассовая логистическая регрессия]]&#039;&#039;&#039;&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Логистическая регрессия (Logistic regression)&#039;&#039;&#039; -- метод построения линейного классификатора, позволяющий оценивать апостериорные вероятности принадлежности объектов классам.&lt;br /&gt;
&#039;&#039;&#039;Многоклассовая логистическая регрессия (Multiclass Logistic regression)&#039;&#039;&#039; -- логистическая регрессия, реализованная по схеме один против всех (one-vs-rest). При таком подходе строится столько моделей логистической регрессии, сколько классов необходимо обучить. &lt;br /&gt;
&lt;br /&gt;
На вход алгоритму логистической регрессии подается матрица обЪектов-признаков &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; и вектор допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt;. Предполагается, что&lt;br /&gt;
существует целевая функция &amp;lt;math&amp;gt;y∗ : X → Y&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача логистической регрессии, как и любого метода машинного обучения, заключается в том, чтобы по выборке &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; построить решающую функцию &amp;lt;math&amp;gt;a: X → Y&amp;lt;/math&amp;gt;, которая приближала бы целевую функцию &amp;lt;math&amp;gt;y∗&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Многоклассовая логистическая логистическая регрессия вместо вектора допустимых ответов &amp;lt;math&amp;gt;Y&amp;lt;/math&amp;gt; принимает список из векторов ответов для каждой задачи классификаци.&lt;br /&gt;
Далее для каждого класса строится решающая функция.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Вход: обучающая выборка пар «объект, ответ»  &amp;lt;math&amp;gt;X^l = \{(x_1,y_1),\dots,(x_l,y_l)\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случай двух классов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Положим &amp;lt;math&amp;gt;Y=\{-1,+1\}&amp;lt;/math&amp;gt;. Строится линейный алгоритм классификации &amp;lt;math&amp;gt;a: X\to Y&amp;lt;/math&amp;gt; вида&lt;br /&gt;
&amp;lt;math&amp;gt;a(x,w) = \mathrm{sign}\left( \sum_{j=1}^D w_j f_j(x) + w_0 \right) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt;,&lt;br /&gt;
где  &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; — вес &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;-го признака,  &amp;lt;math&amp;gt;w_0&amp;lt;/math&amp;gt; — порог принятия решения, &amp;lt;math&amp;gt;w=(w_0,w_1,\ldots,w_D)&amp;lt;/math&amp;gt; — вектор весов, &amp;lt;math&amp;gt;\langle x,w \rangle &amp;lt;/math&amp;gt;— скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: &amp;lt;math&amp;gt;f_{0}(x)=1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Задача обучения линейного классификатора заключается в том, чтобы по выборке  &amp;lt;math&amp;gt;X^l&amp;lt;/math&amp;gt; настроить вектор весов &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. В логистической регрессии для этого решается задача минимизации эмпирического риска с функцией потерь специального вида:&lt;br /&gt;
&amp;lt;math&amp;gt;Q(w) = \sum_{i=1}^L \ln\left( 1 + \exp( -y_i \langle x_i,w \rangle ) \right) \to \min_{w}&amp;lt;/math&amp;gt;.&lt;br /&gt;
После того, как решение &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; найдено, становится возможным не только вычислять классификацию &amp;lt;math&amp;gt;a(x) = \mathrm{sign}\langle x,w \rangle&amp;lt;/math&amp;gt; для произвольного объекта &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, но и оценивать апостериорные вероятности его принадлежности классам:&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbb{P}\{y|x\} = \sigma\left( y \langle x,w \rangle\right),\;\;y\in Y&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt;\sigma(z) = \frac1{1+e^{-z}}&amp;lt;/math&amp;gt; — сигмоидная функция.&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый в данной статье one-vs-rest подход позволяет легко свести задачу многоклассовой классификации к двум классам, так как предполагает построение двухклассовой&lt;br /&gt;
логистической регрессии для каждого класса в отдельности. Метки &amp;lt;math&amp;gt;+1&amp;lt;/math&amp;gt; проставляются всем обЪектам рассматриваемого класса, а &amp;lt;math&amp;gt;-1&amp;lt;/math&amp;gt; проставляются обЪектам всех остальных классов. Для тестового объекта вычисляются предсказания всех обученных классификаторов, в качестве предсказания берется класс, с максимальной вероятностью.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
Вычислительное ядро многоклассовой логистической регрессии можно представить как &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; независимых задач логистической регрессии, где &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; -- число классов. Затем вычисление максимальной вероятности по выходам каждой логистической регрессии.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Машинное_обучение_(курс_лекций%2C_К.В.Воронцов) Машинное обучение (курс лекций, К.В.Воронцов)]&lt;/div&gt;</summary>
		<author><name>Дарья Соболева</name></author>
	</entry>
</feed>