Pull to refresh
17
0

Инженер

Send message

Разумеется, использование целевых функций, отличных от суммы квадратов разностей, в этом обзоре не рассматриваются, ибо нельзя объять необъятное. Это вообще довольно специфическая область

подобный анализ делам раз в несколько проектов

Это даже не анализ, а так - демонстрация возможностей

Хороший вопрос, коллега. В свое время с товарищем тоже спорили, за чаркой, что лучше - Python или R )) Если совсем кратко, я сделал выбор в пользу Python, хотя у R тоже свои плюсы есть. В общем тема для целой дискуссии...

Я в этом обзоре писал не про машинное обучение, а про аппроксимацию, о простых (не многофакторных) моделях, причем в основном о нелинейных. scikit-learn - это отдельный инструмент. До него дело еще дойдет. А этот обзор совсем не про него.

Нельзя объять необъятное

Опыт работы за несколько лет - просто методически обобщен и скомпилирован. Так что на самом деле оформление не так и много времени заняло.

Рекомендую список литературы для изучения основ теории:

  1. Айвазян С.А. Прикладная статистика. Основы эконометрики: В 2 т. - Т.2: Основы эконометрики. - 2-е изд., испр. - М.: ЮНИТИ-ДАНА, 2001. - 432 с.

  2. Вучков И. и др. Прикладной линейный регрессионный анализ / пер. с болг. - М.: Финансы и статистика, 1987. - 239 с.

  3. Фёрстер Э., Рёнц Б. Методы корреляционного и регрессионного анализа / пер с нем. - М.: Финансы и статистика, 1983. - 302 с.

  4. Львовский Е.Н. Статистические методы построения эмпирических формул. - М.: Высшая школа, 1988. - 239 с.

Термин "регрессия" предложен еще в 19 в. Погуглите про историю статистики, информации море...

Таких правил достаточно много - кроме Стерджесса, по крайней мере Фридмана-Диакониса и Скотта стоит упомянуть https://en.wikipedia.org/wiki/Histogram#Number_of_bins_and_width.

Также полезно обратиться к монографии: Лемешко Б.Ю. и др. Статистический анализ данных. Моделирование и исследование вероятностных закономерностей (2011), с.118.

Коллега, заинтересовался вашей статьей, особенно после слов:

Но вот оценка принадлежности к интервалу имеет смысл. То есть вероятность принадлежности к интервалу [v-\epsilon, v+\epsilon]вполне может быть оценена и будет иметь вполне определённый смысл.

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

Но вот дальше у меня возник ряд мыслей по прочтению статьи. Я не математик, а инженер, и поэтому выскажусь в более прикладном плане.

Вот что мы понимаем под задачей регрессии? Оценить параметры уравнения модели, интерпретировать их, построить с помощью модели прогноз и оценить достоверность прогноза. Наличие уравнения и интерпретация его параметров - это же ключевой момент. Я здесь регрессии как таковой не вижу - нет ни уравнения, ни прогноза.

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

Вы взяли в качестве примера по сути некую реализацию случайной функции и с помощью вашего алгоритма нашли средние значения и оценили разброс относительно средних. ОК, хорошо. Но хотелось бы понять: для решения каких задач вы видите возможность применения своего алгоритма?

Если для непараметрической регрессии, то хотелось бы видеть уравнение, и главное - прогноз с доверительным интервалом.

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

Ну и, конечно же - как влияет изменение закона распределения на результаты.

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

Кстати, не разбирались с таким вопросом: почему при выдаче результатов summary из statsmodels значение эксцесса остатков отличается от значения, рассчитанного с помощью scipy.stats.kurtosis?

Очень хорошая статья. В основном кратко и по делу. Только один вопрос - это все-таки перевод или ваша оригинальная работа?

А Айзека Азимова в его книгах тоже про роботов с ИИ немало неписано. И иногда от таких размышлений не по себе становится. Конечно, фантастика, но...

А как вы группируете ассортимент? Ведь товарная номенклатура интернет-магазина включает в себя десятки тысяч наименований товаров, которые можно объединить в классы, подклассы, группы, подгруппы и т.д. Для каждого индивидуального товара коэффициенты эластичности оценить невозможно, значит нужно укрупнять...

Мне это напоминает задачу из моей практики работы инженером ПТО в строительной организации, молодым специалистом после института. У нас был завод железобетонных конструкций (ЖБК), на продукцию которого нужно было разработать прейскурант. Калькуляция на ЖБК составляется на 1 м3, а отпускная цена определяется путем умножения цены в руб./м3 на объем 1 изделия (м3/шт.). Продукция завода - это реально тысячи видов конструкций, которые были разбиты на разделы - например, плиты перекрытий, сваи, фундаментные блоки, перемычки и т.д. Внутри каждой группы - свои подгруппы, например, сваи подразделяются по классу нагрузки (из-за различного армирования цена на 1 м3 получается разной). На каждое изделие калькуляцию не составишь - прейскурант получится гигантский, а чересчур укрупнять тоже нельзя - будут искажения в отпускной цене, особенно для ходовых изделий, которые пользуются спросом на рынке, типа фундаментных блоков и плит перекрытий. Нужно было искать золотую середину. Получалось нечто вроде задачи классификации... Ну, тогда про возможности кластерного анализа в python мы еще знать не знали ))

В вашем случае тоже, вероятно, как-то нужно искать эту золотую середину.

И еще один момент, который мне бросился в глаза. В вашей модели не учтены перекрестные связи между различными группами товаров. У вас не получается так, что модель просто выберет группы товаров с наибольшей торговой наценкой, а малорентабельные группы просто обнулит?

Вообще, эти перекрестные эффекты как-то исследовались? Ведь если же товары-заменители. Если вы поднимете цены на один вид штанов, то граждане начнут массово покупать штаны другого вида, то есть эластичность спроса на один товар зависит от цен на другой.

Поддерживаю, статья интересная и задача актуальная. Я бы еще поинтересовался - параметры модели, по сути, являются случайными величинами, то есть здесь имеет место задача стохастического программирования. Вероятностный фактор каким-то образом учитываете?

Мы выборку уже очистили от выбросов. И очищенная от выбросов выборка дает нам значимую нелинейную зависимость.

Если этого не сделать - то закон распределения будет отличаться от нормального, соответственно, проверку гипотез выполнять будет нельзя. Пришлось бы работать с непараметрическими показателями тесноты связи, а то уже отдельная тема...

Коллега, как это использовать на практике - написаны десятки, если не сотни, книг, монографий, справочников и статей. Это же классика прикладной статистики. Корреляционный анализ - это разведка перед построением регрессионной модели.

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

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

Применительно к разобранному примеру - зависимость показателей FuelFlow и Mileage может быть описана набором парных регрессионных моделей (линейная, степенная, экспонента, логарифмическая, даже полином, хоть полином здесь применять и некорректно). Мы, конечно, построим все эти модели, оценим их значимость, адекватность по Фишеру, ошибку аппроксимации, сравним по информационным критериям (AIC, SC, HQ) - это все понятно. Но предварительный вывод о том, что вид корреляционной связи значимо отличается от линейной - это еще один кирпич в будущий статистический вывод. А если бы связь оказалась значимо линейной? Это позволило бы сразу остановиться на парной линейной регрессионной модели.

Если программное обеспечение позволяет нам рассчитать показатель - почему бы его не рассчитать и не проанализировать? Я так считаю. Но, как и писал раньше - каждый исследователь сам принимает решение о том, как и что считать.

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

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

Для автомобилей, находящихся в эксплуатации более 5 лет  с общим пробегом более 100 тыс.км– до 5%; более 8 лет с общим пробегом более 150 тыс.км – до 10%.

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

Так корреляционный анализ - это этап, предшествующий регрессионному анализу. Установление зависимости, проверка ее значимости, прогнозирование - это все далее

Спасибо, камрад. Не знал про эту библиотеку. Как говорится, век живи, век учись... Буду разбираться.

Согласен. Это же классика - "ложная корреляция". Об этом явлении статистики в работах еще в конце 19 века писали...

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Data Analyst, Data Scientist
Python
Algorithms and data structures