« Отговор #6 -: Mar 13, 2015, 16:07 »
Значи не съм никакъв DWH експерт но от общат култура долу горе представата ми за стуктурите и таблиците на DWH система ти дават възможност да правиш различни изгледи върху събраните данни - примерно да групираш бързо по нещо и т.н.
Machine Learning обикновено работи върху някакъв плосък dataset. Моделът който ще обучаваш има някакви параметри и трябва да обходиш целия dataset за да ги fit-неш. Така че нямаш никаква полза този dataset да го държиш в каквато и да е база данни, още по-малко пък graph. Този dataset е само един изглед от всички възможни, които DWH ти дава възможност да правиш. Запази този изглед във един CSV файл или в какъвто формат machine learning tool-a или MATLAB или каквото там ползваш за статистически модел приема. И от това по-бързо няма, защото така или иначе трябва да го обходиш целия - всички datapoints/редове, А всеки ред ще съдържа feature-ите които са ти нужни за обучение на модел, бил той linear regression или невронна мрежа или квото там си си избрал или измислил сам. Генерираш ли си подходящия dataset, бази данни не са ти нужни.
Добре има по-бързо и от това, и това е ако моделът ти позволява да го пралелизираш с някъв map-reduce примерно, тогава hadoop може би би ти свършил работа, но отнова самите данни от dataset-a няма никакъв смисъл да седят в каквато и да е база данни. Google примерно (вероятно) ползва map-reduce за да обходи индексите си - примерно търсиш "linux", това се праща на всички сървъри и всеки от тях дава резултат спрямо документите които съхранява/индексира локално. Всички тези резултати накрая се reduce-ват централно и най-релевантните ти се връщат обратно.
Но обратно на темата - DWH свършва в момента, в който ти си решил какъв ще е статистическият модел, какви ще са feature-ите които те интересуват и какъв е обхватът на данните. Тук DWH ти дава възможност да направиш изглед на тази данни (демек таблица) да ги извлечеш и да си ги запишеш в какъвто си искаш формат - сигурно може да ги налееш и в граф база данни ма няма никакъв смисъл защото machine learning модела ти така или иначе ще ги разглежда като списък от вектори а за тази цел и CSV ти е пре-достатъчен. При дистрибутирания вариант това CSV ще го разбиеш на толкова на брой файла колкото node-ове имаш в клъстера, а при не-дистрибутирания вариант dataset-a ти ще е в един файл. Но и в двата случая тези файлове ще се обходят последователно, ред по ред, колона по колона - никакъв смисъл от база данни.
Примерно DWH може да ти съдържа информация за това колко сняг е валяло в българия:
* по градове, (number) (cm)
* по дни, (number) (cm)
* по часове, (number) (cm)
* дали по време на валежа Бойко Борисов е давал интервю (true/false)
* колко водка към момента е изпил Волен Сидеров (number) (литри)
DWH просто ти дава възможност и удобството да правиш каквито заявки намериш за необходими от всички тези събрани данни, които да речем са събрани от 3 различни системи - метереолозите към БАН, някъв медиен мониторинг и разходите на ФСБ за руска водка предоставяна на чужди агенти.
До тук свършва ролята на DWH - да събере тези данни е подходяща структура и ти да решиш каква точно разбивка и кои точно стойности те интересуват.
Примерно решаваш че ще правиш модел който търси корелация между медиините изяви на ББ и колко общо сняг е паднал в цялата страна. Ами тогава dataset-a ти ще е нещо такова:
#date_time, snow_summed_all_cities_in_cm, is_borisov_on_air
20150101-0935, 43, true
20150101-1005, 3, false
20150101-1035, 73, true
правиш си заявката, DWH е така добър да ти даде данните и не го интересува PDF ли ще правиш с тях, в ексел ли ще ги записваш. графики ли ще чертаеш или machine learning.
Леле оср*х се да пиша, айде стига толкова глупости от мен.