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

Набор данных и библиотеки

Чтобы начать наш анализ, нам нужен набор данных, который содержит исторические цены на акции Netflix. К счастью, здесь доступен набор данных с открытым исходным кодом. Этот набор данных невелик и может быть быстро импортирован в нашу среду Python.

Прежде чем мы углубимся в анализ, давайте импортируем необходимые библиотеки. Мы будем использовать популярные библиотеки Python, такие как Pandas, NumPy, Matplotlib и Scikit-learn, для обработки данных, визуализации и моделирования машинного обучения.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

Долгосрочный прогноз

В долгосрочном прогнозировании мы стремимся уловить общую тенденцию цен на акции Netflix на основе всех доступных данных. Этот подход полезен для инвесторов, которые заинтересованы в понимании общего поведения акций в течение длительного периода времени. Для этого мы можем использовать полиномиальную регрессию, расширение линейной регрессии.

Полиномиальная регрессия включает преобразование оси времени в N-мерную матрицу и применение модели линейной регрессии к преобразованным данным. Экспериментируя с различными степенями полиномов, мы можем найти оптимальную модель, которая минимизирует среднеквадратичную ошибку (MSE).

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

# Splitting the dataset
train_size = int(len(dataset) * 0.9)
val_size = int(len(dataset) * 0.05)
test_size = int(len(dataset) * 0.05)
train_set = dataset[:train_size]
val_set = dataset[train_size:train_size+val_size]
test_set = dataset[train_size+val_size:]
# Training different polynomial regression models
degrees = [1, 2, 3, 4, 5]
mse_scores = []
for degree in degrees:
    poly_features = PolynomialFeatures(degree=degree)
    X_train = poly_features.fit_transform(train_set[['Date']])
    y_train = train_set['Close'].values
    model = LinearRegression()
    model.fit(X_train, y_train)
    # Evaluate the model using the validation set
    X_val = poly_features.transform(val_set[['Date']])
    y_val = val_set['Close'].values
    y_pred = model.predict(X_val)
    mse = np.mean((y_pred - y_val) ** 2)
    mse_scores.append(mse)
# Select the model with the lowest MSE
optimal_degree = degrees[np.argmin(mse_scores)]

Модель с самой низкой MSE имеет степень 3. Эта модель довольно хорошо отражает общую тенденцию цен на акции Netflix, хотя и не учитывает краткосрочные колебания. Давайте визуализируем прогнозируемый тренд.

# Visualizing the predicted trend
X_train = poly_features.fit_transform(train_set[['Date']])
y_train = train_set['Close'].values
model = LinearRegression()
model.fit(X_train, y_train)
X_test = poly_features.transform(test_set[['Date']])
y_test = test_set['Close'].values
y_pred = model.predict(X_test)
plt.figure(figsize=(10, 6))
plt.scatter(train_set['Date'], train_set['Close'], color='blue', label='Training Data')
plt.scatter(test_set['Date'], test_set['Close'], color='red', label='Test Data')
plt.plot(test_set['Date'], y_pred, color='green', label='Predicted Trend')
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.title('Long-Term Prediction of Netflix Stock Prices')
plt.legend()
plt.show()

На графике показан прогнозируемый тренд цен на акции Netflix на основе модели долгосрочного прогнозирования. Хотя он не фиксирует краткосрочные колебания, он дает ценную информацию об общем поведении акций.

Среднесрочный прогноз

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

Чтобы сделать среднесрочный прогноз, мы сначала усредняем цены акций Netflix ежемесячно. Это помогает нам определить общее поведение акции на более коротком временном интервале. Затем мы используем модель ARIMA (авторегрессионное интегрированное скользящее среднее) для прогнозирования цен на акции.

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

# Averaging the stock prices on a monthly basis
monthly_data = dataset.resample('M').mean()
# Fitting an ARIMA model
model = ARIMA(monthly_data['Close'], order=(1, 1, 0))
results = model.fit()
# Generating predictions for the next three months
forecast = results.forecast(steps=3)
# Visualizing the predictions
plt.figure(figsize=(10, 6))
plt.plot(monthly_data.index, monthly_data['Close'], label='Actual Prices')
plt.plot(forecast.index, forecast.values, label='Predicted Prices')
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.title('Middle-Term Prediction of Netflix Stock Prices')
plt.legend()
plt.show()

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

Краткосрочный прогноз

Краткосрочное прогнозирование направлено на прогнозирование цен на акции Netflix в течение нескольких дней, как правило, на основе данных за предыдущие несколько дней. Этот подход требует анализа последних тенденций и моделей цен на акции, чтобы делать точные прогнозы.

Для краткосрочного прогнозирования мы учитываем цены акций Netflix за предыдущий 41 день и используем модель машинного обучения для прогнозирования цен на следующие три дня. Мы можем использовать такие методы, как регрессия опорных векторов (SVR) или регрессия случайного леса, чтобы построить нашу модель прогнозирования.

# Defining the dataset for short-term prediction
short_term_dataset = dataset[['Date', 'Close']].tail(41)
# Training the SVR model
X_train = np.arange(1, 42).reshape(-1, 1)
y_train = short_term_dataset['Close'].values
svr_model = SVR(kernel='linear')
svr_model.fit(X_train, y_train)
# Generating predictions for the next three days
X_test = np.array([42, 43, 44]).reshape(-1, 1)
y_pred = svr_model.predict(X_test)
# Visualizing the predictions
plt.figure(figsize=(10, 6))
plt.scatter(X_train, y_train, color='blue', label='Training Data')
plt.scatter(X_test, y_pred, color='red', label='Predicted Prices')
plt.xlabel('Days')
plt.ylabel('Stock Price')
plt.title('Short-Term Prediction of Netflix Stock Prices')
plt.legend()
plt.show()

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

Заключение

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

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

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

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