2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 09:29 
Аватара пользователя
Добрый день! Помогите, пожалуйста, с такой проблемой.

Проводятся эксперименты, цель которых выявить уравнение прямой на плоскости. Берется заранее известная прямая. Каждый эксперимент дает набор из небольшого количества точек на плоскости (порядка 10-15 штук), моделирующих эту прямую, и есть допустимый порог отклонения от истинной прямой. Данные экспериментов более менее точны, по крайней мере, при прямом применении линейной регрессии (без доп. фильтраций) в допустимый порог укладывается 80-85 % результатов, остальные выбиваются, но не сильно. Хочется довести эффективность до 99 -100 %. Возможно ли это сделать? Число точек, к сожалению, никак не увеличить.

Пример набора данных (одна строка - одна точка)

(Оффтоп)

-10.2593994140625 204.3939208984375
-10.4180908203125 204.49462890625
-10.5767822265625 204.586181640625
-10.7354736328125 204.8150634765625
-10.8941650390625 204.9066162109375
-11.044921875 205.0164794921875
-11.2274169921875 205.15380859375
-11.4337158203125 205.3277587890625
-11.6082763671875 205.4193115234375
-11.806640625 205.556640625
-11.96533203125 205.703125
-12.1240234375 205.7489013671875
-12.28271484375 205.849609375

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 11:19 
Попробуйте такую:
$$y=196,81-0,7406\cdot x,$$
здесь $x$- первый столбец, а $y$ - второй.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 11:32 
Евгеша, у вас как-то странно сформулирована задача. Что значит "заранее известная прямая" - ее уравнение известно? Эффективность чего вы хотите увеличить и каким образом?

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 12:19 
Аватара пользователя
Pphantom
В общем, есть некоторая поверхность, состоящая из трех отрезков. Ее параметры (углы, ширины отрезков) известны. Результат измерения этой поверхности на рисунке (точки измерения соединены отрезками). Применяя обычную линейную регрессию, можно достаточно точно найти уравнения для двух прямых справа, т. к. известно много точек. Но вот с последним кончиком проблема. Т. к. на нем лежит мало точек (всего штук 10 - 15), то его уравнение не всегда точно находится (т. е. неустойчиво даже к небольшим шумам). Вопрос в том, что с этим можно сделать. Возможно добавить какую-то предварительную фильтрацию или вообще не использовать лин. регрессию, а что-то другое.

Изображение

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 12:32 
Аватара пользователя
0. Изображение не показывается.
1. Откуда взялся "допустимый порог"? Может, он просто слишком жёстко задан, и в принципе невозможно добиться желаемого?
2. Что-то известно о спецификации ошибки? МНК оптимально для случая нормального распределения, в случае наличия выбросов, грубых ошибок и пр. нужны другие методы.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 13:32 
Аватара пользователя
Евгений Машеров в сообщении #1432220 писал(а):
0. Изображение не показывается.
1. Откуда взялся "допустимый порог"? Может, он просто слишком жёстко задан, и в принципе невозможно добиться желаемого?
2. Что-то известно о спецификации ошибки? МНК оптимально для случая нормального распределения, в случае наличия выбросов, грубых ошибок и пр. нужны другие методы.

0. У меня все нормально, залил сюда еще: https://ibb.co/nrDKzNq
1. Порог взят более чем 5 % от величины, но на некоторых данных погрешность достигает более 20 % - это слишком много
2. Шумы распределены нормально, для достаточно большого числа точек МНК дает хороший результат. Какие-то выбросы теоретически возможны, но конкретно в том измерении, где получена погрешность более 20 % вроде никаких всплесков нет. А какие есть методы?

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 14:29 
Евгеша в сообщении #1432223 писал(а):
1. Порог взят более чем 5 % от величины, но на некоторых данных погрешность достигает более 20 % - это слишком много
2. Шумы распределены нормально, для достаточно большого числа точек МНК дает хороший результат. Какие-то выбросы теоретически возможны, но конкретно в том измерении, где получена погрешность более 20 % вроде никаких всплесков нет. А какие есть методы?
Именно в описанной ситуации - никаких. Кроме общей идеи, что при превышении установленного порога погрешности результаты выкидываются и измерения проводятся заново.

Правда, это никак не спасет, если порог задан слишком жестко.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение27.12.2019, 15:09 
Здесь скорее не проблема выбросов, а проблема неоднородности. Посмотрите на остатки линейной регрессии - они сосредоточены не вблизи нуля, а на краях, и как раз этого диапазона $\pm$0.05.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение29.12.2019, 08:57 
Аватара пользователя
Возможно, тут всё безнадёжно, и дело в слишком жёстко заданном пороге. Но может быть, что удастся усовершенствовать, сменив метод оценивания. МНК минимизирует сумму квадратов, и если в выборке есть далеко отстоящая от "правильной линии" точка, то оценен ная линия регрессии перекашивается к ней, при этом прочие точки оказываются на увеличенном расстоянии от линии регрессии. Такие точки, будь это грубые ошибки измерений или ошибки формирования выборки, когда точка включена по формальным критериям, не принадлежа выборке по сути, или хоть "чёрные лебеди", в смысле проявление редких и непрогнозируемых факторов, сравнительно редки, и при большом объёме выборки акой эффект не проявляется, а при малом может. Я бы попытатся смотреть в сторону робастного оценивания. Скажем, взять вместо квадрата отклонения функцию
$
g(x)=\begin{cases}
p|x|,&\text{если $|x|>p$;}\\
x^2,&\text{если $|x|\lt<p$;}\\
\end{cases}
$
где p - значение порога.
То есть МНК для малых отклонений, метод наименьших модулей (МНМ) для сверхпороговых. Впрочем, можно и всё МНМ, ценой небольшой потери эффективности для нормального распределения.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение29.12.2019, 10:09 
Аватара пользователя
Ещё вариант - сохранив МНК, отбрасывать точки с сильными отклонениями по одной, всякий раз пересчитывая модель, пока все отклонения не будут меньше порога, или пока число отброшенных не превысит допустимое (тогда с грустью констатируем, что "данные плохие" и выйти на желаемую точность не выйдет).
Тут надо заметить, что очень большой выброс может "самомаскироваться", исказив коэффициенты ("перекосив линию регрессии") настолько, что за максимальный выброс примут правильное наблюдение, отбрасывая вместо ошибочного именно правильное. Помочь может "скользящий экзамен", когда модель строится по всем точкам, кроме "экзаменуемой", для которой находится отклонение от модели (есть вычислительная схема, при которой не надо полностью пересчитывать модель при удалении одной точки, а лишь корректировать). Тогда шанс не заметить выброс резко снижается.
В итоге должна получиться МНК-оценка, полученная по "хорошим точкам", причём отклонения по каждой точке этой подвыборки не превышают порог, и не более заданного числа "плохих точек" (которые должны быть предметом дополнительного рассмотрения на содержательном уровне, автоматическое отбрасывание не лучший вариант - а рассматривая их индивидуально, можно найти немало важного и интересного), для которых отклонения могут быть весьма велики.

 
 
 
 Re: Эффективность линейной регрессии при малом наборе данных?
Сообщение30.12.2019, 10:00 
Аватара пользователя
В представленных данных максимальное относительное отклонение составляет 0.03%
Уравнение $y=196.8600942-0.736392025\cdot x$
Кроме того, не совсем понятно требование "получить 99% отклонений в пределах допуска", если речь о выборке 10-15 наблюдений.

(Оффтоп)

Два землекопа и две трети

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group