Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > найти зависимость в данных


Автор: mrgloom 19.11.2012, 09:45
Допустим у нас есть наблюдение 1 и наблюдение 2 и мы думаем, что эти два наблюдения связаны(или похожи), но мы не знаем как, т.е. не можем сформировать чёткий математический критерий.
Мы можем выделить из наблюдения вектор его характеристик(на самом деле мы незнаем какие характеристики нужно выделять поэтому как предполагается мы берем довольно много всего лишнего, т.е. это не шум, а просто скорее всего лишние данные).
Таких пар у нас есть много штук и мы хотим выделить из этого какой то закон- метрику, по которой мы могли бы потом  найти пару для нового наблюдения, т.е. потом у нас есть N наблюдений и мы для каждого хотим найти для него ближайшее по этой обученной метрике.

как это можно сделать?

Автор: W4FhLF 19.11.2012, 19:15
(Nonlinear|Multivariate) Regression Analysis

Автор: Pavia 19.11.2012, 19:57
Хи*Хи?

Автор: IBS 20.11.2012, 00:01
Может ответ покажется банальным, но нейронные сети придуманы для этого )

Автор: mrgloom 20.11.2012, 14:07
Цитата

(Nonlinear|Multivariate) Regression Analysis 

по точной формулировке не удалось найти, скажите словами для каких задач используется?

Цитата

 Хи*Хи? 

это что перемножение матриц?

Цитата

Может ответ покажется банальным, но нейронные сети придуманы для этого ) 

ну и как вы тут примените нейросети?



вот нашел еще http://ai.stanford.edu/~ang/papers/nips02-metric.pdf во всяком случае по abstract похоже на то что нужно.
только мне не кластеризовать нужно, а по парам-примерам найти для каждого элемента в наборе точек ближайшие k соседей. 
просто использовать knnsearch с какой либо обычной метрикой не слишком хорошее решение, т.е. хочется чтобы пользователь сам задал примеры похожести и уже на основе их был выполнен поиск.

Автор: W4FhLF 20.11.2012, 14:19
Цитата(mrgloom @  20.11.2012,  14:07 Найти цитируемый пост)
по точной формулировке не удалось найти, скажите словами для каких задач используется?


По регрессионному анализу ничего не удалось найти? С трудом верится. (Nonlinear|Multivariate) я написал как опциональные варианты, т.е. когда линейная зависимость не подходит можно делать polynomial regression (т.е. нелинейная), если переменных много, тогда это multivariate (т.е. многомерная).

Позволю себе комментарий.
По многим темам заметил у вас нет ясности мысли. Вопросам, которые вы задаёте, явно не хватает понимания. Отсюда какие-то странные формулировки и люди вам помочь в итоге не могут. Мне кажется вы метаетесь в своих задачах, сами не зная что применить, пытаясь поверхностно попробовать много методов, но не вникая в них. Попытайтесь найти время и прочесть книгу по основам и научиться формулировать свои задачи чётко, возможно с использованием формул. Короче, без знания теории далеко не уедете. 

Автор: mrgloom 22.11.2012, 09:35
Как раз удалось найти много)
я говорил про какую либо точную формулировку или пример применения, сама регрессия вроде как довольно широкое понятие, а я с ней еще не работал.


ну похоже то о чём я говорил называется Distance Metric Learning
Цитата

K Nearest Neighbor (KNN), heavily
rely on the distance metric for the input data patterns. Distance Metric learning
is to learn a distance metric for the input space of data from a given collection
of pair of similar/dissimilar points that preserves the distance relation among the
training data.


http://cui.unige.ch/AI-group/teaching/dmc/09-10/cours/dm16-ml.pdf
вот кстати там на слайде 10 еще используют растояние махаланобиса и матрицу ковариации (ну это как пример вариант)

http://www.cs.cmu.edu/~liuy/distlearn.htm

Автор: IBS 22.11.2012, 15:58
Цитата(mrgloom @  20.11.2012,  14:07 Найти цитируемый пост)
Может ответ покажется банальным, но нейронные сети придуманы для этого ) 

ну и как вы тут примените нейросети?


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

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

Автор: IBS 22.11.2012, 17:52
Цитата(mrgloom @  20.11.2012,  14:07 Найти цитируемый пост)
Хи*Хи? 

это что перемножение матриц?

http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D1%81%D0%BE%D0%B3%D0%BB%D0%B0%D1%81%D0%B8%D1%8F_%D0%9F%D0%B8%D1%80%D1%81%D0%BE%D0%BD%D0%B0
Но, как мне кажется, он здесь не применим  

Автор: mrgloom 23.11.2012, 12:33
Цитата

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

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


проблема в том, что я не знаю насколько похожи пары(т.е. не имею численного представления похожести), я просто имею пары.
а мне надо на выходе получить k ближайших соседей или картинку типа таких 
http://scikit-learn.org/0.10/auto_examples/manifold/plot_lle_digits.html
т.е. по сути чтобы данные, если они действительно различаются были максимально разделены при проекции на 2д.

вот если сделать PCA на 2 измерения, то скорее всего для реальных данных получим что то неадекватное(для сравнения PCA и ISOMAP по ссылке выше например).

только тут еще возникает вопрос, как потом проверять адекватность алгоритма.
в случае многих классов хотя бы можно было посмотреть визуально хорошо ли разделяются классы, в вот в случае одного класса? (возможно чем больше дисперсия-разброс точек на 2д?)

Автор: mrgloom 1.2.2013, 15:14
опять вернулся к этой теме.

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

Допустим есть N выборок, в каждой выборке по k>=2 сэмплов(кол-во сэмплов в выборке может различаться), а каждый сэмпл это вектор длиною L(кстати интересно еще если и вектора будут разной длины) и мы должны найти такое нелинейное подпространство чтобы после проекции туда наших данных получилось (допустим по евклидовой метрике) что расстояние между сэмплами в выборке минимально, а расстояние между разными выборками максимально.

Автор: W4FhLF 1.2.2013, 20:46
http://en.wikipedia.org/wiki/Support_vector_machine

Автор: mrgloom 4.2.2013, 09:29
вы имеете ввиду представить каждую выборку как класс? т.е. использовать Multiclass SVM.

но тут проблема в том, что мне надо не классифицировать, а получить новое подпространство, чтобы находить расстояние от объекта до класса по евклидовой метрике.


вроде бы это тоже в тему
http://en.wikipedia.org/wiki/Linear_discriminant_analysis

Автор: mrgloom 4.2.2013, 10:14
LDA оказалось тем самым критерием который я навелосипедил тут
Цитата

find a projection such that, in the projected space, the ratio of interclass
variance to intra-class variance is maximized.

но тут http://www.cs.nyu.edu/~yann/talks/lecun-20070914-ipam-1.pdf пишут что работает он почему то плохо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)