Наиболее подходящий алгоритм машинного обучения для этой задачи? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть набор данных, и я хочу решить, какой алгоритм ML применить к моей проблеме.

Клиенты должны заполнить оценочную анкету из 50 вопросов. Примеры вопросов: какая у вас работа, предыдущая история работы, сколько вы зарабатываете, был ли вам отказано в кредите и т. Д. c, и конечная цель состоит в том, чтобы решить, следует ли им отказать или нет.

У меня есть около 500 записей для моего алгоритма, и я предварительно обработал мой набор данных и преобразовал входные данные в массив numpy, и мне интересно, какой алгоритм лучше всего использовать? Должен ли я использовать алгоритм классификации или нейронную сеть в тензорном потоке, и если последний, какие слои я должен использовать?

Спасибо

1 Ответ

0 голосов
/ 22 февраля 2020

Как насчет начала с xgboost или random forest? - Так добрая "старая" ОД? Преимущество будет в том, что вы сможете визуализировать дерево решений модели после обучения.

Если вы используете NN в тензорном потоке (или даже проще: керасы с тензорным бэкэндом), вы можете go с MLP (мульти слой перцептрона), поскольку ответы на вопросы имеют фиксированную позицию на входе. Вам не нужно много слоев.

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

Поскольку ваша целевая маркировка - «принять» или «отклонить», двоичный классификатор сделает это (также в подходе машинного обучения). (Вы используете 0 и 1 в качестве меток).

Для NN вам не требуется такая классификация, как много слоев или нейронов. Попробуйте сначала самую маленькую сеть. скажем, 10 нейронов в первом слое, затем 7 нейронов в следующем слое (возможно, даже меньше), а затем 1 выходной нейрон для двоичного решения.

С Keras это будет:

from keras.models import Sequential
from keras.layers import Dense

def create_mlp(n_input = 500): # number of columns of input data 500 here
    model = Sequential()
    model.add(Dense(10, input_dim=n_input, kernel_initializer='normal', activation='relu')) # init = kernel_initializer
    model.add(Dense(7, kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='adam',
                  loss='binary_crossentropy',
                  metrics=['acc'])
    return model

model = create_mlp(500) # this will generate the correct NN compiled.

Ваш фрейм данных (или Numpy входной массив должен иметь в качестве строк выборки, столбцы для каждого ответа для столбца вопроса 1. Ответы, которые вы должны кодировать в числовой форме c. Числа должны быть маленькими - лучше всего от -1 до 1. NN не любят большие числа, поэтому может помочь нормализация по столбцам.)

Вот и все. Я изучил все это в прошлом году. Удачи в учебе. Это будет куча веселья!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...