Повышение точности модели ML - Выбор функции / модели или параметров - PullRequest
0 голосов
/ 29 января 2019

Я настраиваю модель машинного обучения, которая будет прогнозировать, какие продукты будут иметь наибольшую конверсию (Y) на основе цены, дня недели, размера клиента, атрибутов продукта и насколько они заранеепродается (X).Тем не менее, я не могу получить высокое значение r-квадрата при сравнении моих значений y_prediction и y_test.

Я довольно много определил, какие функции продукта должны быть включены, пробуя оба подхода:начиная со ВСЕХ возможных функций и снимая их обратно, начиная с 1 функции и путем проб и ошибок, добавляя по одной за раз обратно. Я пробовал перекрестную проверку, я пытался ограничить набор данных, но никогда не получал r2значение больше 0,27.

new_df = датафрейм со всеми функциями, с некоторой предварительной обработкой, но без преобразования масштабирования объекта = 'Y' -> должно иметь значения от 0 до 261. Более высокие числа означают более высокие продажи

from sklearn.preprocessing import MinMaxScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

X = new_df.drop(['conversion'],axis=1)
Y = new_df['conversion']
enc = LabelEncoder()
X['REGION'] = enc.fit_transform(X['REGION'] -> an example of pre-processing
X_scaled = scaler.fit_transform(X[['day_type','days_remaining','Size']])

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, random_state=4)
clf = LinearRegression(normalize=True)
clf.fit(X_train, y_train)
y_pred = (clf.predict(X_test))
print(r2_score(y_test, y_pred))

На что я надеюсь, так это некоторые рекомендации по поводу следующего

1) Что-то не так с моим кодом?Это должно быть довольно просто на этом уровне, но если я получаю такие низкие оценки, я не решаюсь связываться с параметрами (для меня это все равно, что чистить машину с разбитым двигателем)

2)есть лучший классификатор, чем LinearRegression.Я играл со многими, но, честно говоря, я не знаю, какой лучше

3) Поскольку многие значения конверсии равны нулю (нет продаж), я должен ограничить new_df только теми строками, где конверсия> 0?Сначала я хотел включить их, потому что это допустимые экземпляры данных, но результаты могут быть слишком низкими.Я НЕ пытаюсь предсказать их конверсию, а скорее пытаюсь понять, предсказывает ли он, у каких продуктов будет самая высокая конверсия из набора.Чтобы быть ясным, существует 80 случаев отсутствия продаж для каждого экземпляра продаж.

4) Является ли r-квадрат лучшим способом измерения успеха или следует использовать другую меру?

...