Σημειώσεις από την παρουσίαση στο Θερινό Σχολείο «Μαθηματικά της Αγοράς και της Παραγωγής» 2019
Νευρωνικά δίκτυα
Για
τα νευρωνικά δίκτυα μπορείτε:
1. Να
διαβάσετε (όλο ή μέρος) το σχετικό λήμμα στη Wikipedia. (https://en.wikipedia.org/wiki/Artificial_neural_network)
2.
Για τις activation functions, που όπως αναφέραμε
επιτρέπουν στα νευρωνικά δίκτυα να δημιουργήσουν μη γραμμικά μοντέλα, η λίστα
που είδαμε είναι επίσης από το σχετικό λήμμα της Wikipedia (https://en.wikipedia.org/wiki/Activation_function)
3. Σχετικά
με τις συνελίξεις (convolutions)
μπορείτε να διαβάσετε το άρθρο στη
διεύθυνση https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53 ενώ
μπορείτε να παίξετε και με το σχετικό αρχείο excel που είδαμε στην παρουσίαση. Θα το
βρείτε στη διεύθυνση https://github.com/dpanagop/ML_and_AI_examples/raw/master/convolution_example.xlsx
4. Το
παράδειγμα για την ταξινόμηση εικόνων με νευρωνικά δίκτυα θα το βρείτε στη διεύθυνση
https://github.com/dpanagop/ML_and_AI_examples/blob/master/Example%20of%20image%20classification%20with%20neural%20network.ipynb
.Εκεί πατώντας το κουμπί
θα ανοίξει το Colab της Google όπου θα μπορέσετε να τρέξετε το παράδειγμα και
να πειραματιστείτε αν θέλετε αλλάζοντας τον κώδικα.
5.
Το παράδειγμα για τη μεταφορά στυλ, θα το
βρείτε στη διεύθυνση https://github.com/dpanagop/ML_and_AI_examples/blob/master/Style_transfer.ipynb .
Εκεί πατώντας το κουμπί
θα ανοίξει το Colab της Google όπου θα μπορέσετε να τρέξετε το σχετικό κώδικα
και να αλλάξετε το στυλ μιας εικόνας που θα ανεβάσετε εσείς. Ο κώδικας είναι
αρκετά περίπλοκος αλλά υπάρχει σχετικό link στο αρχικό post του δημιουργού του το οποίο είναι
αρκετά κατατοπιστικό.
6. Ένα
εισαγωγικό video για
το Colab και
τη χρήση του μπορείτε να δείτε στο σύνδεσμο https://www.youtube.com/watch?time_continue=67&v=inN8seMm7UI
Bonus
1. Ενδιαφέρον
άρθρο με πολλές παραπομπές σχετικά με το πώς μπορούν να ξεγελαστούν τα
νευρωνικά δίκτυα είναι το https://towardsdatascience.com/evasion-attacks-on-machine-learning-or-adversarial-examples-12f2283e06a1
2.
Για όσους θέλουν να ασχοληθούν με data science/data analytics επαγγελματικά ίσως έχουν ενδιαφέρον τα “Candid Advice for Aspiring Data Scientists” και “5 Essential Tips To Kick-Start A Career In Data
Science”. Δύο
βασικές συμβουλές είναι η δημιουργία portfolio και η συμμετοχή σε σχετικές κοινότητες. Για
αυτά τα δύο χρήσιμα είναι τα:
3. Μπορείτε
να δείτε υλικό από την περσινή παρουσίαση και την σχετική άσκηση του θερινού
σχολείου στη διεύθυνση https://data-analysis-science.blogspot.com/2018/08/bank-marketing-with-r-example.html Σε
αυτήν αναλύεται το σύνολο δεδομένων που
χρησιμοποιούμε στην τελευταία ερώτηση.
Τέλος,
το profile μου
στο Linkedin
είναι
https://www.linkedin.com/in/dpanagopoulos/ μην διστάσετε να στείλετε μήνυμα.
Ακολουθούν και οι ασκήσεις που δόθηκαν. Αξίζει να δείτε την τελευταία.
Ασκήσεις
Απαντήστε
στις παρακάτω ερωτήσεις
Ερώτηση
1 (μονάδες 15/100)
Σωστό
ή Λάθος; «Μια συνάρτηση hash
είναι ένα προς ένα συνάρτηση».
1.
Σωστό
|
2.
Λάθος
|
Απάντηση:….
|
Ερώτηση
2 (μονάδες 15/100)
Ποιά
από τις παρακάτω μεθόδους χρησιμοποιείται για την εκπαίδευση (ρύθμιση των
βαρών) νευρωνικών δικτύων
1.
Simplex
|
2.
Backpropagation
|
3. SWIFT transaction
|
4. Blockchain
|
Απάντηση:….
|
Ερώτηση
3 (μονάδες 15/100)
Συμβουλευόμενοι
την αναφορά του σημείου (2) στην ενότητα για τα νευρωνικά δίκτυα, ποιες από τις
παρακάτω συναρτήσεις χρησιμοποιούνται ως activation functions στα νευρωνικά δίκτυα; (Είναι περισσότερες από μια)
1.
Logistic
|
2.
ArcTan
|
3. Binary step
|
4. Rectified linear unit (ReLU)
|
Απάντηση:….
|
Ερώτηση
4 (μονάδες 20/100)
Δείτε
το παράδειγμα για την ταξινόμηση εικόνων με νευρωνικά δίκτυα θα το βρείτε στη
διεύθυνση https://github.com/dpanagop/ML_and_AI_examples/blob/master/Example%20of%20image%20classification%20with%20neural%20network.ipynb.
Στη
παράγραφο “Evaluate
models accuracy” φαίνεται ότι η ακρίβεια
του μοντέλου που έχει κατασκευαστεί είναι περίπου 35,3%.
Εικόνα 1 Ακρίβεια μοντέλου ταξινόμησης
Βλέπετε
μάλιστα και δύο περιπτώσεις λάθος ταξινόμησης. Εξηγήστε γιατί κατά τη γνώμη σας
συμβαίνει αυτό. Για να βοηθηθείτε αφού ανοίξετε το πρόγραμμα στο Colab, τρέξτε από την αρχή το παράδειγμα
αλλάζοντας τον αριθμό των περιόδων εκπαίδευσης από 10 σε 100 αλλάζοντας το “epochs=10” σε “epochs=100” στην ενότητα “Train model”
Έξτρα
bonus (μονάδες 20/100)
Μπορείτε
να δείτε τι θα γίνει αν προσθέσετε ένα επιπλέον στρώμα νευρώνων στο δίκτυο
αλλάζοντας την εντολή για την κατασκευή του από
Εικόνα 3 Εντολή για την κατασκευή του
νευρωνικού δικτύου
σε
Με
την παραπάνω σύνταξη προσθέτουμε ένα στρώμα 128 νευρώνων στην αρχή του
προηγούμενου δικτύου. Πώς επηρεάζεται η ακρίβεια του μοντέλου αυξάνοντας τις
περιόδους εκπαίδευσης και πως προσθέτοντας στρώματα νευρώνων; Στο αρχικό
μοντέλο τι από τα δύο είναι προτιμότερο;
Ερώτηση
5 (μονάδες 35/100)
Στη διεύθυνση https://github.com/dpanagop/ML_and_AI_examples/blob/master/Bank_marketing.ipynb μπορείτε να δείτε το παράδειγμα της
δημιουργίας ενός μοντέλου που προσπαθεί να προβλέψει αν κατά τη διάρκεια μιας
καμπάνιας, ένας πελάτης θα πεισθεί να ανοίξει προθεσμιακό λογαριασμό ή όχι. Προσοχή:
δεν είναι απαραίτητο να το μελετήσετε, δίνεται μόνο για λόγους αναφοράς.
Το σύνολο δεδομένων περιέχει
πληροφορίες όπως η ηλικία του πελάτη, το επάγγελμα του, το μορφωτικό του
επίπεδο, το αν έχει κόκκινο δάνειο ή όχι, το αν έχει στεγαστικό δάνειο ή όχι
κλπ. Το αν πείσθηκε να ανοίξει προθεσμιακό λογαριασμό ή όχι φαίνεται στη μεταβλητή
“y”. Όπως φαίνεται και
από το σχετικό γράφημα (Εικόνα 4) η συντριπτική πλειοψηφία των πελατών (το
88,7%) δεν άνοιξε προθεσμιακό λογαριασμό. Αυτή είναι μια κλασική περίπτωση unbalanced συνόλου δεδομένων.
Η
συνήθης διαδικασία κατασκευής ενός μοντέλου είναι ο τυχαίος διαχωρισμός των
δεδομένων σε δύο μέρη με το ένα να λέγεται train και το άλλο να λέγεται test. Το train χρησιμοποιείται για την κατασκευή του
μοντέλου, ενώ το test
για
την αξιολόγησή του.
Στην πρώτη απόπειρα κατασκευής ενός
μοντέλου για την πρόβλεψη κατά την αξιολόγηση προκύπτει ο παρακάτω πίνακας
σχετικά με την εκτίμηση του αν ο πελάτης θα ανοίξει προθεσμιακό λογαριασμό
(μεταβλητή “y”)
του test
κομματιού.
Predicted
|
||||
no
|
yes
|
Total
|
||
TRUE
|
no
|
10.696
|
273
|
10.969
|
yes
|
923
|
465
|
1.388
|
|
Total
|
11.619
|
738
|
12.357
|
|
accuracy:
|
90,3%
|
Βλέπουμε
ότι το μοντέλο έχει ακρίβεια (σωστές προβλέψεις προς το σύνολο) 90,3%. Αλλά αν
δούμε την ακρίβειά του ανά κατηγορία της μεταβλητής “y” έχουμε το ακόλουθο.
Predicted
|
||||
no
|
yes
|
Total
|
||
TRUE
|
no
|
98%
|
2%
|
100%
|
yes
|
66%
|
34%
|
100%
|
|
Total
|
164%
|
36%
|
Βλέπουμε
ότι ενώ για τους πελάτες που τελικά δεν άνοιξαν προθεσμιακό λογαριασμό έχουμε
98% σωστών προβλέψεων, για τους πελάτες που άνοιξαν προθεσμιακό λογαριασμό το
ποσοστό είναι 34%. Αυτό είναι συνέπεια του γεγονότος ότι το σύνολό μας είναι unbalanced.
Ένας τρόπος για να μετριαστεί η
επίδραση της μεγάλης ανισσοροπίας των τιμών της μεταβλητής “y” είναι να κάνουμε ένα είδος oversampling ή/και κατασκευής τεχνητών
παραδειγμάτων. Μετά την εφαρμογή αυτής της μεθόδου οι αντίστοιχοι πίνακες
γίνονται:
Predicted
|
||||
no
|
yes
|
Total
|
||
TRUE
|
no
|
9.492
|
1.477
|
10.969
|
yes
|
450
|
938
|
1.388
|
|
Total
|
9.942
|
2.415
|
12.357
|
|
accuracy:
|
84,4%
|
|||
Predicted
|
||||
no
|
yes
|
Total
|
||
TRUE
|
no
|
87%
|
13%
|
100%
|
yes
|
32%
|
68%
|
100%
|
|
Total
|
119%
|
81%
|
Βλέπουμε
ότι έχει μειωθεί η ακρίβεια του μοντέλου αλλά έχει αυξηθεί για την περίπτωση
των πελατών που τελικά άνοιξαν προθεσμιακό λογαριασμό.
Γράψτε, αν κατά τη γνώμη σας
χρειάζεται να διορθωθεί η ανισσοροπία στο σύνολο δεδομένων. Αν ναι εξηγείστε
γιατί. Για να βοηθηθείτε σκεφτείτε την περίπτωση όπου θα χρησιμοποιούσαμε το
μοντέλο για να αποφασίσουμε αν τελικά θα συμπεριλάβουμε ένα πελάτη στην
καμπάνια μας ή όχι. Ποια από τις δύο κατηγορίες θα μας πείραζε λιγότερο να
προβλέψουμε λάθος; Τι θα είχε μεγαλύτερο κόστος; Να μην επικοινωνήσουμε ένα
πελάτη που κατά πάσα πιθανότητα θα άνοιγε προθεσμιακό λογαριασμό ή να επικοινωνήσουμε ένα πελάτη που δεν θα
άνοιγε;