Magamról

Saját fotó
Főiskolai, majd egyetemi diplomamunkáimtól kezdve világ életemben, adatok, adatbázisok, adattárházak (leginkább Oracle) környékén mozogtam. Mostanság adattárházasként, adatbányászként élem napjaimat.

2013. november 24., vasárnap

Breaking News: Haskel Financial Data Modeling and Predictive Analytics

.
Haskel Financial Data Modeling and Predictive Analytics

Friss meleg nyomdaszagú könyv:) Csak 165 oldal és így is annyira kemény a témája, hogy csak hírt vagyok képes adni róla, kutyafuttában, egyéb teendők miatt.

Mennyi, de mennyi rossz érzésem volt a funkcionális nyelvek irányába, minden erényük elismerése mellet, mit vitatkoztam az ügyben, árral szembemenve :)

Az ellenérzéseim perdöntően abból fakadtak, hogy
* Ki fogja ezeket megtanulni (na és melyiket: Scala, Clojure, Erlang etc.)?
* Na pláne ki fog módosítani, egy korábbi fejlesztést?
* Mennyire átjárhatók egy C/PASCAL analógiában?
* Mennyire zavar be az OO-paradigma támogatása?
* Mennyire elég, ami belőlük a Pythonban van implementálva, limitáltan?
* Mennyi hozzáadott érték van, effektíve pros-cons alapon számbavehető módon?
* Mennyiben intellektuális onanizálás az egész?
* Mennyiben l'art pour l'art -> valami mesterséges absztrakt szépség ideálért?
* Mennyiben hype?

Ami a véleményemmel szemben zavart_
* A párhuzamos feldolgozás látványos támogatása kezdettől fogval nyugtalanító volt számomra :)
* Tömörség,
* Lambda-kalkulus tömör ám kifejező ereje 
* A hírek szerint, jobban működő programok írhatók, értsd valószínűbben csinálják azt, amire írták
* Ehhez jött a MapReduce paradigmában betöltött életerős szerepük.* És most már a prediktív analitika ajtaján is dörömbölnek a funkcionális nyelvek.
* Alkalmazás is van már láttam Clojure-wrappert java-s data mining libraryhez.
* Könyv is jelenik meg még ha első körben csak 165 oldalban

Érdekesség: a 165 oldalba még install-folyamat, nyelvi bevezető és text-feldolgozás is belefért.

Az első "igazi" topik,  a Grubb's test outlier analízishez.

Igazándiból a Kálmán-filter-t lett volna érdekes kiemelni, mert az jóval közismertebb, de kedvezzünk az egyszerűségi elvnek. :)

Bemásolom ide alább a vontkozó kódot, elmékedésre, és én elhallgatok. ;)


module Grubbs (
      grubbs
    ) where

import qualified Data.Vector.Unboxed as U
import Statistics.Sample

grubbs :: [Double] -> Maybe Double
grubbs xs           
    | numOfOutliers > 0 = Just $ fst $ U.maximumBy cmpByG outliers
    | otherwise         = Nothing
    where   n                       = fromIntegral $ length xs
            gCritical               = (n-1)/(sqrt n)
            v                       = U.fromList xs
            (m,s)                   = meanVarianceUnb v
            stddev                  = sqrt s
            getGtuple   x           = (x, (abs (x - m))/stddev)
            isOutlier (_, g)        = g > gCritical
            outliers                = U.filter isOutlier $ U.map getGtuple v
            numOfOutliers           = U.length outliers
            cmpByG (_, a) (_, b)    = compare a b

Nincsenek megjegyzések:

Megjegyzés küldése