- Вопрос или проблема
- Ответ или решение
- Как начать работу с большими данными для предсказания
- Фон
- Шаг 1: Определите вашу цель
- Шаг 2: Выбор инструментов и технологий
- Шаг 3: Изучение основ машинного обучения
- Шаг 4: Подготовка данных
- Шаг 5: Начало работы с моделями
- Шаг 6: Продвижение к более сложным моделям
- Заключение
Вопрос или проблема
Я пытаюсь изо всех сил воссоздать алгоритм, который использует компания, обрабатывая все его выводы и добавляя некоторые релевантные переменные (я не смогу полностью его воспроизвести, так как у меня нет данных по запасам). Я предполагаю, что это работа для машинного обучения, но я хотел бы узнать, с чего начать? Есть ли определенные модели, с которых я должен начать? Какое программное обеспечение мне следует использовать? Какие курсы мне стоит пройти?
Поскольку вы действительно новичок во всем этом, вот несколько предложений.
Скачайте и установите R и RStudio Desktop.
Посмотрите книгу “Введение в статистическое обучение”. Книга содержит примеры кода (на R), которые идеально подходят для начала обучения. Для вас будет полезно взглянуть на Главу 2, чтобы понять, что такое статистическое обучение, а также получить хорошее представление о том, как использовать R.
Тем не менее, что действительно имеет значение для вас, так это Глава 3 (линейная регрессия) и Глава 7 (выход за пределы линейности).
Теперь можно начинать. Вот несколько примеров того, как можно выполнять регрессию в R:
# Установите пакет, если это необходимо
# install.packages("ISLR")
# Подключите пакеты
library(ISLR)
library(gam)
library(Metrics)
# Просмотр данных
head(mtcars)
# Просмотр одной переменной в нашем датафрейме
summary(mtcars$mpg)
# Разделите данные на обучающие и тестовые
set.seed(123)
smp_size <- floor(0.75 * nrow(mtcars))
train_ind <- sample(seq_len(nrow(mtcars)), size = smp_size)
train <- mtcars[train_ind, ]
test <- mtcars[-train_ind, ]
# Линейная регрессия
# Оценка mpg (y) в зависимости от ...
reg1 = lm(mpg~disp+wt+qsec+hp, data=train)
summary(reg1)
# Регрессия с полиномами
reg2 = lm(mpg~poly(disp,2)+poly(wt,2)+poly(qsec,2)+poly(hp,2), data=train)
summary(reg2)
# Обобщенные аддитивные модели (регрессионные сплайны)
reg3 = gam(mpg~s(disp,3)+s(wt,3)+s(qsec,3)+s(hp,3),data=train)
par(mfrow=c(2,2))
plot(reg3)
# Предсказание mpg
pred1 = predict(reg1, newdata=test)
pred2 = predict(reg2, newdata=test)
pred3 = predict(reg3, newdata=test)
# Посмотреть, насколько хорошо подходит наша модель
mae(test$mpg, pred1)
mae(test$mpg, pred2)
mae(test$mpg, pred3)
Если вы хотите предсказать целое число/число с плавающей запятой, вам потребуются модели регрессии, а если вы хотите разделить на категории, вам понадобятся модели классификации.
Поскольку вам нужно предсказать цену, выбирайте модели регрессии. Существует множество моделей машинного обучения, таких как линейная регрессия, KNNRegressor, деревья решений, случайные леса, модели градиентного бустинга и многое другое.
Теперь вы можете создавать эти модели на языке R или Python. (Я бы порекомендовал Python, так как он более широко используется и имеет гораздо больше библиотек, чем R, но это ваше решение).
После выбора языка, который вам нравится, вы можете пройти курс по машинному обучению (в зависимости от того, знакомы ли вы с ML или нет).
Затем начните с простой модели (линейной регрессии), а затем переходите к более сложным, таким как случайный лес и градиентный бустинг.
Что касается программного обеспечения, вам просто нужен IDE (интегрированная среда разработки), где вы будете вводить код и выполнять его.
Сообщите мне, если у вас есть дополнительные вопросы!
Ответ или решение
Как начать работу с большими данными для предсказания
Фон
В условиях, когда у вас есть большой набор данных, собранный с помощью веб-скрапинга, ваша задача сводится к предсказанию значения переменной y на основе 20 зависимых переменных. Несмотря на то, что вы не сможете воссоздать алгоритм компании в полной мере из-за отсутствия определённых данных (например, данных о запасах), использование методов машинного обучения может помочь вам достичь значимых результатов.
Шаг 1: Определите вашу цель
Прежде чем переходить к технической части, вам необходимо чётко определить, что именно вы хотите предсказать. Является ли ваш выходной признак (y) непрерывным значением, например, ценой, или это категориальная переменная? Это повлияет на выбор алгоритмов машину обучения. Например:
- Для непрерывных данных используйте регрессионные модели.
- Для категориальных данных подойдут модели классификации.
В вашем случае, поскольку вы хотите предсказать цену, мы сосредоточимся на регрессионных моделях.
Шаг 2: Выбор инструментов и технологий
Язык программирования:
Для работы с машинным обучением вам понадобится выбрать язык. Вот два основных варианта:
- R – Подходит для статистического анализа и визуализации.
- Python – Более широко используемый и имеет множество библиотек для машинного обучения, таких как Scikit-learn, TensorFlow и Pytorch.
Для новичков я рекомендую Python из-за его распространенности в сообществе и простоты использования.
Интегрированная среда разработки (IDE):
Выберите IDE для написания и выполнения кода. Популярные варианты включают:
- Jupyter Notebook
- PyCharm
- Visual Studio Code
Шаг 3: Изучение основ машинного обучения
Рекомендуется ознакомиться с основами машинного обучения, прежде чем приступать к практике. Я рекомендую следующие ресурсы:
- Курсы на Coursera или Udemy по машинному обучению — начните с введения в машинное обучение.
- Книга "Введение в статистическое обучение" (ISLR) — эта книга предлагает основные концепции статистического и машинного обучения. Особое внимание уделите главам, посвящённым линейной регрессии и более сложным моделям.
Шаг 4: Подготовка данных
Прежде чем переходить к моделям, необходимо подготовить данные:
- Очистка данных: Убедитесь, что данные не содержат пропусков и аномалий.
- Преобразование данных: Нормализация или стандартизация переменных может улучшить производительность модели.
- Разделение на обучающую и тестовую выборки: Рекомендуемое соотношение — 75% для обучения и 25% для тестирования.
Шаг 5: Начало работы с моделями
Как только данные подготовлены, вы можете начать с простых регрессионных моделей. Пример кода на Python для линейной регрессии может выглядеть так:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# Загрузка данных
data = pd.read_csv('your_data.csv')
# Выбор переменных
X = data[['var1', 'var2', 'var3']] # замените на ваши 20 переменных
y = data['target_variable'] # замените на вашу целевую переменную
# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
# Обучение модели
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказание
predictions = model.predict(X_test)
# Оценка модели
mae = mean_absolute_error(y_test, predictions)
print("Mean Absolute Error:", mae)
Шаг 6: Продвижение к более сложным моделям
После успешного освоения линейной регрессии вы можете перейти к более сложным подходам, таким как:
- Регрессионные деревья и случайные леса
- Градиентный бустинг
- Нейронные сети
Заключение
Таким образом, начните с чёткого понимания вашей задачи, выберите подходящий язык программирования и инструменты, изучите основы машинного обучения и подготовьте данные. По мере совершенствования переходите к более сложным моделям. Удачи в вашем проекте! Если у вас есть дополнительные вопросы, не стесняйтесь обращаться.