2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему
 
 Машинное обучение: Придумать модель на конкретном датасете
Сообщение18.03.2016, 04:06 


18/03/16
1
Всем привет!

В общем, мне скоро защищать диплом. Нужно уметь определять пол и возраст пользователей на основе музыки, которую они слушают. Требуют "научной новизны" (с).

В общем, у меня имеется выборка пользователей (96000+ штук) с сайта Last.fm. У каждого пользователя указан пол и число полных лет. У каждого пользователя имеется топ-50 его самых прослушиваемых исполнителей.

Идея только одна - рассмотреть пользователей как документы, а их исполнителей, как слова в этом документе. Затем описать документы с помощью TF-IDF(https://ru.wikipedia.org/wiki/TF-IDF) модели или же Log-entropy. Получается огромная сильно-разреженная матрица слово-документ. Можно понизить её размерность, используя методы тематического моделирования, например LDA (https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation). В результате получается матрица тема-документ (где число тем мы произвольно выбираем). Здесь хорошо заходит метод под названием LSI (https://en.wikipedia.org/wiki/Latent_semantic_indexing). Затем применяем к получившемуся классификатор или регрессор и меряем точность, например SVM (https://en.wikipedia.org/wiki/Support_vector_machine). Но здесь нету никакой "Научной новизны"

Одна из идей была следующей - построить свою тематическую модель на основе подхода ARTM (http://www.machinelearning.ru/wiki/index.php?title=ARTM). В кратце, это подход к тому как модифицировать метод PLSA (https://en.wikipedia.org/wiki/Probabilistic_latent_semantic_analysis) для улучшения результатов на конкретной задаче. Но здесь есть проблема, в моём случае сам PLSA даёт очень плохие результаты. Кроме того, так как конечная цель - это не выявление тем, а запуск классификатора на документах, представленных в виде вектора тем, то проверка качества получившейся модели сильно затруднена. В общем, данный вариант отпадает начисто.

Есть идея сделать некоторую модификацию LSI, которая бы улучшала результат по сравнению с обычным методом, но неясно, что улучшать.

Может быть у кого-нибудь есть какие-нибудь идеи, что можно придумать ещё, использую имеющиеся данные?

P.S. Я понимаю, что перебором всего чего только возможно, подкруткой различных параметров алгоритмов я, скорее всего, добьюсь наилучших результатов, чем, если выдумаю что-то новое. Но, к сожалению, требуется именно второе.

 Профиль  
                  
 
 Re: Машинное обучение: Придумать модель на конкретном датасете
Сообщение18.03.2016, 09:05 


12/08/14
221
Я бы так попробовал.
Предположим, что
1. не знаем никаких методов
2. зависимости есть и четко выражены
Для выполнения п.2 можно сгенерировать выборку.
Задаем себе вопросы
1. Как будет выглядеть такой набор в пространстве признаков?
2. Как идентифицировать и формализовать это?
3. Как можно преобразовать оси признаков, чтобы более четко идентифицировать ситуации?
4. Что вообще можно называть зависимостями и как это отражается в пространстве признаков?

 Профиль  
                  
 
 Re: Машинное обучение: Придумать модель на конкретном датасете
Сообщение11.04.2016, 11:31 


03/06/15
7
Можно попробовать сделать такую штуку:

1) сначала решить задачу в лоб, каким-нибудь известным сочетанием нейросетей. Например, подойти к этой задаче, как к классификатору картинок: сначала несколько слоев свертки (чтоб вытащить характерные фичи из списка исполнителей), а потом полносвязная сеть (чтоб аппроксимировать соотвествие между этими фичами и возрастом/полом). Обучить сетку по всему датасету, и записать на листочек достигнутую точность на тестовой выборке.

2) в качестве улучшения приделать сетке возможность самой выбирать следующий обучающий пример во время обучения - таким образом, чтобы максимизировать скорость обучения. То есть план такой: берем старую сетку, из первого пункта (назовем ее "классификатор"). К ней добавляем сетку которая умеет делать запросы вида : "найти следующую не рассмотренную девушку 24 лет" или "найти следующего не рассмотренного юзера, который слушает tom odell" (назовем эту сеть "менеджер данных"). Задача "классификатора" - собственно, пытаться правильно угадывать возраст и пол по списку исполнителей. А задача манагера - подбирать для классификатора такие данные, чтоб скорость сходимости у классфификатора была максимальной. То есть пусть ошибка менеджера рассчитывается на основе производной от ошибки классификатора. Если на текущих семплах сходимость медленная, то наказываем манагера, а если она ускореятся - то поощряем. Я не хочу сказать, что это улучшение заработает прямо из ящика. Даже хуже - скорей всего, придется изрядно поэкспериментировать с конкретной формой ошибки для "менеджера", что бы он не заставлял "классификатора" переобучаться.

Но если бы такое получилось, то искомая научная новизна - это более быстрая сходимость обучения - то есть, типа, меньше предъявлений обучающих примеров понадобилось, а результат тот же. Не факт, конечно, что это получится - потому что с научными гипотезами все довольно не предсказуемо бывает :) Но вобще сам этот подход, чтоб несколько подсетей брать и кооперировать на достижение общей цели - он встречается:
https://habrahabr.ru/post/275429/
https://habrahabr.ru/post/279071/

 Профиль  
                  
 
 Re: Машинное обучение: Придумать модель на конкретном датасете
Сообщение16.04.2016, 02:28 
Аватара пользователя


07/02/12
1079
Питер
Можно попробовать значительно понизить размерность на половину порядков, быстро, за n\cdot$\ln(n)$ (в вашем случае должно неплохо работать), а затем применить мозг и выбрать правильную статистическую модель. В лоб нейросетями я бы эту задачу не стал атаковать.

 Профиль  
                  
 
 Re: Машинное обучение: Придумать модель на конкретном датасете
Сообщение07.06.2016, 21:32 


11/04/08
607
Марс

(Оффтоп)

Типа в 15 лет был металлистом, а в 20 стал готом, в 25 - эмо, в 30 - панком, в 35 - рокером, ...
Интерсно будет узнать результаты аппроксимаций.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: maxal, Karan, Toucan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group