1. T.C.
ÇANAKKALE ONSEKİZ MART ÜNİVERSİTESİ
MÜHENDİSLİK-MİMARLIK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
SOM ALGORİTMASI İLE FİLM UYGULAMASI
Esranur ÖĞRETMEN
Proje Danışmanı
Yard.Doç.Dr Mahmut SİNECEN
2. Yapay Sinir Ağı Nedir?
Yapay sinir ağı insan beyninden esinlenerek geliştirilmiş, ağırlıklı bağlantılar
aracılığıyla birbirine bağlanan işlem elemanlarından oluşan paralel bilgi işleme yapılarıdır.
1980’li yılların ortalarından itibaren bilim adamları yapay sinir ağlarıyla ilgilenmeye
başlamışlardır. White 1989 yılında istatistiksel yöntemlerindeki matematiksel modeller ile
yapay sinir ağlarında kullanılan öğrenme algoritmalarının birbirlerine benzediğini
ispatlamıştır. Sarle 1994’te yaptığı araştırmalarda da bu iki alanda uygunluk olduğunu
belirtmiştir. Gizli katmansız ileri beslemeli ağlar lineer modellere, bir gizli katmanlı ileri
beslemeli ağlar lineer olmayan regresyon modellerine, Hebbian öğrenme temel bileşenler
analizine ve Kohonen SOM ağları kümeleme analizine karşılık gelmektedir. İstatistiksel
yöntemlerin çoğunda verilerle ilgili dağılım varsayımı ve değişkenlerle ilgili varyasyon ve
korelasyon varsayımları vardır.[1](arastimax1829pp47 68)
YSA’nın Elemanları
Girdiler: Yapay sinir ağlarına dış dünyada veya diğer bir hücreden gelen bilgilerdir.
Ağırlıklar: Hücreler arasında bağlantıların sayısal değerini ifade etmektedir. Bir hücreye
gelen bilginin değerini ve hücre üzerindeki etkisini gösterir.
Toplama Fonksiyonu:Hücreye gelen girdilerin net girdi değerini hesaplar.
Aktivasyon Fonksiyonu: Hücreye gelen net girdiyi kullanarak çıktı değerini hesaplanmasını
sağlar.
Çıktılar: Aktivasyon fonksiyonu ile elde edilen değerdir. Üretilen çıktı dış dünya veya başka
bir hücreye girdi olarak gönderilebilir.
3. YSA’nın Yapısı
Giriş Katmanı, Ara(gizli) Katmanı ve Çıkış Katmanı olmak üzere üçe ayırabiliriz.
Giriş Katmanı: Dış dünyadan yapay sinir ağına gelen girdilerin bulunduğu katmandır. Girdi
sayısı kadar hücre bulunmakta, girdilerin üzerinde işlem yapılmadan gizli katmana
iletilmektedir.
Ara(gizli) Katman: Giriş katmanından aldığı bilgiler üzerinde işlem yaparak bir sonraki
katmana iletir. Buradaki hücre sayısı değişkendir, girdi ve çıktı katmanlarındaki hücre
sayısına bağlı değildir.
Çıkış Katmanı: Ara katmandan gelen değerleri işleyerek çıktı üretilir ve dış dünyaya verilir.
Çıkış katmanındaki her bir hücre bir önceki katmandaki bütün hücrelere bağlıdır.
YSA’nın Avantaj ve Dezavantajı
Avantajı:
Yapay sinir ağı yaklaşımının istatistiksel yöntemlere göre avantajı, verilerin dağılım
varsayımları ve değişken varsayımlara ihtiyaç duymamasıdır. Adaptasyon yeteneği, bilginin
ağın tamamında saklanması, istisnai ve anormal veri sayısı çok olan konularda iyi sonuç
vermesi avantajları arasındadır. Yapay sinir ağları, değişkenlere ait veri eksiklerini de tolere
etme özelliğine de sahiptir.
Dezavantaj
Yapay sinir ağının eğitimi için çok sayıda veri gerekmesi, ağın parametre değerlerinin
belirlenmesinde ve eğitim örneklerinde belli bir kural olmaması, ağın eğitiminin ne zaman
bitirilmesi gerektiği, öğrenilecek problemin ağa gösterimi önemi problemlerdir.
Yapay Sinir Ağlarının Temel İşlevi
1-Öngörü veya Tahminleme: İleriki satışlar, hava tahminleri, at yarışları.
2-Sınıflandırma ve Kümeleme: Müşteri profilleri, tıbbı teşhis, ses ve şekil tanıma.
3-Kontrol: Erken uyarı için uçaklarda ses ve titreşim düzeyleri.
4. YSA’ nın Sınıflandırılması
A.Yapılarına Göre
1-İleri Beslemeli: Hücreler girişten çıkışa doğru düzenli katmanlar şeklindedir. Ağa gelen
bilgiler giriş katmanına daha sonra gizli katman ve çıkış katmanından işlenir ve dış dünyaya
verilir.
2-Geri Beslemeli: Hücrenin çıktısı kendiden önceki katmanda veya kendi katmanına girdi
olarak verilebilir.
B.Öğrenme Algoritmalarına Göre
1-Danışmanlı Öğrenme: Ağ kullanılmaya başlanmadan önce eğitilir. Hem girdi değerleri
hem de çıktı değerlerinin istenen çıktı değerleri sisteme verilir. İstenen çıktı ile ağın ürettiği
çıktı karşılaştırılarak hata oranı hesaplanır, ağırlıklar güncellenir.
2-Danışmansız Öğrenme: Sisteme sadece girdiler verilerek sistemin kendi kendine
öğrenmesi beklenir.
3-Pekiştirmeli Öğrenme: Giriş verileri ağda işlenir ve sonucun değerlendirilmesi danışman
tarafından yapılır. Ödül ve ceza ile ağ ağırlıkları güncellenir.
ÖĞRENME ALGORİTMALARI
Geri Yayılım Algoritması
Esnek Yayılım Algoritması
Delta Bar Delta Algoritması
Geliştirilmiş Delta Bar Delta Algoritması
Hızlı Yayılım Algoritması
Levenberg-Marquardt Metodu
Eşleştirilmeli Eğim Algoritması
Yapay sinir ağlarının istatistiksel alanlardaki uygulamalarında genellikle SOM(Self-
Organizing Maps) ve geri yayılım öğrenme algoritmalarının kullanılır.
5. SOM(SELF ORGANIZING MAPS)
1982 yılında Teuvo Kohonen tarafından geliştirilmiştir. İlişkisel bellek temelini
kullanan ve denetimsiz öğrenen bir YSA modelidir. İlişkisel bellek, iki nesne arasındaki bağın
kuvvetliliği ölçüsünde ilişkilendirdiğimiz öğrenme biçimi anlamına gelmektedir. Martinetz,
Berkovich ve Schulten 1993’te SOM algoritmasına alternatif olarak Neural-Gas algoritmasını
öne sürmüşlerdir. Neural-Gas aloritması, SOM algoritması ile K-ortalama metodunu birlikte
kullanır. SOM veri setindeki elemanları hem kümelendirir hem de haritalandırır. Bu sebeple,
bu ağlar son yıllarda oldukça popüler olmuştur.
SOM ağları tek katmanlı bir ağdır. Bu ağın eğitiminde kullanılacak veriler bağımlı
değişken içermez. Bu sebeple, kümeleme analizi ilgili problemlerin çözümü için idealdir.
Ancak, elde edilen sonuçların doğruluğunu denetlemek için konuyla ilgili uzman görüşüne
başvurmak gerekebilir. SOM ağları, hem verilerin kümelenmesi hem de görselleştirilmesi
açısından tercih edilmektedir. Bu ağlar çok boyutlu bir veriyi iki boyutlu bir haritaya
indirgemektedir. Her bir küme için oluşturulan referans vektörleri bir araya geldiğinde bir
haritayı meydana getirmektedir. SOM un LVQ dan en önemli farkı, LVQ nun denetimli
olması ve topolojik komşuluk içermemesidir.
SOM ağları, tek katmanlı bir ağ olup giriş ve çıkış nöronlarından oluşur. Giriş
nöronlarının sayısını veri setindeki değişken sayısı belirler. Çıkış nöronlarının her biri bir
kümeyi temsil eder. Diğer yapay sinir ağlarından farklı olarak, çıkış katmanındaki nöronların
dizilimi çok önemlidir. Bu dizilim doğrusal, dikdörtgensel, altıgen veya küp şeklinde olabilir.
En çok dikdörtgensel ve altıgen şeklindeki dizilimler tercih edilmektedir. Pratikte, çoğu kez
dikdörtgensel dizilim karesel dizilim olarak uygulanır. Buradaki dizilim topolojik komşuluk
açısından önemlidir. Aslında, çıkış nöronları arasında doğrudan bir bağlantı yoktur. Giriş
nöronları ile her bir çıkış nöronu arasındaki bağlantıyı referans vektörleri gösterir. Bu
vektörler bir katsayılar matrisinin sütunları olarak da düşünülebilir. SOM sinir ağları
eğitilirken bu topolojik komşuluk referans vektörlerinin yenilenmesinde kullanılır.
6. SOM AĞININ YAPISI
SOM ağlarının çeşitleri;
Kohonen
Kangas
Laaksonen
SOM UN BİLEŞENLERİ
1. İlklendirme: Bağlantı ağırlıklarının tümü rastgele olarak küçük sayılarla
ilklendirilirler.
2. Rekabet: Hücreler her girdi için bir fonksiyon aracılığı ile yarışırlar. Burada
kullanılan fonksiyon;
Dj(x) = ∑ (xi-wji)2
Fonsiyondan elde edilen değere bakılarak, hangi sinir hücresinin ağırlık vektörü girdi
vektörüne yakın ise o hücre winner olarak belirlenir. Sinir hücrelerinin rekabeti
sayesinde, girdi uzayı ve kesikli çıktı uzayı eşleşmiş olur.
3. İşbirliği: Uyarılacak hücrelerin topolojik komşuluğunun konumu belirlenerek
hücreler arası işbirliği yapılır.
7. 4. Uyum: Fonksiyondan elde edilen değer azaltılarak bağlantı ağırlıklarının azaltılması
işlemi uygulanır. Kazanan hücre ile birlikte komşuları da girdi vektörüne
yaklaştırılarak ağırlıklar düzenlenir. Böylece topolojik düzen sağlanmış olur.
SOM ALGORİTMASININ ÇALIŞMASI
SOM Modelinde Kümelemeyi Etkileyen Faktörler
Başarılı bir kümeleme çalışması gerçekleştirebilmek için bazı faktörlere dikkat etmek
gerekir. Çoğu kez deneme yanılma yoluyla bu faktörler için en iyi değerler bulunur.
Giriş vektörüyle referans vektörleri arasındaki fark hata olarak kabul edilirse, en küçük
mutlak hata ortalamasına sahip model en iyidir denilebilir. Bu faktörler şunlardır:
1) Çıkış katmanındaki nöron sayısı:
Çıkış katmanındaki nöron sayısı, elde edilebilecek maksimum küme sayısını belirtir.
Genellikle, veri setindeki eleman sayısının %10’u civarında çıkış nöronu tercih edilir.
2) Verilerin normalleştirilmesi:
Veri setindeki değişken değerleri arasında büyük farklar varsa değerler
normalleştirilmelidir. Böylece, tüm değişkenlere eşit şans verilmiş olur. Sütun bazında
yapılan normalleştirme üç şekilde yapılabilir:
8. a) Her bir sütundaki değerler sütun standart sapmasına bölünür.
b) Her bir sütundaki değerlerden sütun ortalaması çıkartılıp çıkan sonuç sütun standart
sapmasına bölünür. Böylece, ortalaması 0 standart sapması 1 olan standart dağılım
elde edilir.
c) Her bir sütundaki değer, sütun vektör uzunluğuna bölünür.
3) Referans vektörlerine ilk değer atanması:
Referans vektörlerine ilk değer atanması, SOM modelinde çok kritik bir yere sahiptir. Bu
ilk değerler atanırken veri setindeki giriş vektör değerleri göz önünde bulundurulmalıdır.
Pratikte, referans vektörlerine rasgele değerler atamak bazen sakıncalı olabilir. Tüm
vektörlere 0’dan çok az büyük bir değer atanırsa öğrenme katsayısı 1’e yakın bir değerle
başlatılmalı ve belli bir döngü boyunca (1000 döngü gibi) azaltılmamalıdır. Ayrıca,
komşuluk değişkeni büyük bir değerle başlatılmalı ve öğrenme katsayısının değişmediği
periyotta sabit kalmalıdır. Böylece, referans vektörleri giriş vektörlerine uygun bir forma
kavuşurlar. Referans vektörlerine, giriş vektörlerinin dağılımına uygun bir ilk atama
yapıldığında öğrenme katsayısı ve komşuluk değişkeni daha küçük bir değerle
başlatılabilir. Bu da algoritmanın öğrenme hızını artırır.
4) Uzaklık ölçüsü:
SOM algoritmasında giriş vektörleriyle referans vektörleri arasındaki uzaklık, öklid
uzaklığının karesi ile ifade edilmektedir. Ancak, öklid uzaklığı yerine başka uzaklık
ölçüleri de kullanılabilir: Minkowski ölçüsü, city-block uzaklığı gibi. Bazı çalışmalarda
uzaklık ölçüsü yerine vektör çarpımı kullanılmıştır. Vektör çarpımı kullanıldığında, en
büyük çarpım değerine sahip olan nöron, kazanan nörondur.
Bununla ilgili SOM algoritmasında değişiklik yapmak gerekir.
5) Öğrenme katsayısı ve Komşuluk değişkeni:
Öğrenme katsayısı 0 ile 1 arasında bir değerle başlamalı ve döngü arttıkça 0’a
yaklaşmalıdır. Komşuluk değişkeni, çıkış katmanındaki dizilime uygun büyük bir değerle
başlamalı ve döngü ilerledikçe azaltılmalıdır.
9. SOM AĞININ KULLANIM ALANLARI
1. Verilerin kümelenmesi ve görselleştirilmesi açısından önemlidir.
2. Çok boyutlu veriler iki boyutlu haritaya indirgenir.
3. Görüntüleme alanında kullanılmaktadırlar.
Başlıca kullanım alanları;
SınıflandırmaProblemleri(örnek:http://www.cis.hut.fi/research/somresearch/worl
dmap.html)
Görüntü Tanıma
Örüntü Tanıma
Ses Tanıma(örnek:http://research.ics.aalto.fi/ica/cocktail/cocktail_en.cgi)
Veri Sıkıştırma
Çevre Modellemesi
PROJE AŞAMALARI
Projeye ilk etapta 500 tane film verisinin yıl bilgisine, puan bilgisine, yönetmen bilgisine,
başrol oyuncusunu kadın erkek olma özelliklerine göre som algoritması kullanarak ağ
eğitimine başladık. Ağ eğitimi sonucunda film türlerine göre kümeleme yapmasını amaçladık.
Ve film türleri çıktılarının doğru oranda kümelenmesini amaçladık. Fakat proje kapsamında
bazı zorluklarla karşılaşıldı bunlardan en önemlisi veri kümesini doğru verilerden seçmekti.
Film verilerini ilk etapta doğru seçmediğimizden dolayı 1 haftalık eğitim sonuç vermedi
danışman hocamızın desteğiyle veri kümesini nasıl oluşturacağımız konusunda daha net
bilgiye ulaştık ve veri kümemizi 1040 film verisinden oluşturduk. Bu veri kümesinde 7 farklı
film türüne yer verdik ve ağımızı som algoritmasıyla eğitmeye başladık.
10. Ağımızın eğitiminde 4 özellik yani (ülke , renk bilgisi,yönetmen ve tarih bilgisi) ile ağın
eğitimini gerçekleştirdik ve amacımız test verilerinden doğru kümeleme elde etmek ve bunu
som algoritmasıyla gerçekleştirmek.
Yapılan çalışmalar;
Som algoritmasında ağ eğitimi için 4 topoloji bulunmaktadır ;
Hextop, Gridtop, Randtop, Tritop topolojileridir.
Biz projemizde ağ eğitiminde başarı doğru oranının daha iyi bir sonuç vermesi için sık sık
denemelerimizde bu topolojileri kullanarak her eğitim sonuçlara bu topolojilerin nasıl etki
ettiğini gözlemledik ve bunları raporumuzda sunmaya çalıştık ayrıca ağ eğitiminde sadece
topolojileri değiştirmekte kimi zaman sonuç vermedi bunun içinde sık sık test verilerimizi ve
ağ eğitimi için farklı değerler kullanarak daha iyi sonuca ulaşmak için denemelerde bulunduk.
1) Xls dosyamızdan 2 ile 1040 arasındaki verileri ağın eğitimi için kullandık ve hextop
topolojisini kullandığımızda daha iyi kümele yaptı ve burada ağ eğitimi için
selforgmap ağ eğitim fonksiyonu kullandık.
2) Xls dosyası içerisindeki verilerden 2-40 verilerini test verisi ve 41-1040 arası
verilerimizi de ağ eğitimi için kullandık selforgmap ağ eğitim fonksiyonunda 1x10
grid topolojisi ile 1. Sonucumuza göre kümeleme daha başarılı bir sonuç elde ettik.
Aşağıdaki adımlarda 4 özellik alınarak yapılan eğitim sonucunda elde edilen sonuçlar;
3) 1x2 lük hextop topolojisi kullanarak kümeleme başarımız önceki sonucumuza oranla
düştü.
4) 1x3 lük hextop topolojisi için kümeleme başarısı bir öncekine göre daha başarılı
5) 1x4 lük hextop topolojisi için kümeleme başarısı 4. değere göre daha iyi kümeledi ve
renk tonları daha iyi sonuca yansıdı
6) 3x4 lük hextop topolojisi ile kümele önceki sonuclara göre daha kötü sonuc verdi
7) 3x4 lük grid topolojisi ile kümeleme hextop topolojine göre daha kötü kümeleme
sonucu vermiştir.
Ağ eğitimi için özellik sayısını 5 e çıkardığımızda ve 1x4 lük hextop topolojisini
kullandığımızda elde ettiğimiz başarı oranı kümeleme belirgin olarak daha iyi sonuç
verdiği gözlemlenmiştir.özellik sayısı 5 ve 1x15 lik hextop topolojisi ile kümeleme
1x4 topolojiye göre daha kötü kümeleme yaptığı görülmüştür.
11. 8) 100-1000 arasındaki verileri eğitim için kullandık ve 1020 ile 1040 arasındaki verileri
de test verileri olarak aldıgımızda ve 1x7 lik hextop topolojini kullanarak kümeleme
daha başarılı oldu 1x15 lik hextop topolojisine göre.
Bu sonuçlar göstermiştir ki; som algoritmasıyla sınıflandırma işleminde elde edilen neticelere
göre kümeleme işleminde hextop topolojisi diğer topolojilere göre daha iyi sonuçlar
vermektedir ve ayrıca kümeleme işleminde eğitim aşamasında verilerin seçimi önemli bir
konudur ve tüm ağı etkilemektedir.
Türü siyah-beyaz (bw) olan filmlerin gruplamasını yaptık ilk 120 veri için 1x5 lik hextop
topolojisi kullanarak elde edilen sonuçlar
12. Türü siyah-beyaz (bw) ve renkli türdeki veriler olan filmlerin gruplamasını yaptık ilk 1000
veri için 1x5 lik hextop topolojisi kullandık ve 1000-1025 arsındaki verileri de test verisi
olarak kullandık ve aşağıdaki sonuçları elde ettik
Şekil-1 deki resimde siyah-beyaz türünde girilen drama verilerinde input2 için siyah verilerin
daha yoğun olduğu görülmekte bu veri kümesini genişletip ve ayrıca renkli film tür bilgisine
göre de gruplama yaptığımızda şekil-2 de karşılaştığımız sonuç siyah bölgenin azaldığını
göstermektedir.
13. Amerika’da çekilmiş filmlerin yıllara göre dağılımı üzerine bir kümeleme işlemi yapıcaz.
Fransa’da çekilmiş filmlerin yıllara göre dağılımı üzerine bir kümeleme işlemi yapıcaz.
Buradaki kümelemede 1930 dan önce fransada çekilen filmler amerika’da çekilen filmlerden
daha az olduğu görülmektedir.Burda filmlerin yıl ağırlıkları baz alarak kümeleme yapılmıştır.
14. Amerika’ da çekilen filmlerin yıllara göre kümeleme işlemi
Fransa’ da çekilen filmlerin yıllara göre kümeleme işlemi
Sonuç olarak grafiğe bakarak amerika’da ve Fransa arasındaki filmlerin kümelenmesini
görüyoruz.
15. Girilen tüm verilerin yıl türüne göre filmlerin kümelenmesi
Girilen tüm verilerin yıl türüne göre filmlerin kümelenmesi
16. %som algoritmasıyla film analizi kod
clear all
clc
%excel dosyasındaki verilerin okunması
%içerik değerleri num, her bir hücre
%değeri txt ve her ikisinin birleşimi
%raw değişkeninde tutulmaktadır.
[num,txt,raw] = xlsread('ersinvahap.xls');
%Verilerin rastgele karıştırılması
%için kullanılan özellik
i = randi(size(num,1),size(num,1),1);
%cell formatındaki değişkenin
%double türe dönüştürülmesi
%Giriş ve çıkışların oluşturulması
Target = num(i,1); % birinci sütun hedef
Feature = num(i,2:5); % ikinci ve besinci sütunlar özellik yani inputlar
%giriş ve çıkış eğitim ve test vektörlerinin oluşturulması
traininput = Feature(100:1000,:)';
targetinput = Target(100:1000,:)';
17. testinput = Feature(1020:1040,:)';
testoutput = Target(1020:1040,:)';
sayac=1;
%Ağın oluşturulmasu
for v=1:3;
for e=1:3;
pos = randtop(v,e);
net = selforgmap([v e],'topologyFcn','hextop');
%net = newsom(traininput,[v e],'randtop');
%[net,tr] = train(net,traininput);
plotsomplanes(net) % grafikte ağın eğitiliş eğrisi gösterimi
%plotsomtop(net); % grafikte ağın eğitiliş eğrisi gösterimi
sayi=int2str(sayac);
mat='.mat';
savefile=strcat(sayi,mat);
save(savefile, 'net')
%load('71.mat','net')
%Ağın test verilerine göre çıkış üretmesi
%out = vec2ind(net(traininput));
18. %Test giriş değerlerine göre eğitilen ağdan elde edilen çıkış değerlerinin
%karşılaştırılması
%sonuc = out - targetinput;
%Doğru bulunanların toplam değeri
%dogru = 0;
%for k =1:size(sonuc,2)
% if(sonuc(k) == 0)% eğer sonuc sıfır cıkarsa dogru sonuc
% dogru = dogru + 1;
% end
%end
%Doğru ve yanlış olanların yüzdesel değerleri
%basaridogru(v,e) = dogru*100 / size(sonuc,2);
%basariyanlis(v,e) = (size(sonuc,2)-dogru)*100 / size(sonuc,2);
sayac=sayac+1;
end
end
19. aşağıdaki bilgiler excel’e girmiş olduğumuz bilgilerin sayısallaştırılması
sıra yönetmen
1 aldrich robert
2 bergman ingmer
3 allen woody
4 godard jean luc
5 steven spielberg
6 lang fritz
7 lubitsh ernst
8 lumet sidney
9 minnelli vicente
10 ozu yasujiro
11 preminger otto
12 ray nicholas
13 ray satyajit
14 renoir jean
15 resnais alain
16 rivette socques
17 rahmer eric
18 rossellini roberto
19 russel ken
20 scorsese martin
21 sidney george
22 siodmak robert
23 sokurov aleksandr
24 steven spielberg
25 stone oliver
26 tavernier bertnard
27 tourneur jacques
28 trauffaut françois
29 tsui hark
30 vidor king
31 visconti luchino
32 von stenberg
33 wajda andrzej
34 walsh raoul
35 warhol andy
36 weir peter
37 wellman william
38 wenders wim
39 wilder billy
40 wise robert
41 wiseman frederick
42 wyler william
43 zemeckis robert
20. 44 zinneman fred
45 almador pedro
46 altman robert
47 antonioni michelangelo
48 boorman john
49 borzage frank
50 brokhage stan
51 bresson robert
52 bunuel luis
53 copra frank
54 chabrol claude
55 chaplin charles
56 clair rene
57 coppola francis
58 corman rager
59 cronenberg david
60 cukor george
61 curtiz michael
ülke tür renklilik
1 1 war 1 bw
2 us 2 adventure 2 col
3 france 3 comedy 3 bw-col
4 canada 4 crime 4
5 germany 5 drama
6 ıtaly 6 thriller
7 7 romance
8 uk
9 denmark
10 honkong
11 australia
12 belgiue
13 chile
14 india
15 ireland
16 japan
17 mexico
18 netherland
19 poland
20 russia
21 spain
22 sweden
23 switzerland
24 turkey
25 ussr