eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingno i co z tymi algorytmami genetycznymi?Re: no i co z tymi algorytmami genetycznymi?
  • Data: 2009-10-23 11:05:27
    Temat: Re: no i co z tymi algorytmami genetycznymi?
    Od: "Filip Sielimowicz" <s...@t...tez.wp.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik "Mariusz Marszałkowski" <m...@g...com> napisał w wiadomości
    news:1817f1e4-113c-43f2-b936-8fecc6c6991e@p23g2000vb
    l.googlegroups.com...

    >Coś niezwykłego jest w Ewolucji, jeśli naprawdę to ona poradziła
    >sobie
    >ze skonstruowaniem oka, mózgu, itd. Wydaje się nieprawdopodobne
    >aby ewolucja opierała się na czymś tak prostym jak krzyżowanie i
    >mutacja.
    Trochę EOT, ale ... w jednym aspekcie natura ma przewagę nad komputerami:
    może dość swobodnie wykorzystywać siłę 'komputera molekularnego'.
    Kod genetyczny składa się z dwóch zestawów genów, do tego istnieje
    zjawisko duplikacji genów itp. Mutacja jednego z genów nie powoduje
    ucieczki poprzedniej wartości. Można by w przybliżeniu powiedzieć, że
    w każdej pozycji, każde lokum w genotypie może przyjmować
    RÓWNOCZEŚNIE kilka wartości. Trochę to też przypomina
    mechanikę kwantową ;). W dużym przybliżeniu mówiąc, natura liczy
    funkcję oceny na fenotypie jednocześnie dla bardzo wielu różnych
    kombinacji. U nas gen ma albo wartość A albo B i jeśli
    chcielibyśmy zasymulować naturę wprowadzajac dwa zestawy genów,
    musielibyśmy liczyć funkcję oceny wielokrotnie, dla różnych kombinacji
    genów dobieranych raz z jednego a raz z drugiego chromosomu. Przy
    długich genotypach złożoność obliczeniowa rośnie koszmarnie ...
    Natura zaś się tym nie martwi: wrzuca produkcję białka A, wrzuca
    równolegle produkcję białka B, a funkcją oceny zajmuje się 'komputer
    molekularny' - sprawdzi, jak oba te białka mają się do wszystkich innych
    białek, które są produkowane równolegle w otoczeniu, czy mają na siebie
    jakiś wpływ, czy nie. Mutując A w C nie traci A ;) Tak w dużym
    przybliżeniu ;)


    >Właśnie tego wszystkiego o funkcji chcę się dowiedzieć od algorytmu
    >który zbuduje klasyfikator. Chcę żeby klasyfikator sam wyznaczył
    >miarę podobieństwa i podobnym rekordom przypisał te same klasy.
    Ok, jasna sprawa.

    >Hmmm... może zbudować wiele drzew decyzyjne metodą losowo/zachłanną,
    >następnie osobniki zainicjować węzłami z tych drzew i odpalić algorytm
    >genetyczny... nie wiem czy to ma jakikolwiek sens.
    Teraz się zastanawiam, jak Ty to zrobiłeś ;)

    Osobnikiem-fenotypem u Ciebie jest klasyfikator. Chromosomem
    jest liniowy zestaw cech, opisujący jednoznacznie klasyfikator. Np.
    lista reguł. Jak ty to właściwie robiłeś ? W jaki sposób upakowałeś
    drzewo decyzyjne w chromosom i w jaki sposób robisz krzyżowanie ?
    To jest sprawa kluczowa.

    >Problem jest kombinatoryczny z cechami statystycznymi. Czasami
    >różnica jednego bitu powoduje że rekordy powinny przynależeć do
    >innych klas. A czasami kombinacja kilku bitów często się powtarza
    >w jednej klasie. Właśnie chciałbym badać funkcję F przy pomocy
    >klasyfikatora.
    Mówisz 'bitu'. Czy elementami rekordów/macierzy są pojedyncze bity ?


    >> każdym razem jakiś losowy zestaw rekordów ze zbioru, np. 10-100
    >> (losową próbkę, im więcej kolumn, tym większą), dla każdego
    >> z nich liczysz F i funkcją oceny jest albo max z tych wyników
    >> cząstkowych, albo suma. Pokombinowałbym z maxem.
    >Wydaje się ciekawe, na pewno znacznie by przyspieszyło
    >obliczanie funkcji przystosowania.

    Daj info, jak Ty skonstruowałeś chromosom i krzyżowanie, tymczasem
    ja tu coś wyeksponuję na 'dalszy ciąg':
    Napisałeś wcześniej:

    3) Uwzględnij wszystkie kombinacje liści: K^(N+1)=KxK, razem
    VxCxRxKxK operacji

    3) Wybierz maksymalną sumę sum częściowych dla kombinacji
    klas (liści), mamy Cx(RxK+VxLg(V)+VxK) operacji

    Co to znaczy 'kombinacji liści' ?
    W operacji krzyżowania dwóch drzew decyzyjnych widzę tu
    największe pole do popisu - np. przez takie zdefiniowanie krzyżowania,
    by modyfikowało decyzje nadając im różne priorytety (poprzez przestawianie
    węzłów decyzyjnych w górę/w dół drzewa i mieszania ich z decyzjami
    z drugiego drzewa).
    Reguły masz postaci
    "Upraszczając, warunki w węzłach drzewa ograniczmy do M_ij <= C_j,
    gdzie C_j jest jedną z wartości kolumny j."
    Nie bardzo kumam, co oznacza tu owe C_j. To wartość wylosowana ze
    wszystkich rekordów ? Rozumiem, że jest to po prostu jakiś mniej lub
    bardziej przypadkowo wygenerowany współczynnik ?
    Czy w twoim wypadku z jednym węzłem, chromosom wygląda
    po prostu jak czwórka (P, I, K1, K2) - gdzie P to odpowiednik powyższego
    C_j (próg), I to numer branego pod uwagę elementu z rekordu a K1 i K2
    to klasy (liście) ?
    Mam tylko wątpliwości co do tego I 9czy je masz) - nie wiem dokładnie,
    jak to drzewo decyzyjne wybiera u Ciebie jedną z wartości (kolumnę)
    w wierszu.

    W każdym bądź razie ja bym szedł w kierunku takim, że drzewo zapisuję
    w postaci chromosomu jako zbiór par (P1,I1), (P2,I2), a na końcu liście
    K1, K2, ... Krzyżowanie i mutację bym zdefiniował jako wymianę i przesuwanie
    w ramach chromosomu cegiełek (par) (P,I) z tym, że bym uważał na to, by
    razem z wymianą między chromosomami reguł na ostatnim poziomie
    wymieniać też liście (dał bym zasadę 'liście należą do ostatniej reguły').
    Potem bym się zastanowił nad mutacjami związanymi z modyfikacją
    samych P i K. W przypadku P mamy w przybliżeniu liczby rzeczywiste, w
    przypadku
    K mamy jakiś zbiór klas, czyli liczby całkowite. Więc zadanie jest o tyle
    'niebanalne', że mamy do czynienia po pierwsze z drzewem, po drugie
    mamy niejednorodne geny - inaczej trzeba postępować z progami, inaczej
    z liściami(klasami) - inne operatory mutacji itp.

    W każdym bądź razie, najpierw bym mutacje całkowicie porzucił i skupił
    się na krzyżowaniu, z generowaniem dużej populacji początkowej.
    Powinieneś dzięki temu uzyskać taki efekt, gdzie AG będzie budował
    ciągi decyzyjne i kombinował zarówno z wartościami progów, jak i z
    kolejnością decyzji (które podejmować wpierw), oraz ze znalezieniem
    najistotniejszych dla klasyfikacji kolumn - czyli będzie badał 'co jest
    sensowne i ważne z punktu widzenia F'.

    Jak będzie ta podstawa, to widzę mnóstwo możliwości dalszych
    modyfikacji operatorów - w zależności od oceny ich sensowności.
    Może warto wymieniać progi między regułami - będzie to miało
    sens, jeśli funkcja F ma skłonności ku takim równościom
    F((A, B ..), K) = F( (B, A...), K) - a być może jest to w ogóle
    bez sensu, bo A i B (różne kolumny) są zupełnie różnych typów.
    Tego nie wiem. Na razie zakładam, że kolumny są raczej różnych
    typów, wartości nie można między nimi wymieniać.

    Jak coś niejasne - pytaj ;)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: