-
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 ;)
Następne wpisy z tego wątku
- 23.10.09 16:27 Mariusz Marszałkowski
- 26.10.09 11:23 Filip Sielimowicz
- 28.10.09 11:06 Filip Sielimowicz
- 28.10.09 12:18 Mariusz Marszałkowski
- 08.11.09 13:28 Mariusz Marszałkowski
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi
- 2024-12-20 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-20 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-20 Rzeszów => International Freight Forwarder <=
- 2024-12-20 Katowice => Key Account Manager (ERP) <=
- 2024-12-20 Ekstradycja
- 2024-12-20 Mikroskop 3D
- 2024-12-20 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-20 Warszawa => Analityk w dziale Trade Development (doświadczenie z Powe