Hey, welcome back to data mining with Azure Machine Learning Studio brought to you by Data Science Dojo. r_break r_break So today I’m excited. Today is the day where we get to build our model. So after all that work that we’ve done, we finally get to take our data set, feed into our machine learn model, have the model iteratively learn by itself from historical data what are the kind of things that brought together the circumstances for the results, right. So basically whether or not a flight is going to be delayed or not. What are the factors that will contribute to a flight being delayed or not? So we get to answer those questions soon. r_break r_break So listen let’s go back to the data mining framework and remind ourselves where we are in the data mining framework. So the last video we sent up a train test partition. So we have a model ready data. So that 70% of the data will be the model ready data. Today what we’re going to do is we’re going to select an algorithm to train on. And then the next thing we’re going do is we’re going to build ourselves a model. And then we’ll leave evaluation for next time. r_break r_break So to iterate further where we are in the methodology of the train test split, so where we are right now is we’re right here. So we’re going to build our model. And then we’re going to see what’s going to go on today. And for the most part, we’re going to ignore that test set today. It’s not until predictions that we care about the test set. So let’s go ahead and go back into our Azure Machine Learning workspace. r_break r_break Last time what we went ahead and did was, we split the data. So 70% went on the side. 30% went on this side. The 30% we’re going to basically ignore for a while. We’re going to pretend that it’s tomorrow’s sales data, tomorrow’s flight data, for example. r_break r_break OK, so the next thing we got to do is to train a machine learner model in Azure Machine Learning, you have a module called a Train Data. Just go to your top left bar and type in the word training. If you don’t see this bar, go ahead and minimize or expand it out. So you want to type in train model. And then just drag in this train data model module. And then what you want to do is, you want to hover over the output nodes. The output nodes will tell you what it wants. On the left side means, it wants an end train model. An end trail model means an algorithm, right. r_break r_break The model is the result of training. And then the model is the applicable form of the algorithm. The algorithm is just a blank set of instructions on how to build that algorithm. r_break r_break The next thing is, it wants in a data set. So it wants to learn from the past here. So notice that we want to give it the training set, the 70% of data. So notice if I mouse over this data set, it will connect here, as well. But also notice if I’m also over here, it will accept it as well. So notice it just wants a data set. It doesn’t matter which one. But you know and I know we need to give it the training set. So go on and connect that. And it’s still not happy. It’s still not happy. It wants an algorithm. Now what we’re going to do is, we need to select an algorithm. So if you go into AzureML and look at – You should actually just close all of the extra features for now. r_break r_break And if you look at just the tab that says Machine Learning. This is where all the algorithms inside of AzureML is kept. And if you open this out, there is a thing called Initialize Model. Go ahead and expand that. Now we get into this four families of machine learning models. So once you identify what your machine learning problem is, you will find out what your machine learning algorithm type you need. So there’s four types of machine learning algorithms inside of AzureML. r_break r_break So the first thing you need to figure out is this a supervised learning data set, meaning do you have labels. Labels being what is it that you want to know from the past? In this case I want to know if a flight is going to be delayed in the past. Do I have that in my data set? Do I already have whether or not from the past this flight was delayed or not, yes or no. If it’s yes, then it’s supervised learning. I have labels to the past. I know the answers in the past. I know the stock price in the past. So that’s supervised learning. r_break r_break The next thing you have to figure it out is what data type it is. So just because it’s supervised learning, there’s two types of supervised learning algorithms. There is classification type algorithms. And then there’s aggression type algorithms. r_break r_break If your feature– if the response class is a label, if it is a category, it is a classification task. You are trying to predict is this pixel red, blue, or green. In this case, we’re not going to predict how many minutes it will be late by. We’re going to predict whether or not it will be late at all, past 15 minutes. So that tells us it’s classification. Now regression would have been if I want to predict how many minutes it would be late. r_break r_break So there was a column at the beginning that we dropped called, I think, Arrival Delay and that was in minutes. So if we want to predict that later, that would be a regression prompt. So now that we know what type of algorithm we need, we go in and expand the classification task. And then the next thing it wants you to know is how many classes are there in the response class. So notice that we have two classes, you’re late or you’re not late, zero or one. That is a two class type algorithm. r_break r_break So basically we are stuck with these type of algorithms right here. Now if you have more than two class, if you were late, kind of late, super late. If you had that kind of tiering in your data set, then you would have a multiclass classification problem. But in this case, we know we have a two class classification problem. r_break r_break And now this is the cool part, we get to basically go shopping for a machine learning model. This is this kind of nice. This is also the curse of machine learning, because you don’t need to know what these things are. You can drag them in and they’ll work. But that’s not how a good practitioner does things. They should probably understand a little bit before they start doing something with it. r_break r_break So first thing we’re going to do, so we’re not going to really get into the differences between these algorithms. If you want to know the differences, I would join the Data Science Dojo, the five day Data Engineering and Data Science Boot Camp. We will teach you about most of these algorithms. But for now, I know based upon my experience as a data scientist, that this data contains a huge amount of categorical data. r_break r_break So if you visualize this data set, most of it is categories. So if it is a situation where most of your data set is categorical, we need to select what’s called a nonparametric algorithm. So if we have lots of categories, decision trees are really, really good at discerning categories apart from one another. So if we had lots of numeric data, that would have been a different issue. But we have lots of categories. Basically, there are three families of decision tree algorithms inside a Azure Machine Learning studio. And the simplest one is the decision forest. r_break r_break So we’re going to go ahead and drag this in first. And if you want to know what these algorithms are, we might make a video about it in the future. But definitely take our Boot Camp, we will teach you everything you need to know about these algorithms. But for now, just go ahead and slide in the decision forest. r_break r_break So the next thing you need to do is hook up the decision forest. So select the decision forest. And then this window on the side will pop up. If it doesn’t pop up, go ahead and expand it. And what you need to do is you got to connect this to here. So notice that this could have taken in basically any other two class decision algorithm. I could have just put in another forest here. I can connect a decision jungle here. But that’s just showing you as an example. So I’m going to connect this forest and then inside of this forest, there are what’s called two new parameters. We’ll go over these in a little bit. r_break r_break But for now, notice that the training model module is – there’s a red mark next to it. It’s angry at you. It wants something from you. Every time you see this red mark, just click on it. There should be some kind of launch button on the right side that will tell you what to do. So this time it says Value Required. So it’s kind of cryptic. But what it actually means is it wants to know what are you trying to predict. Is this is this a state predictor? Because you didn’t actually take your data set and predict on any column, what type of carriers is it, what is the departure time, what is the departure place. r_break r_break So you can go to Predict and predict any of these functions. So in this case we know that we want to predict, so launch the column selector, we know that we want to predict arrival delay 15, yes or no. So we’re going to go ahead and say arrival delay will be the response class. So now that our training model knows what to do. So now it’s going to cast the rest of them as predictors or as features to be used in regard to the response class, the response class being arrival delay. r_break r_break So the next thing you want to do is you want to look at your algorithm module. So the algorithm module for me, in this case, is a two class decision forest. Once you click on it, you will notice that there is a toolbar that pops up on the right hand side. So this toolbar will go ahead and let us tune how will the algorithms belts guide. r_break r_break These are knobs and levers. So you will see that the number of decision trees right now is eight. So I want to build this tree. And I want us to look at this tree and explore this tree, so we can kind of get the mechanics of how these trees work. So we’re going to build actually a very, very bad model. And bad because we’re going to build it to be a very simplistic model, so that humans can understand it. r_break r_break So what we’re about to do here should not be used in production. I’m doing this for educational purposes. The first thing I want to do is I want to reduce the number of trees down to one. I want only to zoom in on one tree right now. By the way, never deploy a single tree in production in the real world. You will regret it. Trees have a habit of over fail. That’s why you want to use lots of different trees. The next thing is maximum depth of decision trees, which tells you how deep the tree can actually grow, so in this case 32. That’s going to be a huge tree. I might not even be able to look at it, even if I had a big screen monitor. r_break r_break So if I want to look at the tree, I will change this to like five or six. I’m going to change it to five. And then the next thing is number of random splits is left at 128. Leave that alone for now. We’ll tune these parameters in a different video. r_break r_break The next thing you look at is the minimum number of samples per leaf node. So basically this is the minimum number of observations I must have after a split, if I want to split on it. So the idea is I don’t want to split and then have all of a sudden one observation in a single node all by itself. That is basically the definition of over fail. So let’s turn this number up a little bit. So I want to make this number 34. So 34 is roughly about 0.1% of the training set which is 349,000 rows right now. So once you’ve set all that, go ahead and hit the Run button. And this will go ahead and build us a decision tree based upon 70% of the data. So remember we’re ignoring the 30% for now. r_break r_break And now what we’re going to do is we’re going to build a single decision tree, max step of five. And we have to have enough representation in order for a tree to split on that decision. And again, I want to state that this is really dumb and simplistic model. Don’t actually use this in production. r_break r_break Now this is so we can actually do what we’re about to do now, which is right click and visualize on the model. So the output of a train model module is actually the model itself. So notice that this guy right here was – You can think of it as an algorithm. You can think of it as a blank set of blueprints to build a model, to build a tree. And the output of this is a model itself. So in this case the tree has been built based upon historical data. r_break r_break So if I visualize this, I can then get a graphic of basically the tree that I built. So this tree notice that it’s got one, two, three, four, five depth. It’s got five depth, because remember, I set that at five depth. Now remember, earlier the default was 32. Can you imagine how basically hairy that gets as it goes down. r_break r_break And the next thing I want to look at is how do I interpret this tree. So the decision tree, what you want to do is think of it as, OK, I want to take in new data set, a new observation, a new flight. Basically, I could print this out and I could read it word for word what it’s going to do. So if I look at this, the first thing it’s going to ask me, the first question that this decision tree is going to ask me, if this was a brand new flight route. Let’s say I’m building a prediction for a brand new flight. Is this flight going to be delayed or not based upon what I’m about to tell it? r_break r_break So the first thing the model is going to ask me is, was the departure time between 1700 and 1559? In this case did your flight leave between the hours of 5:00 PM and 6:00 PM? And if you say yes, you’re one, which means you are greater than zero. So you go over here. If you’re less than zero, you go over here. Less than or equal to zero, you go on the left side. So let’s just say, no, we did not leave between 5:00 and 6:00 PM. r_break r_break The next question it would then ask you is wherever that node leads you. So we’ve gone to the left side. r_break r_break So next thing it’ll ask you, OK, was your flight already delayed by 15 minutes before you even left the original airport? And if you are one, you go over here. If you’re zero, you go over here. So let’s just say our flight was on time at the very beginning of the origin airport. r_break r_break The next thing it’s going to ask you, hey, was that airport Phoenix, Phoenix Sky Harbor? If you click on this, it will say Phoenix Sky Harbor. So in this so far, we’re in a situation where, let’s just say, no, we did not come from Phoenix Sky Harbor. It would ask you the next question. We’re not going to Phoenix Sky Harbor. Sorry the destination is we’re going to. The next thing is origin city. Are you going to San Fran, yes or no? And now we give it a decision, right. So notice that it’s zero or one down here. So notice that if we are going to San Fran, we will be on time. If we’re not going to San Fran, we will be late. And that is basically how you interpret it. r_break r_break So for this, let’s assume that this is a brand new data set coming in. So if you did not leave between 5:00 and 6:00 and we went ahead and said if the plane was not late on departure and it wasn’t from Sky Harbor and we weren’t going to San Francisco. We’re going to go ahead and be late. And that’s how you interpret that tree. Now remember this is a very simplistic tree. And also you never want to use a single tree in production. But that was just me showing you so you can see what the tree is doing, what the model is doing to your brand new data. r_break r_break We have about run out of time. And if you like what you just saw, remember to hit that like button. This will help support us in creating future content for free. Remember to subscribe for future content and share this video to spread the glorious word of data science. And I have a question for you before we leave. Now how well do you think this model is going to do on the test set? Now I have some opinions. But I want to hear from you. r_break r_break I have another question for you. Was your tree different from my tree? Was your tree different from my tree? And if you were paying attention in the previous video, you’ll know what the result of that is. And what do you think that tree may or may not be different? Go ahead and leave your responses in the comments. My name is Phuc Duong and I’ll see you next time. Happy modeling.