Μαθηματικά της Αγοράς και της Παραγωγής - Θερινό Σχολείο 2019


Σημειώσεις από την παρουσίαση στο Θερινό Σχολείο «Μαθηματικά της Αγοράς και της Παραγωγής» 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 και η συμμετοχή σε σχετικές κοινότητες. Για αυτά τα δύο χρήσιμα είναι τα:
b.    https://www.meetup.com/ όπου καλό είναι να έχετε κατά νου τα:
                                          i.    https://www.meetup.com/PyData-Athens/
                                        ii.    https://www.meetup.com/Athens-Python-Users-Meetup/
                                       iii.    https://www.meetup.com/Data-Science-Athens/
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
Εικόνα 2 Εντολή για την εκπαίδευση του μοντέλου νευρωνικού δικτύου
Έξτρα 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 συνόλου δεδομένων.

Εικόνα 4 Αριθμός πελατών που άνοιξαν ή όχι προθεσμιακό λογαριασμό
Η συνήθης διαδικασία κατασκευής ενός μοντέλου είναι ο τυχαίος διαχωρισμός των δεδομένων σε δύο μέρη με το ένα να λέγεται 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%

Βλέπουμε ότι έχει μειωθεί η ακρίβεια του μοντέλου αλλά έχει αυξηθεί για την περίπτωση των πελατών που τελικά άνοιξαν προθεσμιακό λογαριασμό.
            Γράψτε, αν κατά τη γνώμη σας χρειάζεται να διορθωθεί η ανισσοροπία στο σύνολο δεδομένων. Αν ναι εξηγείστε γιατί. Για να βοηθηθείτε σκεφτείτε την περίπτωση όπου θα χρησιμοποιούσαμε το μοντέλο για να αποφασίσουμε αν τελικά θα συμπεριλάβουμε ένα πελάτη στην καμπάνια μας ή όχι. Ποια από τις δύο κατηγορίες θα μας πείραζε λιγότερο να προβλέψουμε λάθος; Τι θα είχε μεγαλύτερο κόστος; Να μην επικοινωνήσουμε ένα πελάτη που κατά πάσα πιθανότητα θα άνοιγε προθεσμιακό λογαριασμό ή  να επικοινωνήσουμε ένα πελάτη που δεν θα άνοιγε;