Представлять данные в виде преобразования Фурье или полинома высокой степени?

Я имею дело со звездными кривыми блеска (.fits-файлы, содержащие 4000 точек данных зависимости времени от звездной яркости, см. график для нескольких примеров с разной периодичностью). Мне нужно представить/сопоставить эти кривые блеска таким образом, чтобы я мог выполнять на них неконтролируемую кластеризацию с помощью машинного обучения. Мне предложили использовать либо полиномиальное представление с высокой степенью (p=30...до нескольких сотен), либо использовать преобразование Фурье на кривых блеска. Я обнаружил, что полиномиальные подгонки numpy.polyfit с высокой степенью p не обеспечивают хороших подгонок, и я получаю предупреждение «RankWarning: Polyfit может быть плохо обусловлен». Может быть, мне стоит попробовать преобразование Фурье, но я не знаком, и это звучит сложно.

Как я могу/должен представлять/подгонять такие данные для кластеризации машинного обучения? Могу ли я добиться хорошего результата с np.polyfit при p>30? введите здесь описание изображения


person NeStack    schedule 30.04.2018    source источник
comment
Это очень общий вопрос! SO предназначен только для тех случаев, когда вы что-то пробовали и в вашем коде есть ошибки.   -  person anishtain4    schedule 01.05.2018
comment
Я видел, как другие пользователи stackexchange задавали общие вопросы, чтобы получить ПРИНЦИПИАЛЬНЫЕ советы, как построить свой код, какие методы использовать и т. д. Надеюсь получить подобный совет.   -  person NeStack    schedule 01.05.2018
comment
@anishtain4: Это согласуется с другими вопросами по машинному обучению и смежным группам: OP конкретно спрашивает о представлении данных для обслуживания вызова конкретной функции. Да, было бы лучше иметь конкретный пример предупреждающего сообщения.   -  person Prune    schedule 01.05.2018


Ответы (1)


Для вещей с четким «сезонным» повторяющимся циклом гораздо более адекватным представляется преобразование Фурье.

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

Но, конечно, есть и другие альтернативы: DCT, вейвлеты и т. д. — по работе с такими данными написаны целые книги.

person Has QUIT--Anony-Mousse    schedule 10.05.2018
comment
Действительно, я столкнулся с упомянутой вами проблемой в отношении расходования данных, что требует новых полиномиальных терминов. Можете ли вы указать, на какие пакеты Python мне следует обратить внимание? Некоторые примеры/шаблоны кода? Книжные рекомендации? Tnx - person NeStack; 10.05.2018