Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации



Вы уже знакомы с нейросетями, но без хороших данных их «мозг» не сможет увидеть, что происходит в реальном мире. На этом уроке вы узнаете, как подготовить данные, какие методы анализа позволяют быстро выявлять скрытые закономерности и как нейросети помогают находить тренды (趋势, qūshì) в больших объёмах информации. После практики вы сможете применить полученные навыки к задачам в работе, учёбе и личных проектах.
| Термин | Пиньинь | Иероглифы | Краткое определение |
|---|---|---|---|
| Данные | shùjù | 数据 | Любая зафиксированная информация (числа, текст, изображения). |
| Структурированные | jiégòu shùjù | 结构化数据 | Таблицы, базы, где каждый элемент находится в фиксированном столбце. |
| Неструктурированные | wú jiégòu shùjù | 无结构化数据 | Текстовые документы, аудио, видео – нет чёткой схемы. |
| Тренд | qūshì | 趋势 | Периодическое изменение показателя в определённом направлении. |
Аналогия: представьте себе огромный океан. Структурированные данные – это рыбы, плавающие в чётко отмеченных школах (таблицы). Неструктурированные данные – это морские растения, плавающие в разных направлениях, их нужно собрать и упорядочить, прежде чем увидеть общую картину.
| Показатель | Что измеряет | Как выглядит в таблице |
|---|---|---|
| Среднее (mean) | Типичное значение | =AVERAGE(A2:A101) |
| Медиана (median) | Центр распределения | =MEDIAN(A2:A101) |
| Стандартное отклонение (σ) | Расббросок данных | =STDEV.P(A2:A101) |
| Квантиль (percentile) | Позиция в распределении | =PERCENTILE.INC(A2:A101,0.75) |
Эти цифры позволяют быстро понять, «что в коробке» данных, прежде чем переходить к более сложным методам.
y = a·x + b, которая минимизирует расстояние до всех точек. Пример: у вас есть данные о количестве подписчиков в соцсетях за каждый месяц. Постройте линейную регрессию, получите коэффициент a. Если a > 0, значит подписчики растут, если < 0 – падают.
N соседних периодов. Алгоритм (Python‑псевдокод):
def moving_average(series, window=5):
return series.rolling(window=window).mean()
| Метод | Как работает | Пример применения |
|---|---|---|
| LSTM (Long Short‑Term Memory) | Запоминает длительные зависимости, умеет «видеть» прошлое и предсказывать будущее. | Прогнозирование спроса на складские товары. |
| Transformer‑based Time‑Series | Само‑внимание (self‑attention) позволяет одновременно учитывать все точки ряда, а не только соседние. | Анализ динамики цены криптовалют. |
| CNN‑for‑Series | Свертка «скользящим окном» выявляет локальные паттерны, похожие на обнаружение краёв на изображениях. | Выявление аномалий в показателях серверов. |
Почему нейросети? Они умеют находить нелинейные зависимости, которые простая линейная регрессия пропускает. Например, рост популярности видеоконтента может ускоряться экспоненциально, а не линейно.
Пример из реальной практики:
Компания X использовала LSTM‑модель для прогнозирования количества заявок в службу поддержки. После обучения модель выдала «тренд‑кривую», предсказывав рост на 23 % в следующем квартале, что позволило подготовить дополнительный персонал заранее.
| Шаг | Инструмент | Что делаем |
|---|---|---|
| 1️⃣ | Pandas (Python) | Загрузка, очистка, базовая статистика. |
| 2️⃣ | Matplotlib / Seaborn | Визуализация временных рядов, скользящее среднее. |
| 3️⃣ | statsmodels (seasonal_decompose) |
Декомпозиция серии на тренд/сезонность/остаток. |
| 4️⃣ | TensorFlow / PyTorch | Обучение LSTM/Transformer‑модели. |
| 5️⃣ | MLflow | Отслеживание экспериментов и метрик. |
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
# 1. Загрузка данных
df = pd.read_csv('sales.csv', parse_dates=['date'], index_col='date')
series = df['sales']
# 2. Очистка
series = series.fillna(method='ffill')
# 3. Скользящее среднее
ma = series.rolling(window=7).mean()
# 4. Декомпозиция
decomp = seasonal_decompose(series, model='additive', period=30)
trend = decomp.trend
# 5. Нормализация для нейросети
scaler = MinMaxScaler()
norm_series = scaler.fit_transform(series.values.reshape(-1,1))
# 6. Формирование обучающих выборок
def create_dataset(data, look_back=30):
X, Y = [], []
for i in range(len(data)-look_back):
X.append(data[i:i+look_back])
Y.append(data[i+look_back])
return np.array(X), np.array(Y)
X, Y = create_dataset(norm_series)
# 7. Модель LSTM
model = Sequential([
LSTM(64, input_shape=(X.shape[1], 1)),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
model.fit(X, Y, epochs=20, batch_size=32, verbose=0)
# 8. Прогноз на 30 дней вперёд
pred = model.predict(X[-1].reshape(1, -1, 1))
pred_original = scaler.inverse_transform(pred)
print(f'Прогноз продаж на следующий день: {pred_original[0][0]:.2f}')
Код демонстрирует, как от «сырой» таблицы перейти к тренд‑прогнозу с помощью нейросети. Вы можете менять look_back, тип модели, добавить attention‑слой для повышения точности.
Очистка данных
weather.csv (дата, температура, осадки). [0,1] с помощью Min‑Max нормализации. Визуализация и скользящее среднее
Линейный регрессионный анализ
a. Что он говорит о текущем тренде? Нейросетевой прогноз
Интерпретация attention (опционально)
attention‑weights для последнего предсказания. Ответы можно проверить, сравнив полученные цифры с простыми статистическими расчётами (например, среднее за месяц) и визуально, посмотрев на графики. Если ошибка слишком велика, попробуйте увеличить размер окна или добавить сезонные признаки (месяц, день недели).
Итог: теперь вы умеете превращать «сырой» набор данных в понятный тренд, использовать как классические статистические инструменты, так и мощные нейросети для предсказания будущих изменений. Применяйте эти навыки в работе, учебных проектах и личных исследованиях – и ваши аналитические решения будут всегда на шаг впереди.