Pull to refresh

Comments 4

Возможно я ошибаюсь, но мне кажется, что целевая переменная выбрана не лучшим образом. Количество просмотров в сутки быстро затухает, поэтому вы переоцениваете новые объявления. Лучше предсказывать кол-во просмотров за первые n дней (объявления созданные менее чем n дней назад не рассматривать). Если этих данных нет, то можно на основании общего графика затухания вычислять величину "ожидаемое число просмотров за все время". Чуть усложненная версия опираться на срезы в течении нескольких дней наблюдений.
Когда я недавно занимался похожей задачей (тоже объявления) bag of words на полем "title" давал даже лучше результат (возможно текст в описании более сложный и хуже поддаться разбору).
Вы пишите "рассматривать задачу классификации (отсюда и tf-idf)", подскажите почему?
Возможно вы знаете: tf-idf фиттится на тестовой, а не на всей выборке, а что делать с кросс-валидацией? Там же "тестовая" попадает в tf-idf.fit как это влияет? Видимо улучшает качество на кросс-валидации, но влияет ли это на подбор параметров и приминать ли это в расчёт? 
Вы пишите «рассматривать задачу классификации (отсюда и tf-idf)», подскажите почему?

В моей задаче я разбил целевую переменную на пять интервалов, таким образом получил 5 классов документов — очень высокая посещаемость, очень низкая посещаемость и все, что посередине. Я рассуждал так: TFIDF считает насколько данное слово характерно для данного класса документов. Если я не буду разбивать целевую переменную на интервалы, то придется рассматривать задачу регрессии, но тогда с точки зрения tfidf я получу столько классов, сколько принимает уникальных значений мой y. Тогда, множитель TF останется без изменений, а IDF скорее всего будет просто константой, поскольку IDF = log (число документов в классе / (число документов в классе, в которых данное слово встречается + 1) ). Число документов в классе будет почти всегда единицей, из-за того, что в целевой переменной для регрессии почти все значения уникальны, так же и знаменатель (число документов в классе, в которых данное слово встречается + 1) = 2 почти всегда, поэтому IDF ~ log(0.5) и пользы от него никакой.
Возможно вы знаете: tf-idf фиттится на тестовой, а не на всей выборке, а что делать с кросс-валидацией? Там же «тестовая» попадает в tf-idf.fit как это влияет? Видимо улучшает качество на кросс-валидации, но влияет ли это на подбор параметров и приминать ли это в расчёт?

Я следовал рекомендациям sklearn. Допустим я хочу провести кросс-валидацию по 5 разбиениям: на 4/5 частях от всей выборки я обучаюсь, на 1/5 проверяю качество модели, и так 5 раз. tf-idf настраивается только на обучающей выборке (та, которая 4/5), а на тестовой выборке (та, которая 1/5) только применяет преобразование, т.е. тест не участвует в обучении.
Отличная и интересная статья. Спасибо!
В заключении в Вас вселился волонтер и превратил статью про машинное обучение в призыв спасти животных.
Sign up to leave a comment.

Articles

Change theme settings