eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › matlab taki wydajny?
Ilość wypowiedzi w tym wątku: 89

  • 81. Data: 2010-02-05 06:55:43
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 5 Lut, 04:43, Mariusz Marszałkowski <m...@g...com> wrote:

    > W Pytonie też są takie gotowce jak uniwersalna szukaczka minimów?

    Pewnie znajda sie lepsze szukaczki, ale ogolnie do abaw numerycznych
    masz pakiety numpy i scipy.

    pozdrawiam
    bartekltg


  • 82. Data: 2010-02-05 16:54:27
    Temat: Re: matlab taki wydajny?
    Od: Mariusz Marszałkowski <m...@g...com>

    On 5 Lut, 07:55, bartekltg <b...@g...com> wrote:
    > On 5 Lut, 04:43, Mariusz Marszałkowski <m...@g...com> wrote:
    >
    > > W Pytonie też są takie gotowce jak uniwersalna szukaczka minimów?
    >
    > Pewnie znajda sie lepsze szukaczki, ale ogolnie do abaw numerycznych
    > masz  pakiety numpy i scipy.

    To bede musial sie rozejrzec, ile mozna pisac samemu ;)
    Pozdrawiam


  • 83. Data: 2010-02-05 17:17:02
    Temat: Re: matlab taki wydajny?
    Od: Mariusz Marszałkowski <m...@g...com>

    On 5 Lut, 07:53, bartekltg <b...@g...com> wrote:
    > On 3 Lut, 22:19, Mariusz Marszałkowski <m...@g...com> wrote:
    >
    > > liniowe. Domyslam sie ze z tak zdefiniowanym zadaniem nie ma problemu,
    > > ale
    > > po jednym rozwiazaniu trzeba utworzyc dodatkowa kolumne przez poddanie
    > > nieliniowej funkcji kilku innych kolumny (na chybil tafil, albo
    > > systematycznie wszystkie
    > > kombinacjie) i podac najlepsze dopasowanie.
    >
    > Jesli masz na mysli fminsearch, to znajduje lokalne minimum
    > i chyba nie najlepiej radzi sobie ze zbyt duza liczba
    zmiennych.http://en.wikipedia.org/wiki/Nelder%E2%80%
    93Mead_method
    >
    > Jesli dobrze rozumiem, chcesz miec jakis wklad kombinatoryczny.
    Mam parametry wejsciowe x_i i np. jeden parametr wyjsciowy y.
    Nastepnie rozszerzam parametry wejsciowe o jeden dodatkowy
    przez poddanie nieliniowej funkcji kazdej kombinacji funkcja( x_i ,
    x_j ).
    Jesli mam 50 parametrow wejsciowych, to wychodzi 2500 kombinacji.
    WIec trzeba 2500 razy ulozyc uklad rownan normalnych, kazdy
    rozwiazac i podac kombinacje x_i, x_j ktora daje najlepsze
    dopasowanie.
    To co zwraca funkcja( x_i , x_j ) traktujemy jako 51-szy parametr.

    > Tego ta funkcja nie zrobi. Jesli jednak dopuszczasz, aby w
    > rozwiazaniu
    > byly wszytkie, to niepotrzebne beda mialy maly wspolczynnik i tyle
    To też dobra metoda, szczegolnie jesli do glownej przekatnej doda
    sie pewne liczby wieksze od zera.

    > (rozumiem, ze przez 'nieliniowosc' rozumiesz np to, ze wspolrzynnik
    > jest odchyleniem rozkaldu gaussa, a nie, ze do symy wchodzi
    > parametr*funkcja(wartosc kolumny) )
    Raczej parametr * funkcja( x_i , x_j )

    > Miliardy wierszy to gigabajty.
    Niestety to moja zmora. Z reguly brakuje dobrych danych przy
    data minning. Moje dane nie mieszcza sie na 10 nowoczesnych
    dyskach. A moze jakas baza danych ma zaimplementowana
    regresje liniowa dla wielu parametrow? Jakis odpowiednik
    excelowskiego reglinp?

    > Matlab nie musi byc wtedy najlepszym
    Hmmm, dziwne, powinien miec opcje ze macierz lezy na
    dysku w pliku tekstowym albo binarnym. To raczej
    zwykla rzecz ze dane leza na dysku a w pamieci sa
    tylko "zmienne algorytmu".

    Pozdrawiam


  • 84. Data: 2010-02-05 21:58:52
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 5 Lut, 18:17, Mariusz Marszałkowski <m...@g...com> wrote:
    > Mam parametry wejsciowe x_i i np. jeden parametr wyjsciowy y.
    > Nastepnie rozszerzam parametry wejsciowe o jeden dodatkowy
    > przez poddanie nieliniowej funkcji kazdej kombinacji funkcja( x_i ,
    > x_j ).
    > Jesli mam 50 parametrow wejsciowych, to wychodzi 2500 kombinacji.
    > WIec trzeba 2500 razy ulozyc uklad rownan normalnych, kazdy
    > rozwiazac i podac kombinacje x_i, x_j ktora daje najlepsze
    > dopasowanie.
    > To co zwraca funkcja( x_i , x_j ) traktujemy jako 51-szy parametr.

    Nie trzeba za kazdym razem ukladac calego zagadnienia...

    > > Tego ta funkcja nie zrobi. Jesli jednak dopuszczasz, aby w
    > > rozwiazaniu
    > > byly wszytkie, to niepotrzebne beda mialy maly wspolczynnik i tyle
    >
    > To też dobra metoda, szczegolnie jesli do glownej przekatnej doda
    > sie pewne liczby wieksze od zera.

    ?

    > Raczej parametr * funkcja( x_i , x_j )

    Czyli to cały czas liniowe zagadneinie najmnieszych kwadratow.
    Bawienie sie w nieliniowe solvery tylko dodanarzut.

    > > Miliardy wierszy to gigabajty.
    >
    > Niestety to moja zmora. Z reguly brakuje dobrych danych przy
    > data minning. Moje dane nie mieszcza sie na 10 nowoczesnych
    > dyskach. A moze jakas baza danych ma zaimplementowana
    > regresje liniowa dla wielu parametrow? Jakis odpowiednik
    > excelowskiego reglinp?

    To wcale nie jest tak duzo danych jak na zadanie, ktore chesz
    rozwiazac. Przyjrzyj sie dokladnie zagadnieniu. Jesli nie macie
    problemu z tym, ze rozwiazujesz to rownaniem normalnym
    (uwarunkowanie etc) to jedyne co musisz zrobic z danymi
    to policzyc pewna ilosc iloczynow skalarnych.
    1225 <x_i,x_j>, 50 <x_i, y>
    125000< x_i, f(x_j,x_k) > i 2500<y,f(x_i,x_j)>

    Jesli bys chciel dodac wiecej niz tylko jedna,
    'nieliniowa funkcja od tabelek' dojdzie cos rzedu
    3mln elementow(chyba, ze .. dluzsza historia;).

    Wszytko liczysz w jednym przebiegu odczytywania danych,
    nastepnie bawisz sie jedynie z _malymi_ obiektami (51x51)
    X.' * X i X.' * y ( X.' -transponowane X).

    Samo policzenie tych iloczynow jest wiekszym problemem.
    Zajmie to na nowym komputerze cos rzedu wieksze kilka godzin
    na miliard danych:)
    Sumowac tez trzeba sprytnie (albo odpowiednio podwyzszajac
    przecyzje, lepiej sprytnie, nieco to zalezy od danych).

    Dobrym pomyslem jest tez zastanowienie sie, czy iloscny skalarnego
    mniej istotnych par nie mozna przyblizac, szacowan np za pomoca
    znacznie mniejszego podwektora Wtedy i zagadnienie uwzgledniajace
    52 parametry na zwyklym PC.

    Moze potrzebujecie matematyka z delikatnym zamilowaniem do
    numerkow? :-)

    > > Matlab nie musi byc wtedy najlepszym
    >
    > Hmmm, dziwne, powinien miec opcje ze macierz lezy na
    > dysku w pliku tekstowym albo binarnym. To raczej
    > zwykla rzecz ze dane leza na dysku a w pamieci sa
    > tylko "zmienne algorytmu".

    To znacznie zwieksza czas. I chyba nie ma za czestych zastosowan.
    Zobacz, ile czasu zajeloby mnozenie 2 macierzy kwadratowych
    zajmujacych wiekszaosc Twojego ramu. Strzelmy 20000x20000
    (3GB). 1000 razy dluzej niz 2000x2000.
    Z drugiej storny gugiel sugeruje, ze cos wie o mnozeniu macierzy
    na dyskach. Jednak podejrzewam, ze i tak raczej uzywa sie tego do
    macierzy rzadkich (jakies guglowskie pozycjonowanie etc).

    Twoje zagadnienie jest prostrze, programik czyta, mnozy, dodaje, goto
    start;)

    pozdrawiam
    bartekltg


  • 85. Data: 2010-02-06 00:26:24
    Temat: Re: matlab taki wydajny?
    Od: Mariusz Marszałkowski <m...@g...com>

    On 5 Lut, 22:58, bartekltg <b...@g...com> wrote:
    > On 5 Lut, 18:17, Mariusz Marszałkowski <m...@g...com> wrote:
    >
    > > Mam parametry wejsciowe x_i i np. jeden parametr wyjsciowy y.
    > > Nastepnie rozszerzam parametry wejsciowe o jeden dodatkowy
    > > przez poddanie nieliniowej funkcji kazdej kombinacji funkcja( x_i ,
    > > x_j ).
    > > Jesli mam 50 parametrow wejsciowych, to wychodzi 2500 kombinacji.
    > > WIec trzeba 2500 razy ulozyc uklad rownan normalnych, kazdy
    > > rozwiazac i podac kombinacje x_i, x_j ktora daje najlepsze
    > > dopasowanie.
    > > To co zwraca funkcja( x_i , x_j ) traktujemy jako 51-szy parametr.
    >
    > Nie trzeba za kazdym razem ukladac calego zagadnienia...

    Chyba jednak trzeba, ponieważ podczas budowania układu w każdym z
    równań występuje mnożenie przez nowy element funk( x_i , x_j ) ?

    > > To też dobra metoda, szczegolnie jesli do glownej przekatnej doda
    > > sie pewne liczby wieksze od zera.
    >
    > ?
    Mamy wektory doświadczalne których elementy to x_1, x_2, y.
    Normalnie szukamy najlepszego dopasowania funkcją:
    f(x) = a * x_1 + b * x_2 + c

    Czyli minimalizujemy sume ( a * x_1 + b * x_2 + c - y )^2

    Ale możemy też minimalizować trochę inne wyrażenie:
    ( a * x_1 + b * x_2 + c - y )^2 + C1 * a^2 + C2 * b^2 + C3 * c^2

    Jak policzysz teraz pochodne tego wyrażenia po a,b,c;
    przyrównasz do zera, stworzysz układ równań liniowych,
    to wyjdzie że główna przekątna została zwiększona o
    odpowiednio 2*C1,2*C2,2*C3. W ten sposób automatycznie
    dajesz karę za duże wartości parametrów, a wiec parametry
    o mniejszym znaczeniu mają stosunkowo mniejsze wartości.

    > > Raczej parametr * funkcja( x_i , x_j )
    >
    > Czyli to cały czas liniowe zagadneinie najmnieszych kwadratow.
    > Bawienie sie w nieliniowe solvery tylko dodanarzut.
    Tak, to cały czas dopasowanie najmniejszymi kwadratami. Po
    zbadaniu siłowym, po wyczuciu intuicyjnym wybiera się
    funkcje które dzialaja najlepiej i dopiero za drugim razem
    optymalizacja nieliniowa.


    > > > Miliardy wierszy to gigabajty.
    >
    > > Niestety to moja zmora. Z reguly brakuje dobrych danych przy
    > > data minning. Moje dane nie mieszcza sie na 10 nowoczesnych
    > > dyskach. A moze jakas baza danych ma zaimplementowana
    > > regresje liniowa dla wielu parametrow? Jakis odpowiednik
    > > excelowskiego reglinp?
    >
    > To wcale nie jest tak duzo danych jak na zadanie, ktore chesz
    > rozwiazac. Przyjrzyj sie dokladnie zagadnieniu. Jesli nie macie
    > problemu z tym, ze rozwiazujesz to rownaniem normalnym
    > (uwarunkowanie etc)
    Pojawiają się problemy ze złym uwarunkowaniem. Wtedy wywalam
    całe równanie :)

    > Jesli bys chciel dodac wiecej niz tylko jedna,
    > 'nieliniowa funkcja od tabelek' dojdzie cos rzedu
    > 3mln elementow(chyba, ze .. dluzsza historia;).
    Najpierw jedną, później drugą, później trzecią...
    W zaleznosci jaka daje jakie efekty, troche zgadywania,
    w koncu rozrasta sie i na koniec jeszcze metoda nieliniowa.

    > Wszytko liczysz w jednym przebiegu odczytywania danych,
    > nastepnie bawisz sie jedynie z _malymi_ obiektami (51x51)
    > X.' * X i X.' * y   ( X.' -transponowane X).
    >
    > Samo policzenie tych iloczynow jest wiekszym problemem.
    > Zajmie to na nowym komputerze cos rzedu wieksze kilka godzin
    > na miliard danych:)
    Policzenie tego jest proporcjonalne do odczytu danych z dysku.
    Ale czasami mam bardzo dużo zer, wtedy moza skompresowac
    i trzymac wszystko w RAM.

    > Sumowac tez trzeba sprytnie (albo odpowiednio podwyzszajac
    > przecyzje, lepiej sprytnie, nieco to zalezy od danych).
    Mozna robic dwie sumy, jedna mala, a druga duza. Jak ta mala
    urosnie na tyle, alby miala wplyw na duza to mozna polaczyc
    obie. Nie bawilem sie w to nigdy. Ciekawe czy da sie rozwiazac
    stabilniej uklad rownan, jakbym kazdy parametr mial wyrazony
    jako dwie sumy? Hmmm... moze to prosty sposob na zwiekszenie
    stabilnosci?

    > Dobrym pomyslem jest tez zastanowienie sie, czy iloscny skalarnego
    > mniej istotnych par nie mozna przyblizac, szacowan np za pomoca
    > znacznie mniejszego podwektora Wtedy i zagadnienie uwzgledniajace
    > 52 parametry na zwyklym PC.

    > Moze potrzebujecie matematyka z delikatnym zamilowaniem do
    > numerkow? :-)

    Raczej potrzebujemy cudu :)

    > Twoje zagadnienie jest prostrze, programik czyta, mnozy, dodaje, goto
    > start;)
    Tak, wiem :)

    Pozdrawiam


  • 86. Data: 2010-02-06 01:26:01
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 6 Lut, 01:26, Mariusz Marszałkowski <m...@g...com> wrote:

    > Chyba jednak trzeba, ponieważ podczas budowania układu w każdym z
    > równań występuje mnożenie przez nowy element funk( x_i , x_j ) ?

    Podstaw sobie wirtualnie nowa tabelka x_{51+50j+i}=funk( x_i , x_j )
    i nie mysl o niej inaczej.

    > Tak, to cały czas dopasowanie najmniejszymi kwadratami. Po
    > zbadaniu siłowym, po wyczuciu intuicyjnym wybiera się
    > funkcje które dzialaja najlepiej i dopiero za drugim razem
    > optymalizacja nieliniowa.

    Ale ja w tym zagadnieniu dalej nigdzie nie widze miejsca z
    nieliniowoscia.
    Liniowosc w regresji dotyczy sie liniowej zaleznosci od parametrow,
    a nie danych.

    > Policzenie tego jest proporcjonalne do odczytu danych z dysku.
    > Ale czasami mam bardzo dużo zer, wtedy moza skompresowac
    > i trzymac wszystko w RAM.

    Na odczyt 50 zmiennych (jedna linijka danych) wykonujesz
    kilkaset tysiecy operacji zmiennoprzecinkowych.
    Za to pozniej masz luksusowa sytuacje.

    >
    > > Sumowac tez trzeba sprytnie (albo odpowiednio podwyzszajac
    > > przecyzje, lepiej sprytnie, nieco to zalezy od danych).
    >
    > Mozna robic dwie sumy, jedna mala, a druga duza. Jak ta mala
    > urosnie na tyle, alby miala wplyw na duza to mozna polaczyc
    > obie. Nie bawilem sie w to nigdy. Ciekawe czy da sie rozwiazac

    Sposobow jest wiele. Ktory wybrac, zalezy nieco od danych.

    > stabilniej uklad rownan, jakbym kazdy parametr mial wyrazony
    > jako dwie sumy? Hmmm... moze to prosty sposob na zwiekszenie
    > stabilnosci?

    Niewiele to pomoze.


    > Raczej potrzebujemy cudu :)

    Atam. Chyba, ze czegos istotnego o problemie nie dopowiedziales.
    Propozycje podtrzymuje;p

    pozdrawiam
    bartek


  • 87. Data: 2010-02-06 05:50:30
    Temat: Re: matlab taki wydajny?
    Od: Mariusz Marszałkowski <m...@g...com>

    On 6 Lut, 02:26, bartekltg <b...@g...com> wrote:
    > On 6 Lut, 01:26, Mariusz Marszałkowski <m...@g...com> wrote:
    >
    > > Chyba jednak trzeba, ponieważ podczas budowania układu w każdym z
    > > równań występuje mnożenie przez nowy element funk( x_i , x_j ) ?
    >
    > Podstaw sobie wirtualnie nowa tabelka x_{51+50j+i}=funk( x_i , x_j )
    > i nie mysl o niej inaczej.
    No chyba dokładnie tak robię, ale nie widzę cały czas sposobu aby
    nie nie budować tabelki od nowa.

    > Ale ja w tym  zagadnieniu dalej nigdzie nie widze miejsca z
    > nieliniowoscia.
    Funkcje nieliniowe mają parametry. Dobierane są one intuicyjnie/siłowo
    i
    jest rozwiązywane równanie. Jeśli dopasowanie jest dobre, to metodą
    nieliniowa dobierane są "dokładnie".

    > Atam. Chyba, ze czegos istotnego o problemie nie dopowiedziales.
    > Propozycje podtrzymuje;p
    Uproscilem wszystko na potrzby szybkiego listu na forum. Te dane
    to maskakra. Wydaje się że w danych nie ma wiecej zaleznosci niz
    znalezlismy zaraz na poczatku, albo są nadzywczaj skomplikowane.

    Pozdrawiam


  • 88. Data: 2010-02-06 22:22:02
    Temat: Re: matlab taki wydajny?
    Od: Roman Werpachowski <r...@g...com>

    On 4 Lut, 10:40, Adam Przybyla <a...@r...pl> wrote:
    > Roman Werpachowski <r...@g...com> wrote:
    > > On 3 Feb, 17:23, Adam Piotrowski <k...@i...pl> wrote:
    > >> Wiktor S. pisze:
    >
    > >> >> Dlaczego mam sie nie dziwic? Matlab chyba jest cholernie drogi?
    >
    > >> > Mnie zastanawia, jakie sa zastosowania, w których sie faktycznie OPLACA
    > >> > wybulic TAKI majatek na Matlaba... bo jakies chyba sa, skoro program zyje?
    >
    > >> Stosowany jest czesto do obliczen inzynierskich na uczelniach -
    > >> wystarczy podstawowa wiedza na temat programowania a mozna pisac
    > >> zaawansowane programy symulujace rozne zjawiska. Z ciekawszych
    > >> zastosowan Matlaba jak dla mnie to ... sterowanie praca akceleratora
    > >> liniowego
    >
    > > W ogole to przeciez Matlab nie jest taki drogi, zeby jakis bank czy
    > > hedge fund nie mogl kupic po licencji dla kazdego analityka (ktory nie
    > > musi byc programista, zeby napisac calkiem wydajny kod numeryczny).
    >
    > > Druga potezna zaleta Matlaba jest latwa wizualizacja danych, to czesto
    > > wazniejsze niz predkosc mnozenia macierzy.
    >
    >         ... hihi, to ciekawe czemu DoE sponsoruje Pythona aby tyle nie wydawac
    > na matlaba;-)  Z powazaniem
    >                                                                 Adam Przybyla

    Nie wiem, ich się spytaj, na pewno Ci wyjaśnią.

    RW


  • 89. Data: 2010-02-08 21:38:25
    Temat: Re: matlab taki wydajny?
    Od: bartekltg <b...@g...com>

    On 6 Lut, 06:50, Mariusz Marszałkowski <m...@g...com> wrote:
    > On 6 Lut, 02:26, bartekltg <b...@g...com> wrote:> On 6 Lut, 01:26, Mariusz
    Marszałkowski <m...@g...com> wrote:
    >
    > > > Chyba jednak trzeba, ponieważ podczas budowania układu w każdym z
    > > > równań występuje mnożenie przez nowy element funk( x_i , x_j ) ?
    >
    > > Podstaw sobie wirtualnie nowa tabelka x_{51+50j+i}=funk( x_i , x_j )
    > > i nie mysl o niej inaczej.
    >
    > No chyba dokładnie tak robię, ale nie widzę cały czas sposobu aby
    > nie nie budować tabelki od nowa.

    Obiekt A = X.' * X ma rozmiar tylko 51x51 (50kilka). Nie musisz
    powrotnie
    przeliczac wszytkiego, a jedynie elementy na 'brzegu'.
    Pomysl byl taki, zeby policzyc wiecej roznych elementow dla tej
    tabelki w jednym przebiegu po dysku, a dopioero pozniej ukladac z
    nich
    A= X.' * X i X.' * y


    > Funkcje nieliniowe mają parametry. Dobierane są one intuicyjnie/siłowo
    > i
    > jest rozwiązywane równanie. Jeśli dopasowanie jest dobre, to metodą
    > nieliniowa dobierane są "dokładnie".

    Pamietaj o sztuczkach z pracowni fizycznej. Czesc 'nieliniowosci'
    da sie wyrzucic odpowiednimi sztuczkami.

    > Uproscilem wszystko na potrzby szybkiego listu na forum. Te dane
    > to maskakra. Wydaje się że w danych nie ma wiecej zaleznosci niz
    > znalezlismy zaraz na poczatku, albo są nadzywczaj skomplikowane.


    Masz ogrom danych a zaleznosci nie tak wiele. Bardzo prawdopobne,
    ze jesli wezmiesz tylko czesc danych dopasowanie bedzie tez dobre.
    Wersja naiwna to losowo wybrana pewna ilosc(nadal duza) danych.
    W wersji zaawansowanej mozesz pogoglac za ekspanderami.

    Na podzbiorze dobierasz dane, poznniej liniowo(zaburzasz liniowo
    nieliniowe czlony) sprawdzasz dopasowanie na calych danych.
    Jesli sie wiele nie zmienilo, wynik jest dobry.

    pzodrawiam
    bartekltg


strony : 1 ... 8 . [ 9 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: