Нейронная сеть и глубокое обучение в последнее время стали модными словечками. Машинное обучение было в моде в течение некоторого времени, но доступность хранилища и вычислительной мощности сделали его популярным. Интерес ощутим и в бизнес-школах. Методы, связанные с машинным обучением, не сильно проникли из ИТ-отделов в бизнес, но, похоже, всем это интересно. Итак, давайте построим модель нейронной сети за 10 минут.

Это сценарий:

У вас есть набор независимых переменных (IV), которые предсказывают зависимую переменную (DV). У вас есть теоретическая модель, и вы хотите знать, достаточно ли она хороша. Помните, мы не тестируем модель. Мы просто проверяем, насколько хороши IV в прогнозировании DV. Если они не являются хорошими предикторами для начала, зачем тратить время на придумывание причудливой модели! Звучит знакомо? Давайте начнем.

Настраивать

У вас есть какие-то предварительные знания о python? Если не потратьте еще 10 минут на изучение Python. Теперь вам нужно потратить некоторое время, чтобы настроить вашу систему один раз. Просто следуйте этим инструкциям.

Код

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

# Modules
import sys
import numpy
from imblearn.over_sampling import RandomOverSampler
from keras.layers import Dense
from keras.models import Sequential
from pandas import read_csv

Создайте файл CSV с вашими данными, указав последний столбец в качестве DV. Теперь импортируйте этот файл.

# Import data
dataset = read_csv(sys.argv[1], header=1)
(nrows, ncols) = dataset.shape

nrows и ncols — количество строк и столбцов. Теперь отделите DV (y) от IV (X), как показано ниже.

# Separate DV from IVs 
values = dataset.values
X = values[:, 0:ncols-1]
y = values[:, ncols-1]

В большинстве случаев вы будете пытаться предсказать редкое событие. Так что добавьте передискретизации для вкуса 🙂

# Oversampling
ros = RandomOverSampler(random_state=0)
X_R, y_R = ros.fit_sample(X, y)

Создайте, скомпилируйте и подгоните модель.

# create model
model = Sequential()
model.add(Dense(12, input_dim=vnum, kernel_initializer='uniform', activation='relu'))
model.add(Dense(8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_R, y_R, epochs=150, batch_size=10, verbose=2)

Три оператора model.add представляют три уровня нейронной сети. Число после Dense — это количество нейронов в каждом слое. Вы можете немного поиграть с этими значениями. Эти настройки должны работать в большинстве бизнес-кейсов. Прочитать это для получения дополнительной информации.

Теперь оцените модель.

# evaluate the model
scores = model.evaluate(X_R, y_R)
print("\n")
print("\n Accuracy of the model")
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1] * 100))
print("\n --------------------------------------------------")

Поместите этот код в файл (скажем, nnet.py) и используйте его, как показано ниже.

python nnet.py mydata.csv

TL;DR

Просто используйте QRMine. nnet.py находится там.

Операционализация моделей нейронных сетей

Вскоре я покажу вам, как операционализировать модель с помощью flask.

Первоначально опубликовано в моем блоге на nuchange.ca 21 июня 2018 г.Спасибо, что прочитали. Если у вас есть отзывы, свяжитесь со мной в Twitter, LinkedIn или Github.