Граф Лассоалгоритма Sklearn.covariance.graph_lasso () - PullRequest
0 голосов
/ 03 июля 2018

Я работаю над тиражированием статьи под названием «Улучшение оптимизации средней дисперсии за счет ограничения разреженного хеджирования». Идея авторов состоит в том, чтобы использовать алгоритм графического лассо для внесения некоторого смещения в процесс оценки инверсии выборочной ковариационной матрицы. Графический алгоритм Лассо прекрасно работает в R, но когда я использую python для одних и тех же данных с одинаковыми параметрами, я получаю два вида ошибок:

  1. Если я использую режим координатного спуска (cd) в качестве решателя, я получаю ошибку с плавающей запятой, говорящую, что: FloatingPointError: Non SPD result: the system is too ill-conditioned for this solver. The system is too ill-conditioned for this solver (Меня беспокоит то, что я пробовал этот решатель на моделируемой положительно определенной матрице и Это игра мне эта ошибка)

  2. Если я использую режим регрессии наименьшего угла (LARS) (который менее стабилен, но рекомендуется для плохо обусловленных матриц), я получаю ошибку переполнения, указывающую OverflowError: int too large to convert to float

Насколько мне известно, в отличие от C ++ и других языков, python не ограничен верхним максимумом для целых чисел (помимо возможностей самой машины). Принимая во внимание, что поплавки ограничены. Я думаю, что это может быть источником более поздней проблемы. (Я также слышал в прошлом, что R гораздо более устойчив в терминах плохо обусловленных матриц). Я был бы рад услышать ваш опыт работы с графом лассо в R или Python. К этому письму я прикрепил небольшой код на Python, который имитирует эту проблему, в несколько строк. Любой вклад будет иметь высокую оценку. Спасибо всем,

Skander

from sklearn.covariance import graph_lasso
from sklearn.datasets import make_spd_matrix

symetric_PD_mx= make_spd_matrix(100)
glout = graph_lasso(emp_cov=symetric_PD_mx, alpha=0.01,mode="lars")
...