powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Можно ли на SQL реализовать линейную регрессию?
106 сообщений из 106, показаны все 5 страниц
Можно ли на SQL реализовать линейную регрессию?
    #40045139
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано: вектор Y находится в таблице [Ytable] с полями [i] (целое) и [y] (действительное);

N векторов Xn находятся в таблице [Xtable] с полями [n] (целое), [i] (целое) и [x] (действительное);

i принимает значения от 1 до 10000, n -- от 1 до 100 (то есть в таблице [Xtable] 100*10000 = миллион записей).

Можно ли написать SQL-запрос, который помещает в таблицу [Atable] коэффициенты линейной регрессии вектора Y на вектора Xn?

(пост связан с постом https://www.sql.ru/forum/1333430/vopros-o-shodimosti-psevdoregressii )
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045163
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

Полно в разных базах данных либо готовых функций либо необходимые чтобы собрать в необходимое решение, например:

Hive:
regr_r2()
regr_slope()
regr_intercept()
sum()
count()
avg()
variance()
stddev_pop()

T-SQL
AVG()
SUM()
COUNT()
VAR()
STDEV()

DAX
COUNT( )
AVERAGE( )
STDEV.P( )
VAR.P( )
SUM( )


MDX (в MDX так-же есть поддержка VBA функций)
LINREGINTERCEPT()
CORRELATION()
COVARIANCE()
LINREGSLOPE()
AVG()
...COUNT
LINREGR2()
STDDEV()
SUM()
VAR()


Кроме всего многие базы данных поддерживают интеграцию с внешними библиотеками а так-же родные процедуры работы с ML компонентами (например R или Python )..
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045168
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv, это я понимаю, меня интересует именно "можно ли написать SQL-запрос" (а не вызвать внешнюю -- для SQL -- функцию).

Ну и линейная регрессия -- это всё-таки не AVG(), SUM(), COUNT(), VAR() или STDEV()... немножко посложнее.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045219
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

Чуть чаем не подавился.. мы точно об одной регрессии говорим?
Или в школах какой-то альтернативный математический прогресс пошел?
Насколько я помню именно наличие этих функций является вполне достаточным
условием для нахождения коэффициентов простой линейной регрессии,
(кроме стандартных/основных {арифметических} алгебраических операций:
сложения, вычитания, умножения и деления, и можно чисто с бюрократической
точки зрения добавить операции со степенями и функцию power())

для множественной (многофакторной) немного замороченнее, но тоже вычисляемо

был вопрос - можно-ли.. соответственно дан ответ: можно, и показано направление,
причём на HIVE SQL и некоторых др. диалектах есть готовые функции

но при наличии специально под эти задачи заточенных инструментов вполне
интегрируемых в SQL напрашивается другой не заданный вопрос:
нужно-ли (натягивать сову на глобус, или лезть на кактус)?

Есть же библиотеки оптимизированные на векторную/линейную алгебру, GPU,
расширенные инструкции, дополнительные регистры, параллельность,
многопоточность по всем ядрам и CPU, даже на кластерах через тот-же Spark например..
одни MKL/BLAS + AVX512 чего только стоят по производительности на задачах этого класса,

Python или R в руки и вперёд, уже довольно давно принятый в корпоративном мире стандарт.

но если сильно хочется то напр. на T-SQL набросать можно что-то такое:
(заметь: именно sum/count/avg/var)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @ax float,@ay float,@v float,@a float,@b float,@c float
declare @t table(x float,y float)
insert into @t values
(1,12.57759),
(1,12.62543),
(12,95.44029),
(17,128.85693),
(7,58.13482),
(6,48.73899),
(18,138.2968),
(19,150.30743),
(1,12.17612),
(9,73.3948),
(2,19.23263),
(16,121.92411),
(9,69.01374),
(20,151.68242),
(3,27.79543)
select @ax=avg(x),@ay=avg(y),@v=varp(x),@c=count(1) from @t -- avg(x),avg(y),var(x),n=count()
select @b=sum((@ax-x)*(@ay-y))/(@v*@c) from @t -- slope = cov(X,Y)/var(X)
select @a=@ay-@b*@ax -- intercept
select @a a, @b b -- regression coefficients



С MySQL тоже схожая ситуация как и с MSSQL,

в PostgreSQL и Oracle как и в HIVE ещё есть готовые
regr_intercept()/regr_slope()/regr_r2() ,
плюс дополнительные суммы квадратов, ковариации, корреляции и т.д.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045226
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv
для множественной (многофакторной) немного замороченнее, но тоже вычисляемо


--но вы видите что в посте идёт речь именно о "множественной (многофакторной)" или нет? И даже количество факторов указано -- 100. То, что регрессия переменной Y на ОДНУ переменную Х конструируется ... как два пальца об асфальт, я знаю.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045229
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

технически, если вдаваться в семантику - то это не было указанно в явном виде / или я не понял
(может только если отследить по другой теме и придти к такому выводу),
т.к. там нет детерминированности и возможны варианты интерпретации,
но в виде как указанно в последнем сообщении - эта неопределённость уходит

теперь собственно к ответу на тему по множественной:
для частных случаев где n в пределах малых чисел (даже скорее цифр: 2,3...) - тоже вполне можно жестко прописать
и на SQL, для общей формы где n = произвольное - уже надо писать более замороченную логику генерации выражений
под вычисления с использованием циклов/рекурсий, промежуточных таблиц через динамический SQL,
что потребует намного больших трудозатрат, появятся проблемы с отловом ошибок и обслуживанием
так-же и появятся претензии к производительности (особенно большая чуствительность с ростом n чем при увеличении кол-ва строк)

(не отвечая на не заданный вопрос "нужно-ли это" с учётом наличия более оптимальных средств/языков
{процедурно/объектного программирования с нужным набором функций}
специально предназначенных для таких типов задач)
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045231
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNION в цикле наверное потянет. Но для этого динамический SQL не требуется. Достаточно простого PL/SQL, и в нём реализовать рекуррентность из того самого поста. Но это ИМХО.
Согласен, что обслуживать сложно. По трудозатратам вполне сравнимо с алгоритмикой. Если ради эстетства. Я один раз так и сделал: алгоритмическое ТЗ реализовал чередой запросов, но меня мотивировало, что ТЗ было размытым и опасался, что курочить алгоритм придётся многажды. Но курочить оказалось только эпилог. Так что не знаю, выиграл или проиграл. Под 1000 строк вышло.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045444
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(порезал про зависимость векторов)
Коль скоро озвучены порядки задачи. Видим же, что размерность векторного пр-ва и кол-во векторов несопоставимо. Не знаю уж как возникают эти векторы. При заметной случайности очевидно, векторы будут сильно не ортогональны.
Матрица ковариаций всего лишь 100х100. Такую задачу, если она изолированная, просто решить типовыми методоми. Например Главных компонент. Собственные значения и собс-ные векторы легко находятся школьными методами. Например модифицированным гауссом или корнями 100-полинома. Полином считается итерационно спец методом для таких матриц (для симметричных). Ничего запредельного в размерности 100 кроме обеспечения точности.
Но даже и это можно запихнуть в SQL-ы, только я бы не стал.

Конечно есть нюанс, если данная матрица представляет только однну реализацию однотипной послед-сти действий. Тогда может понадобиться обеспечить устойчивость решения. И тогда метод редукции регрессии к 2-мерным регрессиям вполне оправдано. Только получение коэф-тов нужно обеспечить устойчивым методом, иначе в разнос пойдёт. Про желаемый же метод этого (устойчивость) не знаю.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045518
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понял. Речь идет об этом https://ru.wikipedia.org/wiki/Линейная_регрессия

Код: sql
1.
2.
3.
4.
5.
Input:
(x1,y1),(x2,y2)......

Output
y=kx + b



На вход - координаты измерений в декартовой плоскости. На выходе прямая которая удовлетворяет требованию
близости одновременно ко всему множеству измерений.

По сути прямая здесь обозначена двумя вещественными коэфициентиками (k) и (b).

Верно?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045551
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

y(i) = b0(i) + b1*x1(i) + ... + bj*xj(i) + ... + bk*xk(i) + e(i)

-- на той же странице Википедии в разделе "Парная и множественная регрессия"
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045554
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
...По сути прямая здесь обозначена двумя вещественными коэфициентиками (k) и (b).
Верно?
Представть, что (k) и (b) векторы, пр-во до 10000-мерно, и |correl(b, Y)|-->min. По сути (b) - декоррелированный остаток. Надо приблизить (предсказать) некий вектор Y линейной ф-цией от (x). Как бы ряд Тейлора, где формула для Y неизвестна.

В данной задаче даже не идёт речь о последовательности случайных величин (векторов).
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045558
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример Метода Леверье.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045560
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущее было для выч хар. полинома.
Щас пример : корни полинома с действит-ми коэфф-ми. Метод Лагера.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045576
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Технически, наверное не сложно портировать Basic на PL/SQL, или T/SQL.

Но автор хотел решить задачу следующим подходом:

Код: sql
1.
SELECT ..... FROM ..... Ytable, .... Xtable;



и возвращать представление таблицы ATable.

Что в этой задаче плохо? В ней плох формат исходных даных. А именно матрица 100*10000.
И ее декартов порядок. Обычно реляционные СУБД плохо работают с матрицами.

Готов спорить на виски, что реализация этого метода на PL/SQL + Collections будет на порядок эффективнее
чем любая реализация которая будет считывать данные непосредственно
из таблиц Ytable/Xtable в процессе самого расчета ЛР.

Разумеется я предполагаю что коллекции будут инициализированы из таблиц Ytable/Xtable будут как минимум 1 раз.

Кстати я предполагаю дать фору. И изменить структуру данных таким образом чтобы Ytable/Xtable были уже соединены
в отдельную материализацию.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045581
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО загвоздка в переменной n. Это кол-во полей (векторов Х). Лично я не знаю как это сделать даже с With abcde AS(). М.б. динамическим SQL. Но я не сильно спец, поэтому предполагал в виде (непонятно только , зачем?), где единственный оператор PL/SQL - это FOR

FOR k in 2..n
... курсоры
... курсоры

SELECT ..... UNION
SELECT .....
END

Кстати, в оракуле есть матричные функции, подразумевающие представление таблицы в стандартном массиве, где одно из полей есть номер поля таблицы (или имя этого поля, не помню без словаря) . Короче, ширина массива предзадана.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045596
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
ИМХО загвоздка в переменной n. Это кол-во полей (векторов Х). ..... предполагал в виде (непонятно только , зачем?), где единственный оператор PL/SQL - это FOR
Не, вряд ли, наверное ещё один вложенный цикл, по координатам векторов. Алгоритм же рекуррентный по координатм, про поля тогда не думал.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045600
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В рамках пятничного хакатона можно было-бы сделать нечто оригинальное на языках Stored Precedures.
Это и быстро-бы летало. И практично.

А чистый SQL... ну... похоже на тестовое задание. Но уж сильно специфичное.

Да и кому нужен чистый SQL? Это - утопия. Ни в одной конторе не требуют. Всегда предупреждают-де у нас - такой-то
софт (MSSQL/Postgres e.t.c.) и под него мы разрабатываем.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045603
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, формулируя вопрос, я интуитивно предполагал, что это невозможно. И хотел получить подтверждение этому.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045606
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

Это не невозможно, очень даже возможно, это попросту непрактично,
поэтому и была череда намёков про сову на глобус .. кактус.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045607
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему невозможно? Лет 15 назад в Oracle мы доказывали что SQL-полный по Тьюрингу. Это значит
что мы можем решать на нём любые задачи. Шахматы. Численные методы. Реализовывать машины
с состояниями.

Но из этого не следует что нам будет легко! Нам надо будет освоить хитрую технику... ну я не знаю
наподобие разворота цикла в рекурсию (как делают например в Haskell) чтобы протащить состояние
машины через итерации например.

Ну вобщем наверное можно. Но цена такого доказательства будет слишком дорогой.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045630
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
SQL-полный по Тьюрингу.
-- утверждаете ли вы, что один SQL-запрос -- SQL ограниченный "рамками" одного запроса -- является полным по Тьюрингу?

Или что "программа", состоящая из набора последовательно выполняемых SQL-запросов (запускаемых, например, макросом) является полной по Тьюрингу?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40045636
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пытаюсь вспомнить события тех лет.

Кажется речь шла о рекурсивных запросах.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046067
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати о птичках. Эта задачка всплыла у меня в связи с идеей пощупать "корреляционную матрицу" (читай "регрессионную") для американского рынка акций -- если вдруг кому-нибудь эта тема интересна...
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046091
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
пощупать "корреляционную матрицу" (читай "регрессионную") для американского рынка акций -- если вдруг кому-нибудь эта тема интересна...

Сомневаюсь что нынешний рынок акций поддается хоть какому-то тех.анализу. Туда идет огромный поток свеженапечатанных баксов, поэтому его колбасит то от твитов Маска, то от троллинга с реддита и т.д. и т.п.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046117
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

уважаю ваше право сомневаться, поскольку это вопрос мировоззренческий -- для тех, кто на берегу, то есть не пробует ("поддать нынешний рынок акций хоть какому-то тех.анализу").

А правительства в самом деле печатают много денег. От этого рынок акций просто "системно" растёт как целое. И будет дальше расти.

Я бы понял, если бы вы произнесли коронный аргумент "от рефлексивности рынка": типа, там очень много богатых ребят, которые нанимают умных ребят, и если бы там были возможности для теханализа, то умные ребята их бы давно нашли, а богатые ребята на них уселись бы и тем самым "исчерпали" бы их... А так -- ну, баксов много поступает, ну колбасит его (да и так ли уж колбасит-то) ... ну и что?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046124
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
Эта задачка всплыла у меня в связи с идеей пощупать "корреляционную матрицу" (читай "регрессионную") для...
Полностью реализованную на SQL?
Ёжики кололись но упорно лезли на кактус?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046131
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv
Полностью реализованную на SQL?
-- нет, быстро оказался от этой идеи (даже в извращённой форме https://www.sql.ru/forum/1333430/vopros-o-shodimosti-psevdoregressii ), поскольку, как написал выше:
Иван FXS
В принципе, формулируя вопрос, я интуитивно предполагал, что это невозможно. И хотел получить подтверждение этому.
... и написал (линейную) регрессию на VBA.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046159
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
.. и написал (линейную) регрессию на VBA.
разве он не однопоточный? как-же многоядерность/параллельность,
оптимизации под расшиенные инструкции архитектуры современных процессоров?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046163
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv
как-же многоядерность/параллельность,
оптимизации под расшиенные инструкции архитектуры современных процессоров?
-- а мне точно без этого никак не обойтись? Да вы, чай, смеётесь надо мной... не хорошо!
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046185
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Иван FXS
пощупать "корреляционную матрицу" (читай "регрессионную") для американского рынка акций -- если вдруг кому-нибудь эта тема интересна...

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

Полностью поддерживаю. Добавлю что в независимости от выбора алгоритмов - нам
всегда будет не хватать исходных данных которые оказывают влияние на цену акций.
Например таже политическая ситуация с выборами в США или флешмоб в Reddit тоже
оказывают сильное влияние (причем первичное) на цену акций. И если мы будем
искать корреляции между ценами акций то мы ничего интересного не найдем.
Проще сразу брать биржевой индекс. Благо он публикуется регулярно.

Тоесть как научно-познавательная задача - это интересно и я поддерживаю. И поддерживаю
с программистской солидарности.

Но как практический интерес - я думаю что она бесполезна. Вряд-ли на этом можно
что-то заработать в долгосрочном смысле.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046239
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
исходных данных которые оказывают влияние на цену акций
-- вы полагаете, что без учёта всех "влияний на цену акций" никак не получится? А вы когда в мяч играете -- все влияния учитываете?

mayton
искать корреляции между ценами акций то мы ничего интересного не найдем.
Проще сразу брать биржевой индекс
-- биржевой индекс вообще никак не может служить заменой корреляциям между ценами акций. Это разное и про разное.

Просто представьте совершенно надуманную ситуацию, что некоторая акция Б повторяет на следующий день то движение, которое в предыдущий день сделала некоторая акция А. И что от этой зависимости останется, если мы из них построим биржевой индекс (типа (А+Б)/2 )?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046247
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

...
И если мы будем искать корреляции между ценами акций то мы ничего интересного не найдем.
...

Как я понимаю, существует такой род деятельности как "арбитраж"

Т.е. если между акциями похожих компаний в "реальном секторе" ( TM ) экономики существует четкая коррелиция ))), и вдруг одна из акций начинает резко двигаться из-за флешмоба ))), то вполне вероятно, что можно заняться арбитражом между данной акцией и связанных с нею.

Например неудачный флешмоб на рынке серебра. Очень быстро сошел на нет. Подозреваю, как раз из-за такого арбитража от части игроков. Т.к. пытаться флешмобить одну акцию/товар - это одно, а подвинуть весь мировой рынок серебра и связанных с ним продуктов - совершенно другое.

IMHO

p.s. как я понимаю на Российском рынке так же есть хорошо коррелируемые пары. Например цена на золото и акции золотодобывающих компаний (Полюс). С нефтянкой наверное все сложнее, т.к. там больше политики. Но у нас вообще вся страна (курса рубля) и цен на нефть тоже неплохо коррелирует.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046249
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть разница между случайными значениями и значениями случайного процесса: Хабр
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046257
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, я даже не буду с вами спорить.

Пожалуйста. Стройте и корреляции и Фурье анализ. Яж говорю. Из технического инфантильного
любопытсвта я вас поддержу.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046264
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Ну корреляции они такие ))). Например "ядерные взрывы спасают от землетрясений"
https://scinquisitor.livejournal.com/70395.html

note: в конце картинка показывающая корреляцию между кол-во людей утонувших в бассейне и кол-вом фильмов в которых снялся Николас Гейдж
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046266
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, да, от споров практической пользы нет. Разве что --"прокачка" (собственного) понятийного аппарата... Типа, вот, сказали вы "проще сразу брать биржевой индекс" -- мне понадобилось не очень много секунд, чтобы понять и сформулировать, что это мимо. Ну, разминка.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046391
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
mayton, да, от споров практической пользы нет. Разве что --"прокачка" (собственного) понятийного аппарата... Типа, вот, сказали вы "проще сразу брать биржевой индекс" -- мне понадобилось не очень много секунд, чтобы понять и сформулировать, что это мимо. Ну, разминка.

Разминка.

А как насчет корреляционного анализа индексов? Между странами например.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046408
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А как насчет корреляционного анализа индексов? Между странами например.
-- любые торгуемые инструменты можно корреляционно анализировать.

Только вот услышали ли вы, что я имею в виду корреляцию (регрессию, на самом деле) лаговых приростов -- в смысле гротескного примера:
Иван FXS
представьте совершенно надуманную ситуацию, что некоторая акция Б повторяет на следующий день то движение, которое в предыдущий день сделала некоторая акция А
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046410
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Услышал. Именно поэтому я и упомянул про анализ Фурье.

Ну давай уже скорее макет. Не терпится глянуть кто там самый главный.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046415
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, хорошо. Просто следом легло смешное
Leonid Kudryavtsev
note: в конце картинка показывающая корреляцию между кол-во людей утонувших в бассейне и кол-вом фильмов в которых снялся Николас Гейдж
-- которое, конечно, совершенно мимо кассы.

Анализ Фурье я не вижу, при чём тут -- в моей картинке его нет: по каким гармоникам (по гармоникам чего )?

Ну и там дело не в том, "кто там самый главный". Как использовать эту регрессионную матрицу ( матрицу регрессионных коэффициентов) -- отдельный (и намного более деликатный) разговор.

... впрочем, чего там, могу и разболтать, язык без костей: строим, конечно, регрессионные прогнозы (прогнозы на основании регрессии) на завтра, и смотрим, насколько будет сладко, если выбирать из них самые сладкие.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046418
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Матрица (МРК) может выступить капитаном-очевидностью и сообщить нам корреляции которые мы и так знаем.
Одна ценная бумага зависит от цены на золото с лагом. И кроме того МРК может сообщить к нашему сожалению что
прочие влияния равны нулю и этих прочих данных в матрице будет много.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046419
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по subj: насколько я помню корреляцию по лагам критерий по Дурбину-Ватсону неплохо ловит.

на счёт остального - может не стоит привязываться к конкретной области,
а то начнут тут мерятся у кого длиннее не разбираясь в вопросе..
чисто математический контекст, алгоритм, скрипты решения, максимум примеры уже можно из какой-то конкретной области притянуть..
а то всё больше напоминает падение в сторону алкоголиков: о политике, спорте, других вселенных,
в общем о всём к чему нет никакого отношения и на что нет никакого влияния/контроля
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046421
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, вы же ведь просто по инерции продолжаете употреблять слово "корреляция"? Потому что регрессия это не корреляция, и даже не совокупность (вектор) корреляций -- ибо Иксы не ортогональны!

"Влияния равны нулю" -- типа совсем нулю равны коэффициенты регрессии? Это же невероятный исход. Они могут быть невелики... Кстати, "невеликий" -- это сколько, по-вашему, для коэффициента регрессии (по модулю, конечно) на нормализованных величинах: 0.1, 0.01 или 0.001 (при том, что свободных переменных ~100)?

Но, в самом деле, в итоге может и не получиться ... каменный цветок.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046430
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
(при том, что свободных переменных ~100)
спросите у меня, почему "~100" -- я и это разболтаю: потому что я люблю NASDAQ-100. Любил бы SP500 -- было бы ~500. А так-то на американском фондовом рынке торгуется акций -- грубо, по порядку величины, 10^4...
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046479
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А из какого data-provider ты тянешь данные по NASDAQ-100?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046481
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stooq. com/ db/ h/
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046664
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не терпится глянуть кто там самый главный.
вопрос "кто там самый ..." -- звучит, конечно, не так, а "кто там самый предсказуемый ?"
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046692
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну типа тово. Можно пятничный топик поднять. Только переформатировать вопрос. С абстрактной регрессии
до вполне себе узкой задачи. Чтоб были понятны inputs/outputs. Если ты не против.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046700
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я не против, просто не понимаю, что это такое. Но посмотрю, конечно.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046709
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... пятничный топик - это что-то не-продуктовое. Я-бы сказал развлекательно-познавательное.
Но без тебя всё равно правильную формулировку не придумаю.

У меня есть в этом свой интерес. Хочу Apache Spark попробовать в анализе данных. Вот ищу подходящую
постановку "на подумать".
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046731
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так моя роль (читай обязанность) сводится к тому, чтобы предложить формулировку топика?

Ну, "специфика математических моделей для целей формализованной торговли акциями", например. Но поскольку большинство участников форума, несомненно, стоит на мировоззренческой позиции типа
Dima T
Сомневаюсь что нынешний рынок акций поддается хоть какому-то тех.анализу
-- то и результат будет соответствующий...
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046744
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставишь Python 3.9.1
Накатываешь PySpark
(ну естественно NumPy, Pandas, Matplotlib)
Всё, карманный Spark готов, а задач - море..
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046750
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но без тебя всё равно правильную формулировку не придумаю.

У меня есть в этом свой интерес. Хочу Apache Spark попробовать в анализе данных
-- я, конечно, посмотрел https://ru.wikipedia.org/wiki/Apache_Spark , и даже вспомнил, что был там уже раньше... Но для меня это тёмный лес. Линейную регрессию на VBA (MS Access) самопальную реализовать -- если и когда она мне нужна -- это да, этой мой уровень.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему NASDAQ stocks порезаны на 3 директории? В чем смысл? (качал дневные по USA)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/stooq.com/data/daily/us$ tree -d
nasdaq etfs
nasdaq stocks
    1
    2
    3
nyse etfs
nysemkt etfs
nysemkt stocks
nyse stocks
   1
   2
   3
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046832
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, я считаю, что это просто потому, что слишком много акций -- никакого другого значения я не увидел. Они же по алфавиту там упорядочены...
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046892
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Похоже на то.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой бизнес-смысл последних двух полей? VOL, OPENINT.

Код: sql
1.
2.
3.
4.
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
AAPL.US,D,19840907,000000,0.10182,0.10306,0.1006,0.10182,96661645,0
AAPL.US,D,19840910,000000,0.10182,0.10213,0.09937,0.10122,75025205,0
AAPL.US,D,19840911,000000,0.10213,0.1049,0.10213,0.10306,176913886,0
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046922
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VOL - объём торгов за период в штуках, OPENINT -- использовался бы, если бы речь шла о фьючерсах. Для акций это понятие "открытый интерес" смысла не имеет, так что стоят все нули
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046945
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати что вы веберешь для своих регрессий в качестве X,Y ?
Цену закрытия? Или среднее между макс. и мин. за период?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046948
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Иван FXS
Просто представьте совершенно надуманную ситуацию, что некоторая акция Б повторяет на следующий день то движение , которое в предыдущий день сделала некоторая акция А
-- как я уже рассказывал, выберу движение за день.

(Но я надеюсь, вы понимаете, что так не получится, чтобы я озвучил здесь исчерпывающим образом всю свою "исследовательскую программу"... А дьявол в деталях.)
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046949
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельту в смысле?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046950
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dClose = Close - Close[-1]

В принципе, можно пробовать играться с d = Close - Open ... тогда даже будет вся ночь на расчёты и, типа, подготовку к следующему трейду.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046952
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван. Голубчик. Я вообще не претендую на вашу исследовательскую программу. Я даже вряд-ли ее осилю.

Я просто ищу мясо для того чтобы натравить на него Spark и возможно алгоритмы org.apache.spark.ml.stat (Spearman, Pearson).
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046954
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, ок, просто ваш вопрос
mayton
Цену закрытия? Или среднее между макс. и мин. за период?
показывает, что вы не чувствуете "мяса" этой задачи... А "натравленный Spark", конечно же, этого не заменит...

(Упссс... я непроизвольно повторил ваше слово "мясо", но совершенно в другом смысле.)
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046957
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что-ж удачи вам с вашей исследовательской программой.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40046964
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, удача не помешает ................
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40047041
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, вдогонку. Поймите меня правильно: я ни в чём вас не обманул, всё что я рассказал, это правда, -- я в самом деле это так думаю. То есть я в самом деле думаю, что так нужно делать.

Но я понимаю, что я не всё вам рассказал, и понимаю, что я не готов всё публично рассказывать -- "всё" именно в смысле "всё, что я думаю о том, как нужно делать". А если вы сумеете достичь успеха -- как-то по-своему -- ну так слава российской науке!
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40047047
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ради бога. Я тут - просто провожу время, попутно читая ссылки и что-то для себя интересное. Общаюсь
и делюсь мнением.

Если у вас будут успехи в вашей задаче - пишите новости. Разумеется без раскрытий know-how.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40047080
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
слава российской науке!
местечковой спекуляции.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40047110
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Иван FXS
слава российской науке!
местечковой спекуляции.
-- в каком смысле "местечковой" -- если мы обсуждаем NASDAQ (и, шире, американский рынок с его 10^4 акций)? -- или вы меня (то есть себя ) считаете "местечковым"?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40061867
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

запросто, вот однопроходные формулы:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  for table do begin
    inc(S);
    x := x + cx; y:=y+cy;
    xy := xy + cx*cy;
    xkv := xkv + cx*cx;
    ykv := ykv + cy*cy;
  end;

   a:=((s*xkv-x*x)*(s*ykv-y*y));
   r:=(s*xy-x*y)/(a^0.5);     


cx, cy - ваши данные
a - часть уравнения y = ax + b
r - коэффициент кореляции Пирсона
b - соотношения между a, b, r


PS: устойчивость они конечно не гарантируют на больших числах
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40062523
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык по изначальной науке видно выражения в векторно-матричной форме. Как бы намекает на возможность селекта.
По крайней мере в оракуле есть штатные функции работы с матрицами. Кол-во полей не имеет значения, формат собственно рабочей таблицы фиксированный (в доке есть, в качестве одного из полей таблицы используется номер поля гипотетической таблицы).

Насчёт ограничений устойчивости ваша правда. И формула годится только при обратимости матрицы, и если она не очень плохая. А у ТСа ещё был вопрос, когда матрица вырождена.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40062582
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из за этих регрессий можно ... шею свернуть.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063250
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

правда, любопытно, как вы читаете? Вот "N векторов Xn ... , n -- от 1 до 100" -- это о чем, на ваш взгляд?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063263
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

Плохо что не видите связи, подставьте мой пример под матрицы от exp64 и будет то что вам нужно. Это обычное решение МНК.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063291
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
подставьте мой пример под матрицы от exp64 и будет то что вам нужно. Это обычное решение МНК
-- что это вообще значит? Я знаю, что линейная регрессия это "обычное решение МНК", ха-ха, всего-то ("запросто, вот однопроходные формулы" -- как вы изволили выразиться).

Вы умеете диагонализировать матрицу (решать систему линейных уравнений) средствами SQL? Покажите этот код -- будет вам уважуха.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063293
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом топике не предполагалось.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063300
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
В этом топике не предполагалось
-- что именно не предполагалось? (Я догадываюсь, что вы очень быстро отвечаете, потому, видимо, что вам недосуг ... но не настолько же!)
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063472
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,
Зачем мне это делать? Я уже эту задачу решал, без извращений с sql, "уважуха от Иван FXS" мне ни к чему, не вижу смысла переписывать это на SQL.
Сама по себе, задача из разряда "на профпригоднность", как говорится, по типу бинарноого поиска - америку тут не открыть.

Вообще, это возможно - например, посмотреть расширение для вашей базы для работы с матрицами (если такое есть, то и обратная матрица есть)
Можете ли это сделать вы, тут я как бы не могу ванговать.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063504
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
то есть ваш ответ: берём библиотеку, в которой реализована линейная регрессия, и обращается к ней из нашего SQL -- вот у нас и будет "реализация линейной регрессии на SQL" ... В этом смысле и игру в шахматы тоже можно "реализовать на SQL".
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063716
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

нет, от библиотеки вам нужен алгоритм вычисления обратной матрицы и вообще матрицы, остальное вы должны сделать сами

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

или exp98 должен за вас это сделать?

а этот вопрос можно закрывать, то что спрашивается реально возможно
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063720
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), я даже знаю, что вы весьма странно называете "и вообще матрицы, остальное"

-- называется "ковариационная матрица". И да, я знаю, что насчитать её -- ковариационную матрицу -- средствами SQL -- тривиально.

В любом случае, ваше "от библиотеки вам нужен алгоритм вычисления обратной матрицы"
(не всей "обратной матрицы", скажу вам по секрету, и в этом смысле вообще не "обратной матрицы")
-- это "суп из топора".
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063721
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
В любом случае, ваше "от библиотеки вам нужен алгоритм вычисления обратной матрицы"
(не всей "обратной матрицы", скажу вам по секрету, и в этом смысле вообще не "обратной матрицы")
-- это "суп из топора".
ваш ответ говорит о том, что вы вообще не понимаете, что нужно считать
возьмите листочек, напишите формулу расчёта, покажите результат, можно будет предметно говорить

подсказка: в одном из аргументов формулы у вас должна получиться симметричная квадратная матрица 100*100
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063725
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), это становится смешно. При диагонализации матрицы коэффициентов системы линейных уравнений -- с приведением этих диагональных элементов к единицам, конечно --в её правой части появляется (остаётся) решение этой системы уравнений.

Если вы не различаете "диагонализацию" и "вычисления обратной матрицы" ... могу вас только поздравить с глубиной достигнутого вами понимания! И повторить ещё раз, что в процессе диагонализации обратная матрица -- как сущность, как двумерный массив, -- не возникает, то есть не "выччисляется".
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063732
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), ну то есть похвально, конечно, что вы знаете, что решение системы линейных уравнений -- это задача, сходная с задачей вычисления обратной матрицы -- где-то там недалеко одно от другого..
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063737
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS,

вот ваша аппроксимация: y = x * a + b (a, x - векторы [a j ], [x j ])
вот основное условие МНК: Summ i [(x i * a + b - y i )^2] => min
из него выходит следующая система:

∂[ Summ i [(x i * a + b - y i )^2]]/∂a j = 0
∂[ Summ i [(x i * a + b - y i )^2]]/∂b = 0

вместо вопроса там символ частной производной тынц

вот ей и решайте, а по поводу вашей очередной реплики мне нечего добавить
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063750
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
вот ваша аппроксимация
-- ага, самую малость забыли добавить:

а вот миллион самплов, которые вам нужно описать этой аппроксимацией.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063756
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), если вы не возражаете против того, что решение системы линейных уравнений не требует вычисления (то есть целиком и в явном виде) обратной матрицы -- а вы, кажется, не возражаете, -- то я не вижу повода нам с вами продолжать ломать копья. Потому что я знаю , что линейная регрессия основана на МНК, спасибо.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063758
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
-- ага, самую малость забыли добавить:

а вот миллион самплов, которые вам нужно описать этой аппроксимацией.
а вы хотели вообще данные "не смотреть"???
линейка элементарна - якобиан из одних чисел состоит, на нелинейке приходится 10-40 проходов делать
напишите итоговое уравнение, там всего 1 проход по этому массиву
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063764
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
Потому что я знаю , что линейная регрессия основана на МНК, спасибо.
я тоже знаю, что в автомобиле есть двигатель, но механиком это меня не делает, понимаете мысль?
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063807
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
там всего 1 проход по этому массиву
ковариационная матрица строится за один проход по массиву (моделируемых) данных -- да, спасибо, это я тоже знаю ...

... потому что, скажу по секрету, после создания этого топика (больше двух месяцев назад, вообще-то) достаточно быстро приступил к реализации линейной регрессии (в моей конкретной задаче) средствами VBA.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063816
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), а вот что было бы здорово (и, скажем так, по-мужски) -- если бы вы признали явным образом, что тот "ход", которым вы начали своё участие в дискуссии,

а именно, понизили размерность задачи со 100 до единицы и показали решение "за один проход" для этого вырожденного случая -- в качестве "ха-ха, всего-то" (дословно: " запросто, вот однопроходные формулы "),

-- этот ход был неудачным.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063818
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упссс
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063846
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примечание в воздух, широковещательно, никого не имея ввиду.
Между прочим МНК основан на "максимуме правдоподобия при нормальном распределении вер-сти".
Конкретно линейная регрессия основана на них обоих одновременно. Не опосредованно, по типу транзитивного вывода, а именно одновременно на обоих.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063852
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, основан - в смысле "обоснован"? Наверное... Для меня МНК это неважно-на-чём-основанный приём "минимизируем квадраты отклонений (от целевого значения)".
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063858
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, и "обоснован", но и "основан". Квадраты не из воздуха взялись. И их минимум тоже. А из максимума плотности распред-я.
Да, все пользуются как методом. Главное, чтоб отдавали себе отчёт, что в основе лежит предположение о нормальности распределения приближаемых значений. Если не так, возможны чудеса (по меньшей мере в виде необоснованных выводов).
Спсибо за внимание.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063883
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, чьё "предположение о нормальности распределения приближаемых значений лежит в основе"? Если у меня никакого моего "предположения о нормальности распределения приближаемых значений не лежит в основе", то ... доктор, всё плохо? я умру??
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063884
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

подожди пугать, тут надо с базы начинать, сложно уйти в лес, если ходить не умеешь
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063885
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS
-- этот ход был неудачным.
да, ход был неудачным
ибо не предполагал нулевой уровень :-(
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063888
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

я строю линейную регрессию завтрашнего изменения (прироста) цены акции ZN, MRNA и PDD (и всех остальных ста, если честно) на 103 сегодняшних изменения (прироста) цен акций в индексе NASDAQ-100. Если вы за меня помолитесь богу ... "положите в основу предположение о нормальности распределения приближаемых значений" ... ну, наверное, я не буду на вас в большой обиде.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063892
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
ибо не предполагал нулевой уровень :-(
вот речь не мальчика, но мужа!
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063908
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
в основе лежит предположение о нормальности распределения приближаемых значений
-- кстати, заковыка в том, что нормальность распределения нужно "класть в основу" не самих "приближаемых значений", а остатков регрессии -- которую регрессию нам ещё только предстоит построить.

Конечно, мы можем "положить в основу" мантру: " все ошибки измерений имеют нормальное распределение " -- и, перекрестясь, в путь.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063987
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, это как? то есть нормальность остатков гарантирует оптимальность гиперпрямой, полученной через МНК? То есть сначала много-много раз получали приятные решения, потом решили притянуть к ним теоретич. обоснование?

Иван FXS, эм-мм, не то чтобы недостаточно. Скажу по-свойски.
Когда предполагается нормальность совместного распр. X и Y, тогда одновременно она же получается и для остатков.
Но у нас при отклике Y(х)=M(Y|x)= m(x) - неизвестная ф-ция от х, имеем только её ту или иную оценку. Что проще: узнать мат.ож. отклика или предположить нормальность? Вот и выбираем последнее. Притом уже предполагаем существование M(Y|x) и D(Y|x).

И тогда, захотев, чтобы линейное приближение не увеличивало дисперсию Y , D(Y|x)=M(Y - a*x-b)^2= M(Y - m(x))^2 + M(m(x) - a*x-b)^2 формальное + и - слагаемого. И D=min(a, b), когда оба слагаемых минимальны одновременно. Для этого пытаемся, чтобы a*x-b ==m(x). Достаточно максимально правдоподобных параметров a и b. Ан нет, мы не знаем m(x) точно. Зато знаем левую часть.

Поэтому решаем оптимизационную задачу M(Y - a*x-b)^2 -->min(a,b), (фактически метрика взвешенная L2). Всё бы хорошо, да что-то нехорошо. Ах, да, мы же вероятность не знаем в формуле матож. И существет ли оно само. Придётся сделать предположения о распределении (X, Y), причём о совместном.

Проще всего, если оно норм, exp(t^2/2) максимума при t=0. Эта же точка будет и наиболее вероятной. Академический подход - метод макс. правдоподобия. А без этих вероятностных предположений и интерпретаций кто такой МНК? всего лишь гиперкривулька, проходящая ближе всего от заданных точек в метрике почти L2? заодно проходящая в некой "близости" от Y, и чё дальше? почему именно такая метрика? МНК об этом знает? И главное - есть приемственность результата в будущих экспериментах (т.е. вопрос устойчивости, хотя и у гаусса она чувствительна к аномалиям)?

Может можно короче или яснее (или даже правильнее), но как смог.

П.с. Интересно другое, раньше я не задумывался, можно ли предполагать, к примеру что-нибудь одномодовое кроме Гаусса. Например, более крутое. Симметричное? А при 2-х модовом усложнится МНК. Я не вкурсе, может и доказано было, что Гаусс даёт наилучшие несмещённые оценки и т.п.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40063990
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы меньше нареканий

вместо (a*x-b)
следует читать (a*X-b) здесь СВ как линейная ф-ция от СВ X.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40064004
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, я старый человек, мне сложно понимать такие длинные тексты, но...
exp98
нормальность остатков гарантирует оптимальность гиперпрямой, полученной через МНК
но можно я со стариковской прямотой скажу вам, что не существует никакой "оптимальности", пока не сформулирован критерий оптимальности. А когда критерий оптимальности сформулирован, тогда то, что оптимально по этому критерию, то и ... оптимально. Ну, вы поняли.

А на каком о(-бо-)сновании мы выбираем в качестве критерия оптимальности минимальность суммы квадратов остатков ... эээ, может я и знал когда-то, но забыл. А сейчас мне достаточно вот этого смутного воспоминания о том, что это, типа, "хороший критерий". Но главное -- что он ещё и очень удобный (технологичный). В конце концов, линейную регрессию, имманентно основанную на МНК, не я ведь придумал, я её только применить пытаюсь. И либо преуспею, либо нет. Если нет -- не уверен, что у меня хватит настойчивости разобраться, почему я не преуспел.

Вот ещё среднее (среднее арифметическое, само собой!) очень удобно в качестве представителя "середины", а СКО -- в качестве представителя (меры) "разброса"... хотя бывало, да, что я пробовал медиану в качестве "представителя середины" ... но счастья особого мне это не принесло.
...
Рейтинг: 0 / 0
Можно ли на SQL реализовать линейную регрессию?
    #40064140
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS, вы должны понимать, что я не подвергаю сомнению МНК.
Но кроме того, прекращаю дальнейшие пикирования, потому что до ночи читал матэнциклопедию Виноградова на эти темы (тт. III и IV). Даже учитывая краткость энцикл-ких изложений, это заняло много времени, до МНК дошёл под конец. Там ему много страниц (для энц. много) посвящено, диагонально прочёл, но не всё осилил.

Главный же мой вывод из чтива такой.
С Р. у меня достаточно хорошо, не стану уже исправлять позднюю опечатку (aX+b).

С МНК у меня однобоко. Вы правы с термином "обосновывать". Действительно, согласно истории Гаусс и Лежандр считаются основателями МНК. И, опровергая мои рассуждения, руководствовались именно метрическими соображениеми, к-рые затем подтверждались на практике. Впрочем недаром МО, Д и т.д. называют моментами энного порядка, взято из механики. Вероятностная подоплёка, наверняка, сложилась позднее и для части ситуаций, где её можно обоснованно ввести. А нормальность распределений для части этой части. И именно для предположений нормальности в МНК я не ошибался.

"Остатки" и их нормальность в МНК не увидел. Машинально относил это понятие к Р. , а в МНК другой термин: об Х предлагают думать как о сумме (m+eps), где eps - случ. величина. Но тогда автоматическки и (m+eps) СВ. Но ведь eps в наблюдениях - терминологически никак не остаток, а всего лишь "предполагаемая ошибка фактического наблюдения". Правильно? Ну и тогда ваши слова были о том же, что и я.

И, собственно метод макс. правдоподобия в современном изложении значительно шире предположений о нормальности распр.
Я думаю, мы каждый при своих остались, типа ничья.
...
Рейтинг: 0 / 0
106 сообщений из 106, показаны все 5 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Можно ли на SQL реализовать линейную регрессию?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]