THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Software => Topic started by: heavy melon on April 17, 2018, 16:05:54 pm



Title: machine learning question
Post by: heavy melon on April 17, 2018, 16:05:54 pm
Ποστάρω μια απορία σε machine learning που δε μπόρεσα να τη λύσω στο ινετ.
Πειραματίζομαι με ένα classification. Αρχικά από το dataset μου διαχωρίζω σε train & data sets.

Με κάποιους διαχωρισμούς κάνω train models που έχουν 90κάτι % test accuracy
ενώ με άλλο τυχαίο διαχωρισμό των δεδομένων μπορεί να έχω 70κάτι % test accuracy

Μήπως δε θα έπρεπε να υπάρχει τόσο μεγάλη απόκλιση όπως κι αν έπαιρνα τα δεδομένα?
Γενικά είναι σωστό να πω πχ ότι διαλέγω το τάδε μοντέλο που δίνει 90κάτι% ή ειναι λάθος? Από την άλλη δεν ξέρω φυσικά τι ποσοστό θα έδινε αν διαλέγαμε αλλιώς τα sets αλλά ούτε κι αν τέσταρα με περισσότερα test data (που δεν έχω διαθέσιμα)



Title: Re: machine learning question
Post by: Vlassis on April 17, 2018, 16:28:29 pm
Νομιζω οτι ειναι λογικο να υπαρχει τετοια διαφορα. Λογικα θα υπαρχει καποια σχεση αναμεσα στα data σου, ετσι οπως εγινε ο διαχωρισμος, που δινει τετοιο σφαλμα στο τελος.
Για το τι ειναι σωστο να πεις, δεν ξερω να σου πω την αληθεια.
Θα μπορουσες νομιζω για το training να χρησιμοποιησεις αλγοριθμους k-fold crossvalidation, για να παρεις ουσιαστικα καθε δυνατη (ή εστω αρκετες) περιπτωσεις διαχωρισμου και να σου δωσει καλυτερα αποτελεσματα


Title: Re: machine learning question
Post by: heavy melon on April 17, 2018, 16:32:58 pm
Ναι όταν κάνω training χρησιμοποιώ 5 cross validation με το train-data και μετά όταν αποφασίζω το μοντέλο, testάρω στα δεδομένα μου. Αλλά αν αλλάξω πχ τα δεδομένα με τα οποία θα κάνω training (% 5 cross validation) ενώ το accuracy του training δε διαφοροποιείται σημαντικά, το test accuracy σκαμπανεβάζει πολύ


Title: Re: machine learning question
Post by: iason1907 on April 17, 2018, 17:26:55 pm
οταν κάνεις 5fold cross-validation βγάζεις μέσο όρο accuracy 90% ή σε κάποιο fold?
Ποσο είναι το train set error?


Title: Re: machine learning question
Post by: heavy melon on April 17, 2018, 17:35:51 pm
Καταρχάς, κάνω το 5fold cross validation με έναν κώδικα generated από ένα classification app του MATLAB. Εκεί απ' ότι είδα διαχωρίζει σε train & test set, και δε χρησιμοποιεί ένα 3ο, validation set που προτείνουν γενικά. 'Ετσι εγώ, χωρίς να είμαι βέβαιη ότι είναι σωστό, παίρνω το 80% πχ του συνολικού dataset, κάνω training με το 5fold cross validation, δίνει accuracy πχ με cubic SVM συνήθως το καλύτερο, γύρω στο 98%. Μετά κάνω prediction με new data με αυτό το μοντέλο κ τότε στην καλύτερη έχω δει 93% test accuracy. Αλλά μάλλον έχει να κάνει με το διαχωρισμό των set. Γιατί αν το ξαναχωρίσω randomly, μπορεί να πάρω 73% test accuracy.


Title: Re: machine learning question
Post by: iason1907 on April 17, 2018, 17:45:59 pm
μπορεις να κανεις το εξής.

Από το σύνολο των δεδομένων σου κράτα στην άκρη ένα ποσοστό για τεστ και μόνο. Random επιλογή δειγμάτων (test set).

Με τα υπόλοιπα (train set) εκπαίδευσε ένα μοντέλο και δες τι accuracy πετυχαίνεις με αυτό το μοντέλο στο train set?.

Χώρισε μετά το train set σε 5 κομμάτια και πάρε διαδοχικά τα 4 για εκπαίδευση ενός μοντέλου και το άλλο κομμάτι κράτα το για τεστ. Με αυτό τον τρόπο θα βγάλεις 5 τιμές accuracy, ποια είναι η μέση τιμή?

προτείνω να χρησιμοποιήσεις αν δεν το κάνεις ήδη τις συναρτήσεις της libsvm για την matlab. Η svmtrain κάνει κατευθείαν και cv με όσα folds θες


Title: Re: machine learning question
Post by: Dealan on April 17, 2018, 18:02:52 pm

Αυτό που περιγράφεις δεν είναι ακριβώς το 5fold cross validation που εφαμρόζει η heavy melon; Ή λάθος θυμάμαι;


Title: Re: machine learning question
Post by: heavy melon on April 17, 2018, 18:09:59 pm
μπορεις να κανεις το εξής.

Από το σύνολο των δεδομένων σου κράτα στην άκρη ένα ποσοστό για τεστ και μόνο. Random επιλογή δειγμάτων (test set).

Με τα υπόλοιπα (train set) εκπαίδευσε ένα μοντέλο και δες τι accuracy πετυχαίνεις με αυτό το μοντέλο στο train set?.

Χώρισε μετά το train set σε 5 κομμάτια και πάρε διαδοχικά τα 4 για εκπαίδευση ενός μοντέλου και το άλλο κομμάτι κράτα το για τεστ. Με αυτό τον τρόπο θα βγάλεις 5 τιμές accuracy, ποια είναι η μέση τιμή?

προτείνω να χρησιμοποιήσεις αν δεν το κάνεις ήδη τις συναρτήσεις της libsvm για την matlab. Η svmtrain κάνει κατευθείαν και cv με όσα folds θες

Ευχαριστώ πολύ καταρχάς για τις απαντήσεις :)
Αλλά μπερδεύτηκα. Τα 2 bold που αναφέρεις είναι διαφορετικά; Επίσης ναι, αυτό το κάνει η fitcsvm (η svmtrain έχει γίνει removed)


Title: Re: machine learning question
Post by: iason1907 on April 17, 2018, 18:22:10 pm
@dealan, αυτό που περιγράφω είναι το c.v., απλά προτείνω να δούμε την μεση τιμή.

@βαρυπεπόνι, αν θες κατέβασε από εδώ (https://www.csie.ntu.edu.tw/~cjlin/libsvm/) τον κώδικα που δίνει για matlab και τρέξε. Δεν έχω χρησιμοποιήσει την fit

τα 2 bold ειναι διαφορετικά. Το δεύτερο τεστ αναφέρεται στο 1/5 που αφήνεις εκτός σε κάθε fold.


Title: Re: machine learning question
Post by: heavy melon on April 17, 2018, 18:28:42 pm
@dealan, αυτό που περιγράφω είναι το c.v., απλά προτείνω να δούμε την μεση τιμή.

@βαρυπεπόνι, αν θες κατέβασε από εδώ (https://www.csie.ntu.edu.tw/~cjlin/libsvm/) τον κώδικα που δίνει για matlab και τρέξε. Δεν έχω χρησιμοποιήσει την fit

τα 2 bold ειναι διαφορετικά. Το δεύτερο τεστ αναφέρεται στο 1/5 που αφήνεις εκτός σε κάθε fold.

οκ, κοίτα ο ΜΟ που προτεινεις (accuracy στο training), επειδη το εχω τρεξει αρκετες φορες υψηλος θα ειναι. τυπου 96-97-98%
To πρόβλημα είναι ότι στο test είναι μεγάλη η απόκλιση. Εμάς στο test δε μας νοιάζει τι συμβαίνει περισσότερο?


Title: Re: machine learning question
Post by: iason1907 on April 20, 2018, 10:06:22 am
οκ, κοίτα ο ΜΟ που προτεινεις (accuracy στο training), επειδη το εχω τρεξει αρκετες φορες υψηλος θα ειναι. τυπου 96-97-98%
To πρόβλημα είναι ότι στο test είναι μεγάλη η απόκλιση. Εμάς στο test δε μας νοιάζει τι συμβαίνει περισσότερο?
πριν κάνεις τον αρχικό διαχωρισμό σε train και test set, ανακατεύεις τα δεδομένα ή όχι?


Title: Re: machine learning question
Post by: adiaforos on April 20, 2018, 12:00:18 pm
οκ, κοίτα ο ΜΟ που προτεινεις (accuracy στο training), επειδη το εχω τρεξει αρκετες φορες υψηλος θα ειναι. τυπου 96-97-98%
To πρόβλημα είναι ότι στο test είναι μεγάλη η απόκλιση. Εμάς στο test δε μας νοιάζει τι συμβαίνει περισσότερο?

ναι στο τεστ σετ σε ενδιαφερει,το προβλημα ισως ειναι οτι γινεται οβερφιτινγκ στο τρεινινγκ σετ


Title: Re: machine learning question
Post by: heavy melon on April 20, 2018, 12:04:27 pm
πριν κάνεις τον αρχικό διαχωρισμό σε train και test set, ανακατεύεις τα δεδομένα ή όχι?

"ανακατεύεις" τι εννοείς;
Τα διαλέγω αναλογικά από κάθε κλάση (περισσότερα από την κλάση με τα περισσότερα δεδομένα)
με μια randsample().

Επίσης το κουλό είναι ότι έκανα στατιστική ανάλυση (t-test) για να διώξω features, κι ενώ μου έμειναν μόνο 55 από τα 1300κάτι,
έχω ίδια test accuracy  :o


Title: Re: machine learning question
Post by: c0ndemn3d on April 20, 2018, 13:21:44 pm
Precision και recall τι έχεις; Το accuracy δεν είναι το μόνο που μετράει αν δεν είναι γενικά καλό το train set που έχεις. Καλύτερα είναι να βλέπεις σε πίνακα τα FP και FN και να συγκρίνεις από εκεί. Αλλιώς πρέπει να δώσεις παραπάνω πληροφορίες για το set που έχεις, διότι θα μπορούσε να είναι το οτιδήποτε. Φυσικά με ένα train set που καλύπτει μεγαλύτερο μέρος του χώρου θα έχεις καλύτερο accuracy σε ένα πιθανό test set. Ή από την άλλη αν το test set που έχεις έχει πολύ τετριμμένες τιμές είναι πολύ πιθανό να παίρνεις καλό accuracy χωρίς να έχεις κάνει καλό training.


precision kai recall ti exeis? to accuracy den einai to mono pou metraei an den einai genika kalo to train set pou exeis. Kalitera einai na vlepeis se pinaka ta FP kai FN kai na sigkrineis apo ekei. alliws prepei na dwseis parapanw plirofories gia to set pou exeis, dioti tha mporouse na einai to otidhpote. fisika me ena train set pou kaliptei megalitero meros tou xwrou tha exeis kalitero accuracy se ena pithano test set. i apo tin allh an to test set pou exeis exei poli tetrimmenes times einai poli pithano na pairneis kalo accuracy xwris na exeis kanei kalo training.


(sry den exw ellhnika)


mod: greeklish to greek (https://www.google.com/search?client=ubuntu&hs=O8V&channel=fs&ei=iMHZWryBBcj2kwW8-pnYBw&q=greeklish+to+greek&oq=greeklish+to+gre&gs_l=psy-ab.3.0.0l7j0i22i30k1l3.48678.52880.0.53524.15.12.3.0.0.0.288.1472.0j6j2.8.0....0...1c..64.psy-ab..4.11.1494...0i67k1j0i22i10i30k1.0.8zpUQPtpgr4), το original είναι τα ψιλά γράμματα


Title: Re: machine learning question
Post by: iason1907 on April 20, 2018, 22:55:39 pm
"ανακατεύεις" τι εννοείς;
Τα διαλέγω αναλογικά από κάθε κλάση (περισσότερα από την κλάση με τα περισσότερα δεδομένα)
με μια randsample().

Επίσης το κουλό είναι ότι έκανα στατιστική ανάλυση (t-test) για να διώξω features, κι ενώ μου έμειναν μόνο 55 από τα 1300κάτι,
έχω ίδια test accuracy  :o

Αυτό εννοώ για την επιλογή των δεδομένων. Ότι διαλέγεις τυχαία  και όχι fv στην σειρά 



Title: Re: machine learning question
Post by: c0ndemn3d on April 21, 2018, 03:36:34 am
Τελικά τί έγινε; Με τρώει η αγωνία


Title: Re: machine learning question
Post by: heavy melon on April 21, 2018, 20:15:04 pm
Τελικά τί έγινε; Με τρώει η αγωνία

 :D

precision & recall στο test εννοείς ε?

μόλις τα υπολόγισα και απογοητεύτηκα φουλ (ορκομωσία ποτέ)
precision=0.095 (πολλάάά FalsePos)
& recall=1

στο cross validated set είναι φυσικά τέλεια!  :-\

p.s. και στη φώτο είναι η εικόνα από τα cross validated data

όσο για το dataset είναι ηλεκτροεγκεφαλογραφήματα  :P


Title: Re: machine learning question
Post by: iason1907 on April 21, 2018, 23:10:03 pm
Ο elm παίζει;


Title: Re: machine learning question
Post by: heavy melon on April 22, 2018, 17:11:09 pm
Ο elm παίζει;

δεν καταλαβαίνω τι εννοείς  ::) :P