#python #machine-learning #signal-processing #kaggle
Вопрос:
На Kaggle я нашел алгоритмы, используемые для шумоподавления сигналов. Такие, как фильтры Голея, функции сплайна, авторегрессионное моделирование или сам регулятор коленей.
Ссылка: https://www.kaggle.com/residentmario/denoising-algorithms
Как именно это работает, поскольку я не могу найти ни одной статьи, объясняющей его использование для шумоподавления сигналов? Что это за алгоритм? Я хотел бы понять, как это работает
Ответ №1:
Это алгоритм контролируемого обучения — это лучший ответ,
обычно алгоритм сначала обучается с известными данными и пытается интерпретировать функцию, которая наилучшим образом представляет эти данные, таким образом, чтобы можно было создать новую точку для ранее невидимого ввода.
Проще говоря, он определит точку для ранее невидимого значения на основе среднего значения k ближайших точек, для которых он ранее видел, лучший, более подробный ответ можно найти ниже: https://towardsdatascience.com/the-basics-knn-for-classification-and-regression-c1e8a6c955
в коде каггла:
вектор времени равен:
df.index.values[:, np.newaxis]
и вектор сигнала равен:
df.iloc[:, 0]
похоже, что человек в kaggle использует данные для первого обучения сети — см. Ниже:
## define the KNN network
clf = KNeighborsRegressor(n_neighbors=100, weights='uniform')
## train the network
clf.fit(df.index.values[:, np.newaxis],
df.iloc[:, 0])
предоставление ему функции, которая представляет связь между временем и значением сигнала. С помощью этого он затем передает вектор времени обратно в сеть, чтобы заставить ее воспроизвести сигнал.
y_pred = clf.predict(df.index.values[:, np.newaxis])
этот новый сигнал будет представлять собой наилучшую интерпретацию сигнала модели, как вы можете видеть по ссылке, которую я разместил выше, вы можете настроить определенные параметры, которые приведут к «более чистому» сигналу, но также могут ухудшить исходный сигнал
Следует отметить, что использование этого метода так же, как и того парня в kaggle, означает, что он будет работать только для этого одного сигнала, поскольку вход-это время, которое нельзя использовать для интерпретации будущих значений:
y_pred = clf.predict(df.index.values[:, np.newaxis] 400000)
ax = pd.Series(df.iloc[:, 0]).plot(color='lightgray')
pd.Series(y_pred).plot(color='black', ax=ax, figsize=(12, 8))
Комментарии:
1. Какой шум здесь устраняется?
2. Я бы сказал, что высокая частота, это на самом деле не удаляя шум, но на самом деле представление исходного сигнала, как парень на kaggle говорит: учится находить в объяснимой дисперсии и опустить случайные отклонения, так это удаление случайных сигналов, таких как шипы, но, вероятно, усиливает повторяющиеся низкочастотные сигналы — хотя я не могу сказать наверняка без дальнейшего расследования
3. Меня спросили, делаю ли я это глобально или локально? Что это значит? Какой подход представлен в статье?
4. кто спрашивал? это для задания?
5. да, это одна из моих задач. Я спросил здесь, чтобы полностью понять тему