﻿1 00:00:16,309 --> 00:00:22,070 Hi! This is Lesson 2.2 in Data Mining with Weka, and here we're going to look at training 2 00:00:22,070 --> 00:00:27,710 and testing in a little bit more detail. 3 00:00:27,710 --> 00:00:29,369 Here's a situation. 4 00:00:29,369 --> 00:00:34,519 We've got a machine learning algorithm, and we feed into it training data, and it produces 5 00:00:34,519 --> 00:00:38,379 a classifier -- a basic machine learning situation. 6 00:00:38,379 --> 00:00:43,620 For that classifier, we can test it with some independent test data. 7 00:00:43,620 --> 00:00:49,820 We can put that into the classifier and get some evaluation results, and, separately, 8 00:00:49,820 --> 00:00:55,159 we can deploy the classifier in some real situation to make predictions on fresh data 9 00:00:55,159 --> 00:00:58,589 coming from the environment. 10 00:00:58,589 --> 00:01:03,530 It's really important in classification, when you're looking at your evaluation results, 11 00:01:03,530 --> 00:01:09,029 you only get reliable evaluation results if the test data is different from the training data. 12 00:01:10,080 --> 00:01:14,250 That's what we're going to look at in this lesson. 13 00:01:14,250 --> 00:01:19,090 What if you only have one dataset? If you just have one dataset, you should divide it 14 00:01:19,090 --> 00:01:20,689 into two parts. 15 00:01:20,689 --> 00:01:24,189 Maybe use some of it for training and some of it for testing. 16 00:01:24,189 --> 00:01:27,549 Perhaps, 2/3rds of it for training and 1/3rd of it for testing. 17 00:01:27,549 --> 00:01:32,369 It's really important that the training data is different from the test data. 18 00:01:32,369 --> 00:01:38,759 Both training and test sets are produced by independent sampling from an infinite population. 19 00:01:38,759 --> 00:01:43,479 That's the basic scenario here, but they're different independent samples. 20 00:01:43,479 --> 00:01:44,950 It's not the same data. 21 00:01:44,950 --> 00:01:49,479 If it is the same data, then your evaluation results are misleading. 22 00:01:49,479 --> 00:01:56,479 They don't reflect what you should actually expect on new data when you deploy your classifier. 23 00:01:57,060 --> 00:02:02,600 Here we're going to look at the segment dataset, which we used in the last lesson. 24 00:02:02,600 --> 00:02:09,600 I'm going to open the segment-challenge. 25 00:02:09,759 --> 00:02:12,640 I'm going to use a supplied test set. 26 00:02:12,640 --> 00:02:19,110 First of all, I'm going to use the J48 tree learner. 27 00:02:19,110 --> 00:02:21,530 I'm going to use a supplied test set, 28 00:02:21,530 --> 00:02:25,579 and I will set it to the appropriate segment-test file, segment-test.arff. 29 00:02:32,879 --> 00:02:38,579 I'm going to open that. Now we've got a test set, and let's see how it does. 30 00:02:38,879 --> 00:02:45,510 In the last lesson, on the same data with the user classifier, I think I got 79% accuracy. 31 00:02:45,510 --> 00:02:49,140 J48 does much better; 32 00:02:49,140 --> 00:02:55,989 it gets 96% accuracy on the same test set. 33 00:02:55,989 --> 00:03:00,670 Suppose I was to evaluate it on the training set? I can do that by just specifying under 34 00:03:00,670 --> 00:03:03,049 Test options Use training set. 35 00:03:03,049 --> 00:03:08,069 Now it will train it again and evaluate it on the training set, which is not what you're 36 00:03:08,069 --> 00:03:12,319 supposed to do, because you get misleading results. 37 00:03:12,319 --> 00:03:17,739 Here, it's saying the accuracy is 99% on the training set. 38 00:03:17,739 --> 00:03:24,640 That is not representative of what we would get using this on independent data. 39 00:03:24,640 --> 00:03:30,540 If we had just one dataset, if we didn't have a test dataset, we could do a percentage split. 40 00:03:30,540 --> 00:03:31,900 Here's a percentage split. 41 00:03:31,900 --> 00:03:37,219 This is going to be 66% training data and 34% test data. 42 00:03:37,219 --> 00:03:40,200 That's going to make a random split of the dataset. 43 00:03:40,200 --> 00:03:47,019 If I run that, I get 95%. 44 00:03:47,019 --> 00:03:50,160 That's just about the same as what we got when we had an independent test set, 45 00:03:50,160 --> 00:03:52,009 just slightly worse. 46 00:03:54,109 --> 00:04:01,109 If I were to run it again, if we had a different split, we'd expect a slightly different result, 47 00:04:01,819 --> 00:04:08,640 but actually, I get exactly the same results, 95.098%. 48 00:04:08,640 --> 00:04:14,719 That's because Weka, before it does a run, it reinitializes the random number generator. 49 00:04:14,719 --> 00:04:18,220 The reason is to make sure that you can get repeatable results. 50 00:04:18,220 --> 00:04:22,120 If it didn't do that, then the results that you got would not be repeatable. 51 00:04:22,120 --> 00:04:27,940 However, if you wanted to have a look at the differences that you might get on different 52 00:04:27,940 --> 00:04:32,560 runs, then there is a way of resetting the random number between each run. 53 00:04:32,560 --> 00:04:37,880 We're going to look at that in the next lesson. 54 00:04:37,880 --> 00:04:38,630 That's this lesson. 55 00:04:38,630 --> 00:04:42,440 The basic assumption of machine learning is that the training and test sets are independently 56 00:04:42,440 --> 00:04:46,729 sampled from an infinite population, the same population. 57 00:04:46,729 --> 00:04:52,750 If you have just one dataset, you should hold part of it out for testing, maybe 33% as we 58 00:04:52,750 --> 00:04:56,009 just did or perhaps 10%. 59 00:04:56,009 --> 00:05:00,550 We would expect a slight variation in results each time if we hold out a different set, 60 00:05:00,550 --> 00:05:05,669 but Weka produces the same results each time by design by making sure it reinitializes 61 00:05:05,669 --> 00:05:09,449 the random number generator each time. 62 00:05:09,449 --> 00:05:12,389 We ran J48 on the segment-challenge dataset. 63 00:05:12,389 --> 00:05:16,080 If you'd like, you can go and look at the course text on 64 00:05:16,080 --> 00:05:18,180 Training and testing, Section 5.1, 65 00:05:18,180 --> 00:05:21,380 and please go and do the activity associated with this lesson. 66 00:05:21,580 --> 00:05:23,180 Bye for now!