Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/91: Рейтинг темы: голосов - 91, средняя оценка - 4.89
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 13:11
Студворк — интернет-сервис помощи студентам
Всё верно, если писать "A\B", то matlab сам подбирает оптимальный алгоритм решения СЛАУ, но только прямой алгоритм, об итеративных алгоритмах здесь речи не идёт.
Да, это так. Что касается итеративного метода, то я применяю метод простых итераций.

Matlab M
1
2
3
x=S\K;
w=K-S*x;
x=x+S\w;
Одного цикла достаточно чтобы получить выше точность. Но только на 1 %. На второй итерации точность становится хуже нулевого приближения и остается такой с увеличением итераций.

Вообще, подозреваю, что поскольку у меня СЛАУ размером 30000х30000 (и матрица близка к плохо обусловленной), потеря точности из-за большого количества арифметических операций в итерационных методах будет нивелировать их эффект.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2020, 13:11
Ответы с готовыми решениями:

точность возвращения функции long double
есть число a long double надо написать чтобы фунция возвращала число до 25 знака после запятой то есть return a.%25; (как...

Как обойтись без float, double, long double?
К примеру мне надо в программе использовать что-то вроде -0,00000000000003626686812 и 0,00000000000002072392464. Притом чтобы считалось...

Чем различаются long long и long double?
long long или long double

156
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
27.08.2020, 14:14
Цитата Сообщение от vittiv Посмотреть сообщение
На второй итерации точность становится хуже нулевого приближения и остается такой с увеличением итераций
Какой то уж больно сомнительный у Вас метод простых итераций ...
Как я уже писал, на таких больших матрицах, точность итеративных методов на несколько порядков превосходит точность прямых методов, а не на 1-2%. Всё потому, что ошибка прямого метода пропорциональна числу обусловленности матрицы и его размера, и это в лучшем случае, а а в итеративных методах она почти не зависит от размера и определяется только числом обусловленности.

Добавлено через 19 минут
Вот простейший алгоритм решения СЛАУ методом Якоби:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
% уравнение Ax=b;
[n,~]=size(A);
d=diag(A);
g=b./d;
ID=diag(1./d);
B=eye()-ID*A;
 
if norm(B)>=1, disp('Алгоритм не сходится'); end
 
x=zeros(n,1);      % начальное приближение
 
for ii=1:1000;     % число итераций 1000
    x=B*x+g;       % это кстати всем известная операция из BLAS
end
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 14:15
... и определяется только числом обусловленности
Но у меня матрица почти плохо обусловлена... я это понимаю, поскольку иногда появляются такие сообщения. А когда таких сообщений нет, то я это понимаю так, что еще чуть-чуть и будет.

И все-таки есть подозрение, что точности не хватает. Буду пробовать (при всех прочих равных условиях) сделать тоже самое, но с повышенной точностью. Надеюсь будет эффект. Ведь, как я понимаю, с более высокой точностью и прямой метод решения СЛАУ даст эффект.

Спасибо, попробую Ваш код. А если в качестве начального приближения использовать результат прямого решения?
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
27.08.2020, 14:35
Цитата Сообщение от vittiv Посмотреть сообщение
поскольку иногда появляются такие сообщения
такое сообщение является намёком на то, что результаты решения не очень точны, для итеративного алгоритма предельная погрешность определяется как
Matlab M
1
e=cond(A)*eps;
для прямого
Matlab M
1
e=size(A,1)*cond(A)*eps;
переходя к повышенной точности Вы уменьшаете eps, переходя к итеративному алгоритму Вы повышаете точность на величину размере матрицы.

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

Добавлено через 4 минуты
Цитата Сообщение от vittiv Посмотреть сообщение
Ведь, как я понимаю, с более высокой точностью и прямой метод решения СЛАУ даст эффект
конечно даст, куда же он денется, только трудоёмкость прямого алгоритма на больших матрицах сильно возрастает, а при переходе в повышенную точность всё только усугубляется. Ведь тут проблема ещё и в скорости вычислений

Добавлено через 4 минуты
Цитата Сообщение от vittiv Посмотреть сообщение
А если в качестве начального приближения использовать результат прямого решения?
В принципе можно, при выполнении условия сходимости (строка 8) он сходится из любой точки. Но использовать предварительное решение прямым методом здесь бессмысленно, всё что это даст - это выигрыш нескольких итераций
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 14:36
Для регуляризации я применяю метод Lasso (Least absolute shrinkage and selection operator) - метод оценивания коэффициентов линейной регрессионной модели.

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

http://www.machinelearning.ru/... itle=Лассо

Метод LASSO работает, но тоже дает не более 5% эффекта. Т.е. я конечно борюсь за каждый % но это дело такое...

Поэтому я обязательно изучу Ваш код и применю его. Напишу потом, что получилось.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
27.08.2020, 15:04
Цитата Сообщение от vittiv Посмотреть сообщение
Для регуляризации я применяю метод Lasso
Не знаю что Вы там используете и для чего, но мы обсуждаем вопрос решения СЛАУ. LASSO не используется для регуляризации, LASSO использует регуляризацию, для вполне определённых целей. Но это уже выходит за рамки обсуждения.

Добавлено через 5 минут
Цитата Сообщение от vittiv Посмотреть сообщение
Поэтому я обязательно изучу Ваш код и применю его
Обратите внимание, в таком виде как я его привёл - это не универсальный метод, и подходит далеко не для любых данных. Хотя, как я теперь подозреваю, у Вас что то вроде корреляционной матрицы, с диагональным преобладанием. В этом случае он должен всегда сходится.
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 15:27
Цитата Сообщение от Alexis333 Посмотреть сообщение
с диагональным преобладанием
У меня СЛАУ есть решение задачи многопараметрической регрессии, там нет диагонального преобладания... на диагонале 1e8 далее плавно до 1е5 к краю. Но LASSO методом я воздействую на диагональ, таким образом я уменьшаю коэффициенты, которые вносят маленький вклад, но которые имеют большие отклонения по модулю. Как я понимаю это и есть регуляризация. Точность результата становиться выше.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
27.08.2020, 20:35
Цитата Сообщение от vittiv Посмотреть сообщение
Но LASSO методом я воздействую на диагональ, таким образом я уменьшаю коэффициенты
это как же Вы им воздействуете на диагональ?

Добавлено через 26 минут
Цитата Сообщение от vittiv Посмотреть сообщение
там нет диагонального преобладания... на диагонале 1e8 далее плавно до 1е5
Если всё так как Вы пишите, то есть серьёзное подозрение, что матрица вырождена. Тогда ни о какой точности решения говорить вообще не приходится. Итеративный алгоритм сходится не будет, а "точный" если и даст какие то результаты, то совершенно не достоверные. Вырожденная система не имеет однозначного решения.
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 23:13
Сомневаюсь, что нужно (интересно) но привожу программу LASSO.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
dltm=1e-10 
 
[szyk,szxk]=size(K);
 
xo=double(zeros(szyk,szxk));
 
for i=1:szxk
 
    St=S;
    Kt=K(:,i);
    for j=1:szyk
        St(j,j)=St(j,j)+St(j,j)*dltm/100;
    end
 
    x=St\Kt;
 
    for its=1:10
 
        St=S;
        for j=1:szyk
            St(j,j)=St(j,j)+St(j,j)*dltm*(its^2/100)/abs(x(j));
        end
 
        x=St\Kt;
 
    end
 
    w=Kt-St*x;
    x=x+St\w;
 
    xo(:,i)=double(x);
 
end
Проверил...

Matlab M
1
x=St\Kt
Ошибка= 8.451160570991183

Matlab M
1
x=double(mp(St)\mp(Kt))
Ошибка= 8.451160271874732

т.е. разница очень маленькая.

Matlab M
1
2
3
    x=St\Kt;
    w=Kt-St*x;
    xo=x+St\w;
Ошибка=8.451160570991183

Цитата Сообщение от Alexis333 Посмотреть сообщение
есть серьёзное подозрение, что матрица вырождена
Вроде нет... det(St)=inf

Позже реализую итерационный алгоритм.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
27.08.2020, 23:29
Цитата Сообщение от vittiv Посмотреть сообщение
привожу программу LASSO
Что это за LASSO? Вы откуда вообще всё это взяли?

Цитата Сообщение от vittiv Посмотреть сообщение
det(St)=inf
странно всё это, почему он бесконечный? Что в матрице есть бесконечные элементы?
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
27.08.2020, 23:37
Цитата Сообщение от Alexis333 Посмотреть сообщение
есть бесконечные элементы?
Я прочитал, что такое может быть если значение больше допустимого... Не знаю, как это интерпретировать.

Цитата Сообщение от Alexis333 Посмотреть сообщение
Что это за LASSO? Вы откуда вообще всё это взяли?
Ой не знаю... помню долго думал, что это такое и как это сделать. Но вроде работает. Коэффициенты обнуляются если долго итерировать. Хотя может это уже и не LASSO.

если применять Multiprecision Computing Toolbox то сообщение

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.917541e-18.

уже не появляется.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
28.08.2020, 00:02
Цитата Сообщение от vittiv Посмотреть сообщение
Я прочитал, что такое может быть если значение больше допустимого... Не знаю, как это интерпретировать
Нужно попробовать
cond(S)
это и есть обусловленность Вашей задачи,
насчёт St - всё сомнительно, непонятно что это вообще за матрица, уж слишком просто всё у Вас получается.

Если у вас S -это ковариационная матрица, то нужно оценить её ранг. Признаков может быть сколько угодно, но ранг матрицы не может быть больше числа наблюдений. Если ранг S меньше её размера, то некоторые признаки необходимо удалить, так как они являются линейными комбинациями остальных. Удалять нужно до тех пор, пока cond(S) не примет нормальное значение, хотя бы 1Е6, а не 1Е18. Если бы у Вас было нормальное LASSO, оно бы сделало всё само.

Вы видимо считаете, чем больше факторных переменных в регрессионном у равнении, тем лучше ...
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
28.08.2020, 10:45
Цитата Сообщение от Alexis333 Посмотреть сообщение
Вы видимо считаете, чем больше факторных переменных в регрессионном у равнении, тем лучше
Я увеличиваю количество переменных до количества, когда точность апроксимации данных начинает ухудшатся (cond(S) какой есть, такой и есть при этом). Если я смогу улучшить точность нахождения весов (спасибо Вам за совет, я буду прорабатывать эту тему) я буду искать новое оптимальное количество этих переменных. А пока оно 30000 штук.

Цитата Сообщение от Alexis333 Посмотреть сообщение
Если бы у Вас было нормальное LASSO
Я вспомнил. Нормальное LASSO работает с найденными весами (в моем случае их 30000 штук) чтобы "убить" те веса (ненужные предикторы), которые оказывают малое возмущение на результат (апроксимации в моем случае). При этом есть один для меня большой недостаток - необходимо подавать сильно избыточные данные c соответствующими откликами. В моем случае для 30000 предикторов у меня более 2 млн наблюдений. А это значит, что я не могу воспользоваться методом LOSSO как есть из-за проблем с памятью. Приходится выкручиваться...

Хотя есть выход, наверно можно найти решение на меньшей выборки, далее обнулить веса меньше порога, за затем выкинуть из матрицы S соответствующие им строки и столбцы. И решить заново СЛАУ, чтобы потом сделать тоже самое еще раз. И делать это, пока не будет найден локальный минимум точности. При этом будет 1 гипер параметр - порог обнуления.

Цитата Сообщение от Alexis333 Посмотреть сообщение
так как они являются линейными комбинациями остальных
Линейных комбинаций точно нет, но близко к этому - может быть.

По поводу итерационных методов решения СЛАУ. Есть вопрос: Есть ли мне смысл реализовывать какой-либо итерационный метод если я могу просто увеличить точность? Или все-таки простое увеличение точности не гарантирует результат лучше или на уровне итерационных методов?
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
28.08.2020, 13:26
Цитата Сообщение от vittiv Посмотреть сообщение
По поводу итерационных методов решения СЛАУ. Есть вопрос: Есть ли мне смысл реализовывать какой-либо итерационный метод если я могу просто увеличить точность? Или все-таки простое увеличение точности не гарантирует результат лучше или на уровне итерационных методов?
По этому поводу дам Вам такой ответ, который думаю он всё прояснит. В строке 28 Вашего кода есть переменная w
Цитата Сообщение от vittiv Посмотреть сообщение
w=Kt-St*x;
это невязка результата. Посмотрите, какая величина у этой невязки. Судя по всему, величина этой невязки Вас не устраивает, и поэтому Вы пытаетесь её уменьшить итеративно
Цитата Сообщение от vittiv Посмотреть сообщение
x=x+St\w;
т.е. Вы и сами приходите к выводу о необходимости итеративного уточнения результата. Только Ваш итеративный процесс не сходится (раз ошибка то уменьшается то увеличивается).
В случае сходящегося итеративного алгоритма, невязка (которую в нём так же несложно вычислить) снизится до уровня eps и будет колебаться возле этой величины. Если Вы повысите машинную точность, то остаточная невязка уменьшится, причём, как в прямом алгоритме, так и в итеративном. Так, что точность итеративного алгоритма, если он правильно реализован, для одной и той же машинной точности, всегда будет выше. На больших матрицах, как у Вас, скорее всего намного выше окажется и скорость вычислений.
Нужно Вам это или нет - дело Ваше. Чтобы понять, какой будет прирост точности от применения итеративного алгоритма, посмотрите насколько отличается невязка w от eps.
Что касается перехода в повышенную точность - это даст дополнительные прирост точности во всех случаях, правда ценой дополнительных вычислительных затрат, которые тоже неплохо было бы оценить.

Добавлено через 18 минут
Цитата Сообщение от vittiv Посмотреть сообщение
Я увеличиваю количество переменных до количества, когда точность апроксимации данных начинает ухудшатся
если у Вас стоит задача аппроксимации данных, и в выборке 2 млн. наблюдений, то ковариационная матрица вполне может быть невырожденной. Тем не менее, чтобы в этом убедиться нужно посмотреть cond(S) в повышенной точности. В этом случае имеет смысл удалять только признаки совсем не коррелирующие с K, но таких наверное у Вас нет.
В общем, если признаки хоть немного коррелируют с K и не являются линейными комбинациями остальных признаков, то их добавление не может привести к снижению точности аппроксимации, а только её увеличивает. В принципе, точность аппроксимации не может уменьшится даже при включении в уравнение бесполезных признаков. Если же такое всё таки наблюдается, то это скорее всего проблемы с точности вычислений.

Обычно, несущественные признаки удаляют с целью повышения точности прогноза. В задачах аппроксимации этот вопрос не играет какой либо существенной роли.
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
28.08.2020, 13:28
Изучая реализацию метода Якоби я нашел два алгоритма реализации его. Немного переделав под себя и упростив. я получил 2 варианта:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[szyk,szxk]=size(K);
 
xo=double(zeros(szyk,szxk));
 
D=diag(S);
Dinv=sparse(diag(1./D));
R=S-diag(D);
 
for i=1:szxk    
    X=K(:,i);
    err=inf;
    tol=100*eps(norm(K(:,i)));
    iter=0;
    while err > tol
      iter=iter + 1;
      Xold=X;
      X=Dinv*(K(:,i)-R*X); % the guts of the iteration
      err=norm(X-Xold); % this is not really an error, but a change per iteration. when that is stable, we choose to terminate.
    end
    disp([sum(abs(K(:,i)-S*X))/szyk iter])
    xo(:,i)=X;
end
и

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[szyk,szxk]=size(K);
 
xo=double(zeros(szyk,szxk));
 
D=diag(diag(S)); % Матрица с диагональю как у матрицы А, остальные элементы нулевые
E=eye(size(S));  % Единичная матрица размера А
 
D1=inv(D);                          % Находим обратную матрицу D
B=E-D1*S;                           % Находим вектор B
if norm(B)>=1
    disp(['Метод не сходится!! Попробуй пересмотреть данные!!']) %Проверяем на сходимость: Норма B должна быть <1
end
 
for i=1:szxk    
 
    Xin=K(:,i);                         % Берем за первое приближение - вектор правой части 
    err=inf;
    tol=100*eps(norm(K(:,i)));
    n=1;                                % n - нумерация итерации
 
    while n<100 && err > tol            % Условие зацикливания
        Xout=B*Xin+D1*K(:,i);           % Делаем итерации
        err=norm(Xin-Xout);             % Условие окончания
        n=n+1;                          % Делаем следующую итерацию
        Xin=Xout;                       % Подготавливаем вектор к итерации
    end
    disp([sum(abs(K(:,i)-S*X))/szyk n])
    xo(:,i)=X;
end
Сравнивая два алгоритма я вижу отличия, подскажите, какой из 2х вариантов правильный?
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
28.08.2020, 13:32
Цитата Сообщение от vittiv Посмотреть сообщение
Хотя есть выход, наверно можно найти решение на меньшей выборки, далее обнулить веса меньше порога, за затем выкинуть из матрицы S соответствующие им строки и столбцы. И решить заново СЛАУ, чтобы потом сделать тоже самое еще раз. И делать это, пока не будет найден локальный минимум точности. При этом будет 1 гипер параметр - порог обнуления.
Мне кажется Вы сами не знаете, что делаете ...
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
28.08.2020, 13:48
Цитата Сообщение от Alexis333 Посмотреть сообщение
Мне кажется Вы сами не знаете, что делаете ...
Идея простая... я имею матрицу S размером 9х9 - система из 9 уравнений и соответственно, ее решение есть вектор с 6-тью весами.

пусть результатом решения будет вектор [10 20 30 40 50 60 70 80 90]

пусть в результате подгонки LASSO будет ясно, что 3 и 6 предикторы не оказывают заметного влияния на результат. тогда я их выкину (зря я их учитывал). Но чтобы опять не находить S (чтобы не собирать опять 2 миллиона наблюдений), я выкину из нее 3 и 6 столбцы и 3 и 6 строки (обнулю 3 и 4 предикторы). Получиться матрица S размером 7х7 (которая бы соответствовала той, которая получилась бы, если я заново ее находил). И я теперь могу опять решить СЛАУ, теперь уже без этих "плохих" предикторов.

теперь решением будет вектор [11 21 41 51 71 81 91]

Я не прав? Подскажите, пожалуйста.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
28.08.2020, 14:19
Цитата Сообщение от vittiv Посмотреть сообщение
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[szyk,szxk]=size(K);
xo=double(zeros(szyk,szxk));
D=diag(S);
Dinv=sparse(diag(1./D));  % sparse можно не писать, просто diag(1./D);
R=S-diag(D);
for i=1:szxk 
 X=K(:,i);                     % здесь нужно указать начальное приближение например X=zeros(szyk,1);  K - это правая часть системы, указывать её в качестве нач. приближения бессмысленно, хотя наверное и можно
 err=inf;
 tol=100*eps(norm(K(:,i)));
 iter=0;
 while err > tol
 iter=iter + 1;
 Xold=X;
 X=Dinv*(K(:,i)-R*X); % это нормально, но не рационально Dinv можно умножить на K и на R 1 раз, а не повторять одно и то же млн. раз во вложенном цикле
 err=norm(X-Xold); % this is not really an error, but a change per iteration. when that is stable, we choose to terminate.
 end
 disp([sum(abs(K(:,i)-S*X))/szyk iter]) 
 xo(:,i)=X;
end
в целом, за исключением нерациональной реализации, должно работать, но он в принципе ничем и не отличается от представленного мной ранее алгоритма, если не считать критерий останова,
есть е ещё один недостаток - отсутствует проверка критерия сходимости и нет никаких специальных мер по её обеспечению

Добавлено через 6 минут
Цитата Сообщение от vittiv Посмотреть сообщение
пусть в результате подгонки LASSO будет ясно, что 3 и 6 предикторы не оказывают заметного влияния
LASSO безусловно будет это ясно, более того, ему будет ясно какие значения имеют и все остальные коэффициенты уравнения. После этого, никакие другие вычисления не требуются, т.к. задача уже решена. Но у Вас нет никакого LASSO и Вам не может быть ясно какие признаки существенные, а какие нет. Алгоритм, который Вы привели, ничем не обоснован и непонятно что делает. Скорее всего и признаки он отбросит совсем не те, которые следовало бы.

Добавлено через 19 минут
Цитата Сообщение от vittiv Посмотреть сообщение
Xout=B*Xin+D1*K(:,i); % Делаем итерации
тут опять D1 можно 1 раз умножить на K, а не повторять это каждый раз

всё остальное вроде правильно, за исключением того, что 100 итераций наверное будет недостаточно, всё таки это алгоритм с линейной сходимостью

По поводу нарушения условия сходимости - единственное, что можно сделать - переставить местами строки матрицы B, а так же её столбцы, вместе со строками K и наименованиями переменных в выходном векторе, так, чтобы на диагонали находились все максимальные по модулю элементы B. Но у Вас видимо матрица итак уже приведена к такому виду. Если алгоритм не сойдётся, то она скорее всего вырождена.
0
9 / 1 / 0
Регистрация: 08.09.2019
Сообщений: 343
28.08.2020, 14:22
Цитата Сообщение от Alexis333 Посмотреть сообщение
Но у Вас нет никакого LASSO
Да, Вы правы. Я исхожу из правильной реализации Lasso. В Matlab есть команда lasso(X,b)(https://uk.mathworks.com/help/stats/lasso.html) ею я и планирую воспользоваться.

Цитата Сообщение от Alexis333 Посмотреть сообщение
После этого, никакие другие вычисления не требуются
А... я думал что он не обнуляет предикторы (думал что в ответе не ноль, но близкое значение)... посыпаю голову пеплом.

Но, все-таки моя идея выше состояла в том, что...

Lasso не сможет работать с выборкой размером 2 млн. Просто памяти не хватит. Поэтому мне надо для Lasso дать выборку например из 100000 наблюдений. И результатом работы lasso будет решение исходя из этой маленькой выборки. Я не могу игнорировать другие 1.9 млн выборки. Но я понимаю, что скорее всего результат будет близким к истине (для полной выборке). Поэтому могу предположить, что и для полной выборке скорее всего обнулятся те же предикторы. Но поскольку решение lasso было на ограниченной выборке, чтобы получить правильный и точный результат (учитывающий все 2 млн наблюдений) мне надо удалить соответствующие столбцы и строки в матрице S и решить СЛАУ снова.

Вот в чем идея.
0
496 / 550 / 131
Регистрация: 31.10.2016
Сообщений: 4,410
28.08.2020, 14:33
Цитата Сообщение от vittiv Посмотреть сообщение
Lasso не сможет работать с выборкой размером 2 млн
я могу конечно ошибаться, но у меня есть основания полагать, что трудоёмкость LASSO почти не зависит от объёма выборки, т.к. от него не зависят размеры ковариационной матрицы. В общем пробуйте на всех данных. Делить выборку на части - это не самая лучшая идея
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2020, 14:33

Как увеличить точность?
Подскажите, как в коде увеличить точность вычислений? Пробовал с помощью TOL, но не получилось Необходимая точность: 10^-6

Как увеличить точность вычисления
Всем добрый день) Как увеличить точность вычисления? к примеру матлаб считает что I= 6.7000e-007,а маткад I=8.39627912393174e-22 ...

Точность расчетов в Maple
Можно ли в Maple задать двойную точность расчетов ( аналог двойной точности в фортране)? Я так понимаю, что есть команда Digits и команда...

Повысить точность расчетов
Здравствуйте. Задача умозрительная, если мне нужно получить точность 40 и до неприличия разрядов после запятой, какой тип переменных...

Почему перестает работать программа при замене double на long double?
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru