-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpredict_flow.html
More file actions
132 lines (130 loc) · 466 KB
/
predict_flow.html
File metadata and controls
132 lines (130 loc) · 466 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="generator" content="MATLAB R2018a"><meta http-equiv="X-UA-Compatible" content="IE=edge,IE=9,chrome=1"><title>Regularized Linear Regression and Bias v.s. Variance </title><style type="text/css">
* {margin: 0; padding: 0;}
body {text-align: start; line-height: 17.2339992523193px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-style: normal; font-size: 14px; font-weight: normal; text-decoration: none; white-space: normal; }
h1, h2 {font-weight: normal;}
.content { padding: 30px; }
.S0 { margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S1 { text-align: left; line-height: 26.3999996185303px; min-height: 24px; white-space: pre-wrap; color: rgb(213, 80, 0); font-family: Helvetica, Arial, sans-serif; font-size: 22px; white-space: pre-wrap; margin-left: 4px; margin-top: 3px; margin-bottom: 15px; margin-right: 10px; }
.S2 { min-height: 0px; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S3 { text-align: left; line-height: 20.576000213623px; min-height: 20px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; white-space: pre-wrap; margin-left: 4px; margin-top: 15px; margin-bottom: 9px; margin-right: 10px; }
.S4 { text-align: left; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; }
.S5 { font-style: italic; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S6 { font-weight: bold; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S7 { margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; }
.S8 { min-height: 18px; white-space: nowrap; white-space: nowrap; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S9 { min-height: 0px; white-space: pre; white-space: pre; margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S10 { color: rgb(34, 139, 34); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S11 { color: rgb(160, 32, 240); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S12 { color: rgb(64, 64, 64); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S13 { text-align: center; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; }
.S14 { text-align: left; line-height: 21px; min-height: 17px; white-space: pre-wrap; font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; }
.S15 { color: rgb(0, 0, 255); margin-left: 0px; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; }
.S16 { margin-left: 3px; margin-top: 10px; margin-bottom: 4px; margin-right: 3px; }
.S17 { text-align: left; line-height: 20.576000213623px; min-height: 20px; white-space: pre-wrap; color: rgb(60, 60, 60); font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-weight: bold; white-space: pre-wrap; margin-left: 4px; margin-top: 3px; margin-bottom: 9px; margin-right: 10px; }
.CodeBlock {margin: 10px 0 10px 0; background-color: #F7F7F7;}
.CodeBlock+.paragraphNode {margin-top: 10px;}
.lineNode {padding-left: 10px; border-left: 1px solid #E9E9E9; border-right: 1px solid #E9E9E9;}
.inlineWrapper:first-child .lineNode,.inlineWrapper.outputs+.inlineWrapper .lineNode {padding-top: 5px; border-top: 1px solid #E9E9E9;}
.inlineWrapper:last-child .lineNode,.inlineWrapper.outputs .lineNode {padding-bottom: 5px; border-bottom: 1px solid #E9E9E9;}
.lineNode .textBox {white-space: pre;}
.outputGroup {margin: 2px 0 2px 0; padding: 2px 2px 2px 4px;}
.outputRegion {}
.outputParagraph {color: rgba(64, 64, 64, 1); padding: 10px 0 6px 17px; background: white; overflow-x: hidden;}
.inlineWrapper:last-child .outputParagraph {border-bottom-left-radius: 4px; border-bottom-right-radius: 4px;}
.outputParagraph:empty {margin: 0;}
.inlineElement .symbolicElement {margin-top: 1px; margin-bottom: 1px;}
.embeddedOutputsSymbolicElement .MathEquation {margin-top: 4px; margin-bottom: 4px;}
.embeddedOutputsSymbolicElement .MathEquation.displaySymbolicElement {margin-left: 15px;}
.embeddedOutputsSymbolicElement .MathEquation.inlineSymbolicElement {}
.embeddedOutputsSymbolicElement {overflow-x: auto; overflow-y: auto;}
.embeddedOutputsSymbolicElement { overflow: initial !important;}
.embeddedOutputsSymbolicElement { width: 100% !important; }
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement {white-space: pre; word-wrap: initial; min-height: 18px; max-height: 250px; overflow: auto;}
.textElement,.rtcDataTipElement .textElement {padding-top: 3px;}
.embeddedOutputsTextElement.inlineElement,.embeddedOutputsVariableStringElement.inlineElement {}
.inlineElement .textElement {}
.embeddedOutputsTextElement,.embeddedOutputsVariableStringElement { max-height: none !important; overflow: initial !important;}
.veSpecifier {}
.veContainer {}
.veSpecifierBox {height: 400px; width: 500px;}
.veSpecifier .veTable {padding-top: 3px; padding-bottom: 4px;}
.veSpecifierBox .veSpecifier .veContainer {position: relative; width: 100%; height: 370px;}
.veSpecifierBox .dijitDialogPaneContent {width: 97% !important; height: 88% !important;}
.veSpecifier .veTable .rowHeadersWrapper {padding-bottom: 0;}
.veSpecifier .veTable .scroller .variableEditorRenderers {padding-right: 3px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none;}
.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper {visibility: hidden; z-index: 0;}
.veMetaSummary {font-style: italic;}
.veSpecifier .veTable .scroller {overflow: hidden;}
.veSpecifier .veTable:hover .scroller {overflow: auto;}
.veSpecifier .veVariableName,.veSpecifier .veDimensionFont {font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px;}
.veSpecifier .veVariableName {padding-top: 2px;}
.veSpecifier .veDimensionFont {font-style: italic; color: #9A9A9A;}
.veSpecifier .scroller::-webkit-scrollbar-track {background-color: white;}
.veSpecifier .scroller::-webkit-scrollbar-corner {background-color: white;}
.veSpecifier .veTable .topRowHeaderWrapper {border: none; background-color: #F8F9FA;}
.veSpecifier .mw_type_ListBase.showCellBorders,.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper,.veSpecifier .veTable .verticalScrollSpacer,.veSpecifier .veTable .horizontalScrollSpacer {border: none;}
.veSpecifier .veTable .dataScrollerNode {border: 1px solid #BFBFBF;}
.veSpecifier .veTable .columnHeaderNode,.veSpecifier .veTable .rowHeaderNode,.veSpecifier .veTable .dataBody {font-family: Arial; font-size: 13px;}
.veSpecifier .veTable .columnHeaderNode,.veSpecifier .veTable .rowHeaderNode {color: #7F7F7F;}
.veSpecifier .veTable .dataBody {color: #000000;}
.veSpecifier .veTable .columnHeaderNode .cell .drag,.veSpecifier .veTable .columnHeaderNode .cell .header,.veSpecifier .veTable .topHeaderWrapper,.veSpecifier .veTable .bottomRowHeaderWrapper {background-color: #F8F9FA;}
.veSpecifier .veTable .columnHeaderNode .cell .dragBorder {border-right: 1px solid #F8F9FA;}
.veSpecifier .veTable .rowHeaderNode .cell {padding-top: 3px; text-align: center; border-bottom: 1px solid #F8F9FA;}
.veSpecifier .veTable .dataBody .cell .plainText {text-align: right;}
.veSpecifier .veTable .dataBody .row .cell {border-bottom: 1px solid #E9E9E9; border-right: 1px solid #E9E9E9;}
.embeddedOutputsVariableElement {white-space: pre-wrap; word-wrap: break-word; min-height: 18px; max-height: 250px; overflow: auto;}
.variableElement {}
.embeddedOutputsVariableElement.inlineElement {}
.inlineElement .variableElement {}
.variableNameElement {margin-bottom: 3px; display: inline-block;}
.variableValue { width: 100% !important; }
.embeddedOutputsMatrixElement,.eoOutputWrapper .matrixElement {min-height: 18px; box-sizing: border-box;}
.embeddedOutputsMatrixElement .matrixElement,.eoOutputWrapper .matrixElement,.rtcDataTipElement .matrixElement {position: relative;}
.matrixElement .variableValue,.rtcDataTipElement .matrixElement .variableValue {white-space: pre; display: inline-block; vertical-align: top; overflow: hidden;}
.embeddedOutputsMatrixElement.inlineElement {}
.embeddedOutputsMatrixElement.inlineElement .topHeaderWrapper {display: none;}
.embeddedOutputsMatrixElement.inlineElement .veTable .body {padding-top: 0 !important; max-height: 100px;}
.inlineElement .matrixElement {max-height: 300px;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer,.eoOutputWrapper .matrixElement .valueContainer,.rtcDataTipElement .matrixElement .valueContainer {white-space: nowrap; margin-bottom: 3px;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer .horizontalEllipsis.hide,.embeddedOutputsMatrixElement .matrixElement .verticalEllipsis.hide,.eoOutputWrapper .matrixElement .valueContainer .horizontalEllipsis.hide,.eoOutputWrapper .matrixElement .verticalEllipsis.hide,.rtcDataTipElement .matrixElement .valueContainer .horizontalEllipsis.hide,.rtcDataTipElement .matrixElement .verticalEllipsis.hide {display: none;}
.embeddedOutputsVariableMatrixElement .matrixElement .valueContainer.hideEllipses .verticalEllipsis, .embeddedOutputsVariableMatrixElement .matrixElement .valueContainer.hideEllipses .horizontalEllipsis {display:none;}
.embeddedOutputsMatrixElement .matrixElement .valueContainer .horizontalEllipsis,.eoOutputWrapper .matrixElement .valueContainer .horizontalEllipsis {margin-bottom: -3px;}
.eoOutputWrapper .embeddedOutputsVariableMatrixElement .matrixElement .valueContainer {cursor: default !important;}
.matrixElement { max-height: none !important; }
.embeddedOutputsVariableTableElement .ClientViewDiv table tr {height: 22px; white-space: nowrap;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr td,.embeddedOutputsVariableTableElement .ClientViewDiv table tr th {min-width : 75px; max-width : 75px; background-color:white; text-overflow: ellipsis; font-family: 'Arial', sans-serif; font-size: 12px; overflow : hidden;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tbody tr th {width: 34px; max-width: 100px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr span {text-overflow: ellipsis; padding: 3px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr th {color: rgba(0,0,0,0.5); padding: 3px; font-size: 9px;}
.embeddedOutputsVariableTableElement .ClientViewDiv table tr th:first-child {min-width: 28px; max-width: 250px;}
.dijitTooltipDialog .dijitTooltipContainer .dijitTooltipContents .alertPlugin-alertMessage {min-width: 12px; max-width: 400px; max-height: 300px; overflow: auto;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar {width: 11px; height: 11px;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-track {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-corner {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb {border-radius: 7px; background-color: rgba(0, 0, 0, 0.1); border: 2px solid rgba(0, 0, 0, 0); background-clip: padding-box;}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb:hover {background-color: rgba(0, 0, 0, 0.2);}
.dijitTooltipDialog .alertPlugin-alertMessage::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 0);}
.dijitTooltipDialog .alertPlugin-alertMessage:hover::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 0.1);}
.dijitTooltipDialog .alertPlugin-alertMessage:hover::-webkit-scrollbar-thumb:hover {background-color: rgba(0, 0, 0, 0.2);}
.alertPlugin-alertLine {position: absolute; display: initial; width: 40px; text-align: right; cursor: text;}
.alertPlugin-onTextLine {visibility: hidden;}
.alertPlugin-hasTooltip .alertPlugin-warningImg,.alertPlugin-hasTooltip .alertPlugin-errorImg {cursor: pointer;}
.alertPlugin-alertLine .alertPlugin-warningElement,.alertPlugin-alertLine .alertPlugin-errorElement {display: inline-block; margin-right: 4px;}
.alertPlugin-isStale {-webkit-filter: opacity(0.4) grayscale(80%); filter: opacity(0.4) grayscale(80%);}
.diagnosticMessage-wrapper {font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 12px;}
.diagnosticMessage-wrapper.diagnosticMessage-warningType {color: rgb(255,100,0);}
.diagnosticMessage-wrapper.diagnosticMessage-warningType a {color: rgb(255,100,0); text-decoration: underline;}
.diagnosticMessage-wrapper.diagnosticMessage-errorType {color: rgb(230,0,0);}
.diagnosticMessage-wrapper.diagnosticMessage-errorType a {color: rgb(230,0,0); text-decoration: underline;}
.diagnosticMessage-wrapper .diagnosticMessage-messagePart {white-space: pre-wrap;}
.diagnosticMessage-wrapper .diagnosticMessage-stackPart {white-space: pre;}
.embeddedOutputsWarningElement{min-height: 18px; max-height: 250px; overflow: auto;}
.embeddedOutputsWarningElement.inlineElement {}
.embeddedOutputsErrorElement {min-height: 18px; max-height: 250px; overflow: auto;}
.embeddedOutputsErrorElement.inlineElement {}
.variableNameElement .headerElement {color: rgb(179, 179, 179); font-style: italic;}
.variableNameElement .headerElement .headerDataType {color: rgb(147, 176, 230);}
.matrixElement .horizontalEllipsis,.rtcDataTipElement .matrixElement .horizontalEllipsis {display: inline-block; margin-top: 3px; width: 30px; height: 12px; background-repeat: no-repeat; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAJCAYAAADO1CeCAAAAJUlEQVR42mP4//8/A70xw0i29BUDFPxnAEtTW37wWDqakIa4pQDvOOG89lHX2gAAAABJRU5ErkJggg==");}
.matrixElement .verticalEllipsis,.textElement .verticalEllipsis,.rtcDataTipElement .matrixElement .verticalEllipsis,.rtcDataTipElement .textElement .verticalEllipsis {margin-left: 35px; width: 12px; height: 30px; background-repeat: no-repeat; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAZCAYAAAAIcL+IAAAALklEQVR42mP4//8/AzGYgWyFMECMwv8QddRS+P//KyimlmcGUOFoOI6GI/UVAgDnd8Dd4+NCwgAAAABJRU5ErkJggg==");}
</style></head><body><div class = "content"><div class = 'SectionBlock containment active'><h1 class = "S1"><span class = "S2"><span class="S0">Regularized Linear Regression and Bias v.s. Variance</span></span><span class = "S2"><span class="S0"> </span></span></h1><h2 class = "S3"><span class = "S2"><span class="S0">Problem statement</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Given datast using regularized linear regression predict the amount of water flowing out of a dam using the change of water level in a reservoir.</span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Load & plot data</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">We will begin by visualizing the dataset containing historical records on the change in the water level, </span></span><span class = "S2"><span class="S5">x</span></span><span class = "S2"><span class="S0">, and the amount of water flowing out of the dam, </span></span><span class = "S2"><span class="S5">y</span></span><span class = "S2"><span class="S0">.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">This dataset is divided into three parts:</span></span></div><div class = "S4"><span class = "S2"><span class="S0">• </span></span><span class = "S2"><span class="S0">A </span></span><span class = "S2"><span class="S6">training </span></span><span class = "S2"><span class="S0">set that your model will learn on: </span></span><span class = "S2"><span class="S0">X, y</span></span></div><div class = "S4"><span class = "S2"><span class="S0">• </span></span><span class = "S2"><span class="S0">A </span></span><span class = "S2"><span class="S6">cross validation </span></span><span class = "S2"><span class="S0">set for determining the regularization parameter: Xval, yval</span></span></div><div class = "S4"><span class = "S2"><span class="S0">• </span></span><span class = "S2"><span class="S0">A </span></span><span class = "S2"><span class="S6">test </span></span><span class = "S2"><span class="S0">set for evaluating performance. These are \unseen" examples which your model did not see during training: Xtest, ytest</span></span><span class = "S2"><span class="S0"> </span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% We will have X, y, Xval, yval, Xtest, ytest in our environment</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">load (</span><span class="S11">'data.mat'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% m = Number of examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">m = size(X, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Plot training data</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(X, y, </span><span class="S11">'rx'</span><span class="S0">, </span><span class="S11">'MarkerSize'</span><span class="S0">, 10, </span><span class="S11">'LineWidth'</span><span class="S0">, 1.5);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'Change in water level (x)'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Water flowing out of the dam (y)'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="A260DF32" data-scroll-top="null" data-scroll-left="null" data-testid="output_0" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1353" widgetid="uniqName_196_1353" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1357" widgetid="uniqName_196_1357" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAYAAAAv7h+nAAAgAElEQVR4AezBC3DVhZ328e/+A7Ve6lIqKHScnqy2P6F4AY1WX2pzKKQGw7pScSSjYKpFUaJT7cULlbJt1y04VIW1gy2eMkUZOqyMS6cDTEygCPUSUvBy7FPo2XNkjME6EdMSwTTsO9kO+6Jrq919Z/wfzvP5JP9hZmZmVmYSzMzMzMpMgpmZmVmZSTAzMzMrMwlmZmZmZSbBzMzMrMwkmJmZmZWZBDMzM7Myk2BmZmZWZhLMzMzMykyCmZmZWZlJMDMzMyszCWZmZmZlJsHMzMyszCSYmZmZlZkEMzMzszKTYGZmZlZmEszMzMzKTIKZmZlZmUkwMzMzKzMJZmZmZmUmwczMzKzMJJiZmZmVmQQzMzOzMpNgZmZmVmYSzMzMzMpMgpmZmVmZSagAO3bs4He/+x2H2717Ny0tLUjCzMzMykvCEW7Xrl1ceeWV7Nixg0PWrl3LFVdcwfr165k9ezb33XcfZmZmVj4SjmB9fX3ceuutnHDCCRzS39/PvHnzWL58OQsXLmT16tXkcjmKxSJmZmZWHhKOYIsWLeLzn/88n/rUpzjkF7/4BUOGDOHUU09lwNChQ7nwwgt54oknMDMzs/KQcIR6+umneeqpp7jppps43N69eznttNM43HHHHcdvfvMb/pyrrrqKiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKI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T4uHMenO9yEIIBIB5yAUAufA9yEeB9/HGGPMxOJhTCbwfYjFOE08Dr6PMcaYicfDmEzgHNTUcJpoFGOMMROThzHpzjmIRsE58H2IxyESAecgFMIYY8zE42FMOnMOolFwDnwf4nGIRCAIIBIB5yAUwhhjzMTiYUw6q68H58D3IR4H3+dvfB+CACIRcA6iUYwxxkwcHsaks1gMqqshHgff5zS+D0EA1dUQBBhjjJk4PMxn3tatW8lYvs/WwkLwfc7I9yEIwPdJV1u3biWTbd26lUy3detWMtnWrVvJZFu3biWTbd26FZN+PCaowcFB2tvbUVU+65qbm8lkzc3NZLLm5mYyWXNzM5muubmZTNbc3Ewma25uJpM1Nzdj0o/HBLRr1y4qKirYvXs3q1atoqmpCWOMMcZkDo8JJpFIEIvFaG1tpbGxkba2NoIgwDmHMcYYYzKDxwTT1dVFTk4OBQUFpOTm5lJaWkp3dzfvZt68eYgIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoiQIiKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIkKKiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCkigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAipIgIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIqSICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIkCIiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCJCioggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgpIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIsybN4/PIo8JZmRkhNmzZzPe1KlTS7r9pwAAIABJREFU6e/v59388pe/RFVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVUFVVFVVFVVBVVRVVRVVQVVUVVUVVU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" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Regularized Linear Regression Cost</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Regularized linear regression has the following cost function: </span></span></div><div class = "S4"><span style="vertical-align:-17px"><img src="data:image/png;base64,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" width="311" height="46" /></span></div><div class = "S4"><span class = "S2"><span class="S0">where </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">is a regularization parameter which controls the degree of regularization (thus, help preventing overfitting). The regularization term puts a penalty on the overal cost </span></span><span class = "S2"><span class="S5">J</span></span><span class = "S2"><span class="S0">. As the magnitudes of the model parameters </span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAoCAYAAADpE0oSAAACy0lEQVRYR+3XTahVZRQG4OdiJBLiyFIn4kD8QQtR1AZqAxs4KZREsTRFQ/xBTSF/MCONiILUsFAyQfxDU0rEiWgqaAROEpRoIjgw0UEqYRooxrp8+3LYd59z9/Gcey6Ce3j4vvV+73rXetc6bXroa+shXM+BW5b5ZybVL+BVTERfXME53K83VWUZx7nXsQ3n8RVGYQ9+x2Lcqge8DHCcmY6vcRIfJYbB+FvMxSp8gydlwcsAT8FeXEsgNyqCf4zNOIpFuNcs4KHYh5EJ9HgucAb8K+bgejOAX8KXWIofk453qgBfxiz82QzgtxPbiBU65tm+iC/wIZoG/DK+x1v4CQuRZ9sHW1MmoqXexV+NMp6BYynI6gSQj9kfBzE1VXtkJf+4qu8oqurQdgfm4w/MxNWCCMNxBKPxHdbgYSOMw5miPbKKXoZ/CgKGDJnu1bJSF+PQan/Zl6dHhcGcqeNOp3lcWanBchouFgTsh914B6cxDzcbAa4MWKtSx+NnDEzaRnWXtst4YL64Kit1V+rRBzkmvfAJwrVqFV92LbLyWTofRtT+5YGH4TBewyZsKUjfEBzCBGxI7va4RppnY3saLlE77WfrBQ62MZ0+x9mCoVFa5jzwIBzAG1UYj0utFgDvp9lcGqzyYB64d0rdilS1K/FvuvAKQvdJiN4OSWoV1AiEyYxN28qn+LuaxvF7xupuxcQZkB4U5hIO9UvJKg7QcLcTWIv/agFHFsZgXXpp2OXgNCzCqerZr97EKbyXJOzIdpkN5Kk0TJdiZC5JBvNbLY0bAcnfzXayMJlOztadjEOeGJuX8voW9XEzGWf6xhL4Qz5wdzJejwVF+nYn40zfGDof4HarGGeeH38AYqA8ahVwbCc7U/+G2XT6mqnx8rSDx9IX7RMsNyI/VgvHYiNVPTnN3QsJNP7gdXhzq1LdJYFmprpLsFZZZs2H/A/YKJMp5SVztAAAAABJRU5ErkJggg==" width="15" height="20" /></span><span class = "S2"><span class="S0"> increase, the penalty increases as well. Note that we should not regularize the </span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAoCAYAAADpE0oSAAAC3UlEQVRYR+3WW6iVVRQF4O+UlCUhFGr10gVECS8IogaFBr6EpGRFaJniBUHxDhGBFgoiiSZiSSiBZUX3eghBuikU+CCkKNFLIGGiLxWh1YMYU9Y6LH//ffj32ZsOwdmPm3+NscacY465egzQr2eAeA0S/2eV/9+UeggmYBpuwyl8i4vtlqqp4vjuQezCEWzHOLyJH7Ac59shb0Ic3zyOnfgCzyeFofg1LMBa7MaVpuRNiKfjAH5OJGcL8I3YjI+wFH90i3g03sYDifTzCnAm/h7zcaYbxMPwClbgw9TH31oQn8DT+KkbxHOS2sCKPlbV3oRtWIeuEY/EPszGp1iCqtpb8GqqRIzUM/i1U8Vz8XECWZ8Iqpgj8C5mJrdHVaqXa3mPOldHb/dgEX7EUzhdgzAWH2A8XscG/N2J4kimGI/s6JX4swYw2pD73qoqbSmOXh1sevN0qQiYr9o4c90+Lp0aKh/FdzWAw7EfT+JLPIdznRCXgH05dQo+w12pt+HuiMvwzCNYlWY62hXZHhPyV3mxqrlKp76RZvSaA7gRLyFSqzRfYM3Dy1iWCEchcH5JGd+LVSUeg/cxEZuwpaZ89+E9TMWLKd0uI/9/LJH8k86GZ/amthzOeO0Sh9rYTlvxTWVpZFMuxFvFhfOUHCovVCW+G+9gRgvFk9OoBW4QRP/iNxQ7Uq7HNjtaEOf23Voukirxzal0q5Nr1+BSAsn9ehgx29GSvH9LUz5UmYQ7kphQ/hiOB15dcmVVvxcb5850oTgcCfV1Zeln8PtTL08WimsvVUcc/03CC+ldFXF5T1oWkVR176u+iMuXSm81mrxAmuRCV0rdhKj6TZl4/TJXf0jzmVbjlLdYPI/i0XA1RLpV6sC6Ny2XcG3Meg6QvNufwCetAqQTxTkyw5TPIpx9e4rMC8Wz+CpHNxUH3g2YhcXFkogIjci8Zqd3m7hxxQaJG5eq0w8HS91pBRuf/xdE5KsppcN4ZQAAAABJRU5ErkJggg==" width="15" height="20" /></span><span class = "S2"><span class="S0"> </span></span><span class = "S2"><span class="S0">term. Let's compute the initial cost</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">theta = [1 ; 1];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Implementation of linearRegCostFunction is at the end section of document</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">J = linearRegCostFunction([ones(m, 1) X], y, theta, 1);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'Cost at theta = [1 ; 1]: %f \n'</span><span class="S0">, J);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="4187F08F" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_1" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Cost at theta = [1 ; 1]: 303.993192 </div></div></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Regularized Linear Regression Gradient</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">The partial derivative of regularized linear regression’s cost for </span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAoCAYAAADpE0oSAAACy0lEQVRYR+3XTahVZRQG4OdiJBLiyFIn4kD8QQtR1AZqAxs4KZREsTRFQ/xBTSF/MCONiILUsFAyQfxDU0rEiWgqaAROEpRoIjgw0UEqYRooxrp8+3LYd59z9/Gcey6Ce3j4vvV+73rXetc6bXroa+shXM+BW5b5ZybVL+BVTERfXME53K83VWUZx7nXsQ3n8RVGYQ9+x2Lcqge8DHCcmY6vcRIfJYbB+FvMxSp8gydlwcsAT8FeXEsgNyqCf4zNOIpFuNcs4KHYh5EJ9HgucAb8K+bgejOAX8KXWIofk453qgBfxiz82QzgtxPbiBU65tm+iC/wIZoG/DK+x1v4CQuRZ9sHW1MmoqXexV+NMp6BYynI6gSQj9kfBzE1VXtkJf+4qu8oqurQdgfm4w/MxNWCCMNxBKPxHdbgYSOMw5miPbKKXoZ/CgKGDJnu1bJSF+PQan/Zl6dHhcGcqeNOp3lcWanBchouFgTsh914B6cxDzcbAa4MWKtSx+NnDEzaRnWXtst4YL64Kit1V+rRBzkmvfAJwrVqFV92LbLyWTofRtT+5YGH4TBewyZsKUjfEBzCBGxI7va4RppnY3saLlE77WfrBQ62MZ0+x9mCoVFa5jzwIBzAG1UYj0utFgDvp9lcGqzyYB64d0rdilS1K/FvuvAKQvdJiN4OSWoV1AiEyYxN28qn+LuaxvF7xupuxcQZkB4U5hIO9UvJKg7QcLcTWIv/agFHFsZgXXpp2OXgNCzCqerZr97EKbyXJOzIdpkN5Kk0TJdiZC5JBvNbLY0bAcnfzXayMJlOztadjEOeGJuX8voW9XEzGWf6xhL4Qz5wdzJejwVF+nYn40zfGDof4HarGGeeH38AYqA8ahVwbCc7U/+G2XT6mqnx8rSDx9IX7RMsNyI/VgvHYiNVPTnN3QsJNP7gdXhzq1LdJYFmprpLsFZZZs2H/A/YKJMp5SVztAAAAABJRU5ErkJggg==" width="15" height="20" /></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">is defined as</span></span></div><div class = "S13"><span style="vertical-align:-17px"><img src="data:image/png;base64,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" width="276" height="46" /></span></div><div class = "S13"><span style="vertical-align:-17px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiUAAABcCAYAAACx38XLAAAgAElEQVR4Xu2dCfx/2VjHP5SitGkPNSmiiDJiSEWTJRTJksqShpAlS4um0rQqKUoUWaqZmFFGikhIGJVlKoVpbNmyJFS00uvNeWaeOe733nPvPed+7/1+n/t6/V7/5XeXcz733HM+53k+z/NcTHEEAoFAIBAIBAKBQCCwAgQutoI2RBMCgUAgEAgEAoFAIBBQkJIYBIFAIBAIBAKBQCCwCgSClKziNUQjAoFAIBAIBAKBQCBISYyBQCAQCAQCgUAgEFgFAkFKVvEaohGBQCAQCAQCgUAgEKQkxkAgEAgEAoFAIBAIrAKBICWreA3RiEAgEAgEAoFAIBAIUhJjIBAIBAKBQCAQCARWgUCQklW8hmhEIBAIBAKBQCAQCAQpuegYuKqkm0u6nqR3SXqgpBtJerCkD0m6g6Q3S3qQpHtJOkPSD0r6YAylQCAQCAQCgUAgEJiHQCtS8vGSTpF0TUk/IOnf5jVz0atvKumZiXh8WNLrJX22pIdJuqOka0l6iaRbS7p8+r+3L9rCeFggEAi0ROCSkn5OEt/1IyT9V8uHxb0DgUDgQgRakBIIyQMknSTp7pLesTHAafNPJGLyYkm/K+lHJX27pBdJ+i1Jb0xWktcl0hWWko295GhuIDCAwGUk/bykt0r6hbCGxngJBJZBoDYpgZBgGYGQ3GODhIQd0i9Juqekh0s6VRJ9epSkW6a+PUnS1SU9I5GXx0nCohJHIBAIHBYCnyvpNySdk+aF/z2s7kVvAoH1IVCTlHCv75B0b0nfI+nV6+vuYIu+QNLpki4l6S6pD18m6Snp7/dJWpPvTIQEd85LB+8aJwQCgcBWEbiKpCdIeloQk62+wmj3lhCoSUq+XtJjJX2/pOdsCQTXVgSuz0rmWky37Iy+KfXnuxNhubikn5J0HUn8H+bdOAKBQOBwEbihpMdLuq+kpx9uN6NngcD+EahFSk5I2gtcGrg/tmrmxPVEZM3tJb1Q+kgVZdOT3E7SayV9hqTfkXR+Er9eVtJf7v9VRgsCgUCgEQKmk7uVs6A2elTcNhA4bgRqkBJcHQjBiETZorDVRsCnJO3Ip6XIoXdK4u9oRj6Q3FLvl3RlSWdKenIiLQhh33Tcwyh6HwgcPAJE4KEvIZIQFzVzQRyBQCBQGYEapASrAmFzuDK26rYBVtOO/HHSi2Dt+UpJT01k5dck/Z+ka0g6W9IrJJ0m6dzK7yRuFwgEAutEADcOmxCi80Lgvs53FK3aOAJzSYm5bV4VobEbHwnR/EAgEBhC4BMl/YykkyWZO3fomvh9IBAIjEBgDin5uJTNFJcNOTxeNuK5cWogEAgEAltEAOsprlsSLKI3i8RqW3yL0ebVIjCHlHyFpLPi41ztu42GBQKBQH0EEL3+ZBK8krvor+o/Iu4YCBwvAlNJCVYS/Krfm5KKxYd5vGMoeh4IHBsCX5N0ZWzKqH0V1pJjGwHR32YITCUlZiUhFJa8JP/RrIXTboy/FxPrWo7nRo2ctbyKaEcgMBuBT5aE8P3GsSmbjWXcIBC4CAJTSAnXkM+DfCQUpfuDFWJ6Yoqa+SLXtuen1PH/XqG9l5BEReFPkPSZkr5K0hUl+eflj1krVhXgiFsEAkeHwLdJ+v2USBF3DpF5cQQCgcBMBKaQks+X9NupJgzp1t82sw3+chZ4UtSz2KNyn3pYyvvHSCL/iB33k/TIhrVqyGsCWaHS8HdlJOWJK7UqTcU4rgsEjhkBmweZXyiv8YYDBYPN1kMlfbWkB6bN3oF2Nbq1BgSmkBJLu05p7x+rtEOAjNw5JSXC2vDjaQcyByNMrCR1o7ieHSQ5u5OkP59z48JrCR8kdPCHJF0/lUEPYVwheHFaILByBExXxxyIto7q4Yd2kL2ahHFstChOiHaQfFTvPrSORn/Wg8BYUoIFg5owuG9uJOlPZ3aFhRuSwIC3CsPsPGqQEppGCnhSwt/AtZPkaEwi/zyz7aWX00eeR6I1CntFGGEpcnFeILBuBL4xFerDjbNGbd1c9L5F0rUk/WzaWP1KKsHxt3NvHNcHArsQGEtKsGKckW52hwrp1dltcOCPJY0z98a6UIuUcG8KBT4pc6X8elLNLyXQBeebpIilu0r6+xiSgUAgsHkErKo4m6rbHNh3zQYUKy8ZbHFN2dxPtNGLN//mogOrRWAsKTHXDSY9rCUfrNgzXDinJ0V7TVIC8bl/cuVYc6lf8X2Sfq+hviSHxnQuTGDsOD5cEbu4VSAQCCyPgLccoyFj/jrUw+ZnKqQHKTnUt7yCfo0hJVYxl0HJgg4xqXm0IiW0EX3JL6dCe9Zm9CVLZ6LFlXOftPt4e03w4l6BQCCwFwTumCyxzC8/LOm/99KK9g8NUtIe43hCqnJbCoRVzCU2Hz3JS0svLDyvJSmhCVdJmo5ru/Y8fQ+VjbGU4K4KsVjhwIjTAoEVI3BNSc+Q9FpJtaMR19Rt5mfc3iTNfM2aGhZtOSwExlhKrizpzFS6u4aeJEeyNSnhed+ahK8+TBj1POJdqgLHsW4EsDShPXpLTzMvk0jf+9bdlb22ju8ePcQ7Jf3PjpZsAceS8UDo7nsru5o9ZKYrocr4LSS9fK9vtt3DqZBMmgaiJCFgcQQCTRAYQ0pQYmNZIJrlXomc1GzUEqSECJ8HJBJibUdfcreVZYAtxZXcATeT9IuS/rP0oo2ehwsOvz3J+t7V0wcWqttLekEFIfZGoeptNt88iyfRZ33lIYZwJKszmxMIPd/Q0kfpeLA8Ik+V9J4GjfwkSY9IEXZEEpLD6dAOi2L81PRtnX9oHYz+rAeBMaTkR1JoWM38JB6JJUgJz8N9gh4Gq4kdpMu/i6RXr+fVDLYEdxQEixDjdwyeve0TIJMk1XuOpDdmXTEhM/78m0s6J2mIyE/DAnHo2Ix9s1+XEgoSGp8fkDkW2Psmks7C34cjkW18R1gbl4pko81jxwPfPNoP3A+128kcikuDHzK78nNIInaf7+nZyUX1L2MHXZwfCJQiUEpKLpnSyjNBtRC50t6lSAnPsvLjLOx2sIDdW9L7S8Hb43lMsg9LFpK15Qy4WnKF1SR4aJgYH0RL5QekBGIGafGJ8XjHmJx/NUvwx1hmYf6Lhib9PQ6N3kez4z0lZejsipwDPxIOEllnkWm7cDRyADHmoOzEUi7QKeOh75q57wstCaGzrazIc9s39fo8M3aQkqlIxnXFCJSSEk8Y2Bn9YfETyk9ckpTsSkPPbnvJybUcnQvPtJ3LuZIeV7gru5QkFu8adX92tRlMb5XyGUAEai1QZJV8SHITjIlYor/kVGCs5nlhyFBJZkrSZ7cw6U95r62v4f1QZgES+2cjHtaHI7dB44MFgkUZ927rY+p44Lt5cCqkN2YclfQHkkuWaFyGhyR2vZ4Lc2bMoD+qnQqCuQk3NJWXGWsvS9bOFpWXGQPfnH7QAuGGOlvSC6PSc8kwX+acUlLypcmce6VGkTf0dklSwvPwmSPcsp0e/8dkhW7hecvAP+kpmNj5QQeDULHruHqyErDL5e8UDGxFJnk+44jKzJdPode1CAn3JmvmdZLrcKxZnLw6WG4I18yvxUqGaO9YiAmCT8gdVqWxkV99OPKOsEKw4INn7l6bNMh7LpozHu6e9Ei1i4jynaFZQdd12wOJTvFubtxzb5Z0UkVScnFJFDVkTFIXzFzqEFwsTmwoarraECI/Km1usJIyzzMvoDnCQk7V57UevAs2eox99JxPKdyMrqk/X5hwfsUOi/cFbS0lJRb2xiLI4tNCfb00KQGEXfoSdtH/uKY3mtpigjOSNA3V2mBXgAiR9Nd/0/C90TR2VHzYaBFqazjQMmHpyK1z7KogHIxNdlrnpQ/3Q+69QabJSkkhsa5oHMjdFZLLoiaRWuHQ+QixIy8P5CHPpQFBg7heI1m4yEXk3TtDOCKAZNIkVBT3T8uKuXPGQx8Gc94ZCx4LBRuArz2A5GJodtDGMFasLAdFB9l01MjFwv2RAZC+no2hWactkolvmjm4luXNxieiZEp+MBeYxZnnMHeR9XutB2vuk1PjeB+0+V8LGgvx+6y0CfHzYsGl1U6BjCD7wG1MRN9gksFSUrKEeXIfpATk15CGvmQE8K74oEhTX1KVlEWbxYVJvKWvG/M9C9JvNrAwYdplkWMn1RVq6UWG7LqelgHJmKJtZAjuihjg/g+X9CcVJ8CSd7mPc3ArfE7aHXY935KA4eJh1+iJxRCO3A/8wbnVpoVnzB0PkIdTUwLDkkm99D35uQuiC0HZ6uFd27h7zXKMtYSDOWXO4e/P9+p1fLxfrBdYtGomo2PT9KxUxsS7nyBHPJN+jrXCzsFg7LVsCpgDschhWUKMXkr8eW9sOJjnXiJpKXLy6Wm9ghhdLr1n+l2NlJiQq6XQaV+kxBZ7FlV/4B4p1WyMHWRTzrdS6X9dWJ0Z3ztkhJBh0uzzkbc4IEkU7arta6atjAkWSD7ELuucTWLsgLsWQ0yzCIIx2+4SBOPLZjGFydfWGrTAe+o9mZxevyMVumVrZkfDooqP3R8lOFptFIrTdbnLprbbXzd3PLATx3rIbv9tNRqU7uG/tcFJd+JzEWjjemO8YsFolQ/FJ5m0HE4sgEQX8aeRkkukhXyshdHrVPKM2p6U4A4zq8ZEyC64zCJHW5RHmdu20utZ3BkDHyi9IJ13j+Si5htm/cZdjf6pNTmB8PEMfizHGZbtwe+j1FJiu6iWO+59kRLenQ97s3dOGnofzTFyLFQ/3eoOlWpDzM/9eZJu2sikbEQJa8bcitFdgA0tQrYQYgXpipyySY5xu6teBx8rpIUPdcglVv2lLnjDPlJi2ZrBG9PwW7N2leBodWBY1FqVt587Hoaun/o6/GJas26Xb49/RisXEVZPFm4E676auj2b3Da4ddgF4xLlux+TpNC7y3HZ5BXTfR9rbYB9faItk5KpY5PrTM+BBcrICbmtmPPGksop7fDuzWqkhAnttDRgW+yIbVfcoiBfKYhXTJaFfaeh72qvuWIQFLKTLUleZNatlhEBJNRjPLSKOBhaRIyodbkcwBEfMpYSyEbfzpKPlfIJWH1qmvVLx94S5/WREiOwz0wanDzyoRRHxsGjG5LgueOBRRczNi4cNh21jkMgJT6xZC74t/7h/sOiyCYHLMdYX9kAU/eLYqS76o4ZOcaCUouU+HdzrKTExnlOThD8Yjl5buPoo82SEvxe+GIhB49M6usWYWF9ExF5LQhtxAJgRxejrzWZld4HsRK7fXyfJSZNvzuo6Zv17bVnEMVEBFOLjLIshpjbcaPl7pchl4MR3T73j/UH9w9Csls3NIuXvutW52HtZILuKqRpBHbXLmaIDFibTRDPLmzMglXa57njgckRVyDi75oJwPz31iqBWmtLCRseXCbspPPSG16fhguQgAfG05hgAL8w7ZrfvbV8rlUeN9GLBgZWPt5xkSD2xkKOAJ55F9ccBIn5gSSbXW4PyBqbGtYPLEgQNkS8Jyf9B3PY1Egi3jvW7i9PgRmskVPv5cmJF58iCYCc/FEjcrIpUsJgJ8wM3QPiTczxHKStBvznJ7N7zV1N3zjtSkO/htwltpNl0mDCGBI5mYr9G5wPj0Wc+xAhgwvolUlrMjX5mj2DqJiSBQhsCSkn6yq5AhAY87GySEA+mRBumf7NJI/VgqKP+LAZB7l7yHZVnMsHxoLFhOmxGYoasbFgbiAW7DWnCfdRMicmXy2uEp93hEmMCZFFw4cPYlW6Qcf4sQWVCRVdDpPuP2WT01gc/65AY4TLFC0SrgImdCZyQoopbsfB4vig1AfePe45csrMGQ+tom9ob2trcktS4nUk3m3j50oWFiyObD6wNI0pyMrcg0WVDR7HLhe01x4QGlxjs1NqKWG8odXhG2GskS8F8esJ6XtifaJNvGfLbXT9NIcSqmtuEaKJIOVmcZ8a+Qg5Yp68iSSew1E7m3oeGQM5oe2Qk67kiqWbh/y86qTE7wJqgzK1ky2vgxmzON0mDcLa8fJT2m51h0qz6ZraHB8wptB/SGZXdgZMJlgEWIjnWFGMKLEzKEmmx0cL46dNtIMPnJ0W7WMR46OnXYw3CAv/ZoKk71/SQXwsdw7uKRLJkXuDHY1X0YMDxIxFuk9dbwSH9pSQvinvsMY1l075degXu03eYb7rJPwR0TYEw4cPci4Emx+vAzCRJpmMz5LEM8jm6n3NY3FEc0BdnL4aRSjyOUjIxUQIubLdMcSIuYYFhcmdRQCSBVmaMx6wCHHgJq59bJmU1MYiv59pz7Ac4CrgXXaJyi3Kk+shCIyBuUcJKTFNIQS5K08V8xbWWjbPzFusCQhOLXqHCD/6xOaZ+QitDPMd4xqrBiSn71vo66O3+LSK7MrJCfMxBJJN8FyrDH2rTkqW8JfOHXg1r7ddA4snWoPaeTemtJVdBr7w0kFJux+TBhXqa+r6sFBgmeBA2MkiMIeU2AQyRXRnhAZXHX0C6101VJjQWEixqHi9B6I5wuS+OInvWFD9QsrujMkDK0tf4TnwsDGO5Q5L0liF+5R3Ouca75/v2olhdWDHhlrfimfSNyZ6iJvHgwmZcQAh/Ok0bvwuaQqOu6KhdvXZxiu6H8YlBQOpBG2p7v11U8cD7xgRKoTtDXPA33FtkJLdoJr2izP6NrY2z3FeqaB/6FWWkBKrHs+3scs9Tsg7kWVY8fMcKvbuIVpYe4fmm6E2+9/bhtQ2cFMt2yXPzMkJEY+4dc6cSU6ClJSgv+McU4fDjNdUoM8GfQkByEkkEzCLBEnEYL1+gJRaXrrgYtdJmCCWjrEfihe0kauAdkE88qgPnsuiSF0bMoWOSY+O2RVrC2RuSJtktZ2wyNCvmnqDGcOx91Kq9ELEINFdWhB2bvjovWsNMshub0yCszE4+rwxJWPVOmhaFAgHVkqsXpDQrsiAqeMBdxfuIsh6i5wUQUq6h6tpv8bkN6FuFpbqvDzElG9piJSgieN7QITbR5jY/ECSsdzlgll797XEudZPj92YpGlTcOIa5gvmWuZiEp1h+cEKhJVoTJRV/vzqpORY3DdmwmPSXlMo8FhfsukjrptcEQwIXCxm8THmDeOfEyrM4o3Pf0qyLC+cox0QGyoA7zp4N1h8yLpYYga1jJGQmNLCgEwsmErHkBITiE6dBLhuzOLtnwMmiHjRYeQWLyuhwA7H79qY5MCaHB27QqT9M6biSKQeLrg838kunLwGCstWV1hy3vcx4wGsMKE/oaHlswYpsXvMGU9TNQxzntl3rd+A9LXNz1tYQBEj13AdDJESrIpnJFFqXzi3pQ5gbOKC8u7JVqTEP7OldCInI1hIICO4U2sUqK1OShhwNT64VoO+xn1N4IovEOtBl9m4xnOm3GMoQVh+TzOVstijJfEWH08GhkKFGaiIH9m9srDnRavmkBLabKmTyTLIBz4kZsaKhWmU6Ki+yYqFF3MsLqExYrytkRIwNLdH/i6xorBom3UsJxpYViAlfdETc3CElAzmI3CN8lXIS12KpeOBb7ukv1O+TX9NjTnyEEmJJxt9ETXmHgFTXIm16hMNkRK/YPaREm8FzMlVK1JiujksiaWu+zHjOCcjtbUk1pYgJWPeSnIPYObHrOvrMIy8TbPTx5CS3FSaZ6W10GIU3buYN/cgGgLlOxoEFneEgSx8hDtadMsc9w1g4VKitgX9K7XYYFKk/gaTwq4DvyjZJl834o0YxogvS+tKjLh9s1PN7YE41TCEeGIZI3pgl7uLhZp6QeC4y7U1BUe/gRlDShhzWN3wX5PyvzT5Wsl4IJQSd1xLbZgnVVtOntZioPqIml3YeKtfnxCW9vGtQnpxo+BqGMrZNIaUDBFiIx9LkRLbYNbWk2AdYkODhodvqBUZCVIy8Yuy2jf47NYQaZN3Ywwp8aZSImJIdOQrCXvfPXkJ8jBbFgcjLKRmZoFgwuVjZXLHooEAkWOO0NVHOHGvOdqWia/9IpcZxvxnq+SANdqZ38OTTMMQ3QhktMtK0qIN+T1t4h5DStB7oPRnV117Al6iz0sEA4x14y7R75Jn+OiRXWOC1PlnJ6vs0LgBBzQg6IMY80Te9R1DpMTnRhlKbW9jO9d3tLKUmPC3lp4kJyOtQoDz99HEUjI3zTy7bBb/mgcpcgn3nHNYpA2q/zUSEtsZQApKIhr8y0dFnqdNH8ryanhg2icXAVEY9lHjyvGi1rEhwfaezFUG2eEjITpk35kWbWLC3YM1qIUQcs443XVtrvfC+kX7meBL9Ry12zWWlOCGocAYBJmdL1qooYWpdpvn3s8vfLVCWfM21SQlLcb3rvl4iJT4fpEjqKtcxJz3M0RKvEu7jxD7++RW5hakpKaeJCcjS2VytffWhJTMLci3RlJCOCpCQRbetYT+dn18YyYjE7F2qde7srzirrisJAapPQcLCEJfWDSHWV8oy+5Jie3SEaiWJE+zvkFuaCf6HdOIeE0EmRQxKeJ+WOow3y15BbZW4dU2DOzyCFnEGgahHIo4aoWtTdAlQlcIKpsBIqtw5ZEbgW/RJn3ylZA4CuFdS/fLXCyWKMg3Zh4Y6s+SpMSH/3eRTQvHzfVvQ30o/f0QKeE+zHlkbEU/h9u6q6CkibFZYPOilS1IidfizCHpzOVEIDKnEh20ZM2bpqTETPVD4sjSgbLv89Ya+rsLl5KQYM/4uwRlXmXOREDKZLQH1IZhwrcPk2x+mA1NTGofI23zNW7seQz2PpcHkwJWEULK+KBZcNAPsCvJiwbiH8ZfzDksVEsd+G7ZrdcKQ1yq3TwHC5pFLhGajbB5TPrvmm0dCgnm9yR3Q5fE+ELLZeHqtjlA22W6EgS7uBkZE7tIltWzIaMvbqt9hHN7F0Ct/BotLSU13/nQvSBsWGxJTJan4DfLLDmUeHd91j0iyihFwpgwPRShqkPVbktIic/kzbzYlQ7CNuZdGb5bkBJbc+e6M2kbuEFMCCoYwmvofU75fRNLiU18pPGeEgI6pSOtrtl36C8WB5JzjVk4LMqiT4Ht9QX377BeeD0JgjOEjCzEr0pZVEmsBrlABU/uEDvsuuclV4uPVye9skVadCWk8tlFEVNxYJ7F1MvhJyw+GJKjGZNv9f7z+5o4mBwltcIQl2o7z/E7KgSiiJJb7IRL+jSkfyJ1Nq4liOx5KUMrUUJmBfHaAiwn1Hpi59pnJbHKtlgC0RiY5qmkvbXO8VESU0O8h9pS01Iy9KzavzdrCOHepnNDAMv8w4H+aUgbwnl8q7h7CVfN56ldbfbzYp+IGnwZa1juIEfkLWG9o/wFLijaSkQQ1jyfXNDnOakZjm16kjHC7xwD2k7/yfuzDzJi7UGET7FPjl2WqAvazksuOYzpYFpn5zIm1LLk/kuds+/QXwY+g56skl1plnfhYCrsPkFoVySGvx8TJ7tQWDNmflKvmzXCrCFYkMht4T86GDs1GPCV50m3jFQQptsVwgfefNy4akiExC7jnGzRJPyPqCcEuSTMYuJaclHFZEteBNJHsxBu7bBdOinYvYVrH/0wV9+uNPOMLyZ13HeYyyHHRHfZwfdBQj5cUkzG/P3N++jIyGeaxY/NRqtN25ZJCYsjblu+f0oGMPdBJtGQ8L2XuhrNOst8NIQzizFzC7W2+LEDSzA/EI88h5HVB0PbxJzLYs5cyMYNq8xr3NxEWwgKwILC/dGAcOD2Ju8JgQaQmilHn35lyv32cQ1kjXcOIcUCzUaEg/fPfEuxRGQDYHyRo5SULGGebA0cfd1n6K89n4mZ8t1jFt6xBfnGYmmEhg/Ju2Ls42ARyf2o9gwGHbiy4/Vp4Me2YV/ns+OiD7UFdkv1h0yT+MCJlipNFNeqbWa1QR+whXT9tXAwU3ueVKvW/bkPLlDIPdYkNgiI84/tMNKL+w+LyT5cdUtg7pMJtnIHLtGPSc8oJSWeue07fHNSR1P0DxlB9xH6a6G2uCZg4WNrI5iQDpZptUym4tB1nQlkc2uIpTLHuoHZ7b0dF+MOI78E0RNbszRQchyxM6bZkgynNTGvcS92I9SrAfu+jLg1nlVyDyO3jPMx4ueSe+fnsDNFW8AYJTwUoS/f9j4O0xuwmz4mMrY01rY5w8rmcyYt3Y7Wz7OCqri8SxJL9rWnRkK+Vi7JznaXkhIuZieGyb9luttWL3ufRfYsRTqmatwmU3QLmAoxZWO2xGIxlDBoLI42qXrCyTNxNaFn4Qfl9q6DSCYWIhOwjn3+Ps43Vx6l2Km0O8ZytY/25s80yxsRVIjYuurELN1OxtGjRyTDm9s+kuQxH0Gqcfnsw63sxb2tEqfNxelQrrfNU6meZCv9Zi5iHFExmz+xVuPmpF7QXPJ10KTEBkRfquA1DgKLtMHaAyEYIzCd0x+eh6+RhZqdHEdX7pDSZyAqRYCKnzRPelZ6j13n2bv1pIRdCTsSQmTRknidSdd92CUzWSCYJcX9mg+zXJEQDktJqU97n33CdM07wU9N7Rr82Wtqv4WcswEozcg6F0/L5QA2eaLAufcuvZ6oHyxtfNstUoGXtuPQzzM9CWkEthglt+v94PJEY4E1HKsIehuilXDh8B0ttV6tZvyMsZSY6YyCaHNNSksBwKSFawEzb+uqv0zKuAN4FhYNL+6hv4Saob2YWjbdRKWIrWC/lu69BpZWAZMIG+6NSIyEZlTt5d+4jUoO+g5pguWXXlNy35rnWBp9Fk/ErVsgJGYp412QswNXE+MojwSoidPYe5meBGtgV56HsfcrOd+eibiQCI59vEvz/5PvZ0rF7JJ+xjkfXbTZEBORdUh6EnN54hq/bdp4IPhHFMwmdGsW3NljdQwpsdAq/F2ltUpmN3DGDSz0955pt//KGffquhQSwiLMTonJkQilvmOorkJJ8+6adoRzyE3Xc6z4GlYdihESrkeILhqRsZU6EUWjti+p5lvS59rnoMM4Ie1A9hkmN7ZfLHjklCHKBlcZ+ok1tR8rGfqWJXexFnjrySMAAAkQSURBVJU2xwI59j3k59uiQjjoUhaiuW3e4vW2KabScx4FuMX+WJtx3TCvQ7Qg11jY+c5Zr46OkADKGFLik3OtXezqk+GsYcDiziB50K4CaaVtxBLz2BRulqeQL71HnBcI1EaAfDTkjsCKt+SCge+dqK996UnA0TLqblFrV3sctLyf6ZUg52sQdbfs61HfewwpASjTHuy7VsnQS6MmDuGtFjs+dH7r389JgJO3jRAxtDF3Tu6V1m2P+wcCQwiQu4jILcbkUpl4TU9CnhmIwZi8P0P9Kf29L91wdKGbpSBVOM9wvlLS7vjcNhVuH7dYEwJjSYklUcOkvxVdyZrwrtEWq5KJGZ+oi5rakhrti3scFwIkwUKbQwK9JUPCLYsqSZj2rSfhm6ztUj2uUfSxvbVs0AjscX0T1YVbg4zAR+nWOJYBMZaU+HwlY3cG6AzQG5BXAD8sSYBwa2CC5U/8/Oy2EEriT8PHhqiPg4mP+H8KE5H5kyyh+wj/W8u4sMqqmMy3mF9jLThGO+YhYG5S7oLodsmwZNOTzClWNq/3kkXEoXMgfH4fQtupfcD6gDiX1P/Mx5QSIdIO97DPwMo8zf8R7sxmlDWDrNAIMYkAOyv9vbaGjLHF2sDzsYwwz5GLZskxNhXbuG4GAmNJCY9C0IbCfqwPFaEsdV9ulgYb96JGC9lN0VswyMkEyf0xzVoJcMSkTHhvSh8Q96ghGp0B2youJXqEhGZkeVxzBdVVgBWNaIIAlYDZnBAVNFYQPadBVq8Iay1huBQiXPrwEVFspLrKLCzdpjHPY/4gvxCbP9xvuL9ukXRBzL0QFQgA8zWbRs6hcjfaDrIfk9iLfjNXj92gjmlnnHtkCEwhJfhwqVlA1MkUF46lZLaP4NLJAmJhrtQNODkV16I+AeSHJDIQFsgIibyClHx0oGJ1gsQRjUESsDgCgaUQYIfNIoYLcUlCQv8s3ThlDfZV78fmQdqzL03L3HftE79hhUA0TMZpXCbU57p2Kp5plWqvmjJjk0gT6zWWFTaJQUrmvom4/gIEppASy/RJdtcpOwSreIv4E8LBB227fV/KnjCpGydLCgWRfD2AfZpsY/gEAoHA8ghQ1ZrNEBoSCqqR9I4dOyUQ9nGY+2iw6uk+Glf4TBMLE8qMe4bcN8yzliHYz9WPT9Vy2TxiObH+16yMW9jsOO2QEZhCSmyHji+RhGBj0qZTVApXDLlDuB5GTgZQKyRm0T0vSKnUEc9ZmXurB4B/MZIUHfKojL4FAh+LAHmHqCbNQopbgV360hWlrVVWrp6Fecm8LLXHhYmFcdVQagHRvLnifGSRJS0j5TmuYnOfYcHeWobv2hjG/SojMJWUIEJigJIllbS/pQXmvLUDjcjdXMy5z4NCN9GYePGcsXbMjCRLel9lLObczkpeEwXwqBCfzoEyrg0EVo/AiUl0yVyElXdLAlcPrlk7sHxgccJ1QxZnjnyuvpPbIHoLC7rA1sUXVz8gooH1EJhKSmiB1UahDkup8tysHQxqCIf/oM1PjBWEbJUQD4tH91E/MHl2THPCwiBAfEwQH+rTzDEBEzWEtQix7hUkLVpRsd5QiDsFAoFAAQK2IUPwyVyF+HOLh7d2QEpw4fiQbstUi3aGOReLtkW+WGoI5rstZPfe4vs52jbPISV8nCzquGJKrCW++iHumlw1b3oSFOF52mircXHdpAKfW5AOUgIhYmfgdwBTBgIuKXZKp0o6LUjJFAjjmkBgMwjYZoy6JFTu3mqIqtXSYjOFVgd9zvvdWzDLNHN17qLybnbIGQUi4wgEqiAwh5TQAKwE6D4QoqKC76sk6y0hXRlhGdzci5oreVSPmRm7flcFiAo3sRLRYSmpAGbcIhBYIQJoSbDS8o1vvYKrt4TkgQPeMp1HOno3e0RBrnCQbr1Jc0kJ/cfiQelu9CF9GR29JSSP2jHhGEnRuvKfQHhQhBuZwaQIIUIQu5aiZEFKtv41RPsDgX4EbiiJKBTyeFC4co4Led9YmyWkq3q5VQ0nJJj8JN4y7TeXkBlSOFDW4y2pyOW++xXP3zgCNUiJVePFxeJ1IDk0Zgnp+gi8eyaPec9FVXwE7FYeOuEjgOVfLSUGIinbeamQWA1iE6Rk4x9DND8Q6EGAvBxsisivhIZu6dwsNV+Ot4QQdZNrAs0902WZts0l+aXIU8OfnI/7us9SXrP9ca8DRqAGKQEedCCEhpE/wAuiDLqhj6Av5t0TFtKqQ1LIUfDyie/FJwwi8Ri+YSNMpbfsypMSpKQUvTgvENgWApZOH/0FEYeWwmBbvbiwtSZUJfFZbrX27pkuN7sRFhKqkdaBTSlauvdsFYxo97oQqEVK6BUpp6mR8JAO06YnFvmC7tM1d8W8I8iCjKDyJr09SdvmVCI1gkSth9ul+jq0D5Nl6UGSIUKa/RGkpBS9OC8Q2BYCzG24qKm/ZXmTttWDi7bWiEVX4jPLVGtZtSEm/kCLcnr6D4rkPW7jVqMtv8eDbHtNUsK9qJRJqC0isLXuJowgnd+hOJ/zkoOUzEEvrg0E1okANWLQkbAx2rqOZJ0IR6sCAYdATVLCbc3MiSCM3B2Y+NZ2mKvofskNRBbDGkeQkhooxj0CgfUgQDVuLAXkMVq6CvJ6UIiWBAILIlCblBgxIVrmpFTgaU0VbC1hELlViBqi4B9HaEoWHHTxqEBgAwhASLCOoF0LQrKBFxZNPAwEWpASIyanpCgXCAoZA9dwWDgbdR0gJlQ6fr2ky4WmZA2vJ9oQCKwCARIiEuGHixed3FYTpK0CzGhEIDAGgVakZEwbljzXClCR3+RcSe+W9OwK+QZ8RE8kT1vyjcazAoFAIBAIBA4GgWMjJZhkn5isIhQUJKRt7i4I4SwaGpT5hNghintCMvtG3P7BfCrRkUAgEAgEAoHWCBwbKWmNZ9w/EAgEAoFAIBAIBCYiEKRkInBxWSAQCAQCgUAgEAjURSBISV08426BQCAQCAQCgUAgMBGBICUTgYvLAoFAIBAIBAKBQKAuAkFK6uIZdwsEAoFAIBAIBAKBiQgEKZkIXFwWCAQCgUAgEAgEAnURCFJSF8+4WyAQCAQCgUAgEAhMROD/Adng/+QZfd/iAAAAAElFTkSuQmCC" width="274.5" height="46" /></span></div><div class = "S4"><span class = "S2"><span class="S0">Let's compute the gradient for inital theta</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">theta = [1 ; 1];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[J, grad] = linearRegCostFunction([ones(m, 1) X], y, theta, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Implementation of linearRegCostFunction is at the end section of document</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'Gradient at theta = [1 ; 1]: [%f; %f] \n'</span><span class="S0">,grad(1), grad(2));</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="A09F55B6" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_2" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Gradient at theta = [1 ; 1]: [-15.303016; 598.250744] </div></div></div></div></div><h2 class = "S3"><span class = "S2"><span class="S0">Train Linear Regression & visualize</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Let's train the model and after that plot fit over data. In this part, we set regularization parameter </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">to zero. Because our current implementation of linear regression is trying to fit a 2-dimensional </span></span><span class = "S2"><span class="S5">θ</span></span><span class = "S2"><span class="S0">, regularization will not be incredibly helpful for a </span></span><span class = "S2"><span class="S5">θ </span></span><span class = "S2"><span class="S0">of such low dimension. In the later parts, we will be using polynomial regression with regularization. </span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Train linear regression with lambda = 0</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">lambda = 0;</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[theta] = trainLinearReg([ones(m, 1) X], y, lambda);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="2E861C14" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_3" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%Implementation of trainLinearReg is at the end section</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Plot fit over the data</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(X, y, </span><span class="S11">'rx'</span><span class="S0">, </span><span class="S11">'MarkerSize'</span><span class="S0">, 10, </span><span class="S11">'LineWidth'</span><span class="S0">, 1.5);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'Change in water level (x)'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Water flowing out of the dam (y)'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(X, [ones(m, 1) X]*theta, </span><span class="S11">'--'</span><span class="S0">, </span><span class="S11">'LineWidth'</span><span class="S0">, 2)</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">off</span><span class="S0">;</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="435B7782" data-scroll-top="null" data-scroll-left="null" data-testid="output_4" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1354" widgetid="uniqName_196_1354" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1359" widgetid="uniqName_196_1359" src="data:image/png;base64,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hjBE/ihAREREpMQEiIiIiJSYABEREZESEyAiIiJSYgJERERESkyAiIiISIkJEBERESkxASIiIiIlJkBERESkxASIiIiIlJgAERERkRITICIiIlJiAkRERERKTICIiIhIiQkQERERKTEBIiIiIiUmQERERKTEBIiIiIiUmIAideTIEfr7+3nmmWfYt28fBw4cYHh4GBEREZGAItPV1UUymWT+/PksXryYa665hvr6ej75yU9ywQUXUFlZyf3334+IiIhMXgFFIpfL8fGPf5wvf/nLrFq1il27drF//3727dtHT08P7s4Pf/hDvvGNb7Bp0ybOOeccnnzySURERGTyCSgSV155Jffddx9PPPEEy5Yt47TTTiMIAo4Xj8dZsGABHR0ddHR0cMcddzAyMoKIiIhMLgFForOzkw9+8IMUDA4O8mamT5/OI488wimnnIKIiIhMLgFFaNmyZXz0ox/l9ttvZ2RkhLfL3eno6CCKIl7t4MGDdHR04O6IiIhIaQkoQh0dHTQ3N7N9+3YqKipYsGABHR0d/CW+9a1v0djYyOOPP851113Hxo0bGbd9+3aWLl1KW1sbDQ0N3HnnnYiIiEjpCChCU6dO5bLLLmPnzp388Ic/5NJLL+Xmm2/GzKirq2NwcJA30tfXx3333cf3vvc9brnlFrZs2cKdd95JLpdjbGyM5uZmNm/ezG233cbDDz9MOp0miiJERESkNAQUuXg8zrXXXsull17KlClT2LNnDwsXLuRjH/sY7s5rmT17Ntu2bWPatGkUTJ06lbGxMUZHR/nBD37AtGnTOOussyiIx+NcfPHFPPnkk4iIiEhpCChSv/3tb7n77rv52Mc+xsUXX0xnZyff+c53cHd6e3tZsWIF//RP/8RrCYKAs846i7GxMbZu3cqKFSv47Gc/y+mnn87w8DBnn302xzv55JP52c9+xhsxM8wMM2PdunWIiIgUo3Xr1mFmmBlmxkQVUITq6uo477zzuO+++1i2bBm7d++ms7OTyspKxi1btoyCI0eO8HpyuRxHjx5lxowZ7Nq1i+HhYcbGxgiCgOMFQcCxY8d4I+6Ou+PuNDY2IiIiUowaGxtxd9wdd2eiCihCp512Gh0dHfT09PC5z32OU045hVebNm0aP/nJTzjppJN4PdOnT2f58uV85zvfIRaLsXnzZk444QTGxsY43rFjx5gyZQoiIiJSGgKKxC9/+UvG3XXXXZx55pm8mbKyMl5Lf38/999/P8c744wzGBoaYsaMGTz77LMc78UXX+S8885DRERESkNAkfjUpz7Ftddey69+9SvezG9/+1tuvvlmzj//fI4cOcKrjY2Nccstt9Df30/Br371K5588kkWLVpERUUFBTt37qSgr6+Prq4uLrzwQkRERKQ0BBSJ7du388///M9cfPHFfPzjH2f16tXs37+fgYEBBgcH6evrY+3atSSTSc477zze9773sW/fPk466SRe7YMf/CBr165lyZIlfPrTn2bhwoUsX76cBQsWEAQBt99+OzfddBMrVqxg2bJlfPOb3+S0005DRERESkNAEfmXf/kXent7aWpq4qc//SlXXnkl1dXVJJNJLr/8cnbt2kV9fT1PP/00a9eu5Y0sW7aMvXv3cu+997J3716uv/56xl1wwQXs2rWLzZs3093dzSWXXIKIiIiUjoAidMkll9DZ2clzzz3Hs88+y9NPP01vby+ZTIbly5dzwgknICIiIpNXQJGbOnUqJ5xwAiIiIiLjAkRERERKTICIiIhIiQkQERERKTEBIiIiIiUmoEg988wzXHPNNdTV1VFXV0ddXR11dXVcc801iIiIyOQWUIQ+97nPceWVV3Lw4EGGhoYYGhpiaGiIoaEhhoaGEBERkcktoAjt3LmTe+65h507d9LZ2UlnZyednZ10dnbS0dGBiIiITG4BRWjKlCnMnTsXERERkdcSUIT+7d/+jX/9139lbGwMERERkVcLKEKXXHIJXV1dzJ07l3PPPZdzzz2Xc889l3PPPZfy8nJERERkcgsoQpdccgmnnnoq3/3ud9myZQtbtmxhy5YtbNmyhQceeAARERGZ3AKKUC6XY9u2bZx//vnMmTOHOXPmMGfOHObMmcOcOXMQERGRyS2gCP393/89L7zwAiIiIiKvJaAIPfDAAyxfvpwNGzbQ399Pf38//f399Pf309/fj4iIiExuAUVo6dKlFHz7299m8eLFLF68mMWLF7N48WJqa2sRERGRyS2gCO3cuRN3x91xd9wdd8fd6e3tRUREZLKIcnla2rLIKwUUqZGREQ4ePMjAwAADAwMMDAxw4MAB7r77bkRERCaDTbsPkdzQQ6o9y//5QifyJwFFaNu2bVRUVLBw4UKqq6uprq6murqaT37yk2zZsgUREZGJLMrl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nymVSvzjP/4jj3fXXXdx9tln86pXvYqOUqnEW97yFu6++26eiZlhZpgZmzZtwrn5LLba1IdzkqFxxvYdoiOUitQqCflgL9W+BOfcC2PTpk2YGWaGmTFXFegSpVKJd73rXaxevZqDBw/yl3/5l6xevZrVq1ezevVqVq9ezerVq7nqqqt4Nv7u7/6Ov/mbv+Gss87i8Q4dOsSFF17I473sZS/jBz/4Ac9EEpKQxHXXXYdz81FstakP5yRD49RGcmb0L1tEY0MP1b4E59wL67rrrkMSkpDEXFWgS4yOjvKGN7yBI0eO0HHkyBGOHDnCkSNHOHLkCEeOHOHIkSP8/Oc/59koFAo8laNHj1IoFHi8QqHAsWPHcM49vW17DpBubVIbyZkRSkWyNUvI1iwhlIo459zpUqCL3HTTTdxxxx1ceOGFZFnGHXfcwR133MEdd9zBHXfcwR133MHtt9/OyTjzzDM5evQoj3fs2DHOOOMMnHNPFltt0i1NBnbsJbbadIRSkVolIR/spX/ZIpxz7nQr0IW+/vWvs2jRIk6Fc889l+9///s83qOPPsqb3vQmnHP/T2y1qQ/nJEPjjO07REcoFalVEhobeqj2JTjn3AulwDyzbNkyOu688046HnroIcbHx7n00ktxzkFstakP56Rbm9RGcmaEUpFszRKqfQmhVMQ5515IBeaZQqHAZz/7WT72sY+xbt06rrnmGj796U/z8pe/HOfmu9hqM7BjktpITmy16QilIrVKQj7YS3nxQpxzrhsU6EKtVovny1vf+lZ2797N411yySXcc889bN++nYmJCd7+9rfj3HwWW23qwznJ0Dhj+w7REUpFapWEfLCXal+Cc851kwJd6PLLL2fz5s04506t2GpTH85JhsapjeTM6F+2iMaGHqp9Cc45140KdKH//d//5YILLsA5d+ps23OAdGuT2kjOjFAq0ti4lGzNEkKpiHPOdasCXehf/uVf+Ou//mu++MUvMjU1xfT0NNPT00xPTzM9PY1z7sTFVpt0S5OBHXuJrTYdoVSkVknIB3spL16Ic851uwJd6G//9m/puOGGG1i5ciWVSoVKpUKlUmHlypU455672GpTH85JhsYZ23eIjlAqUqsk5IO9VPsSnHNutijQhe68804kIQlJSEISkpicnMQ59+zFVpv6cE4yNE5tJGdGKBVpbOih2pfgnHOz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zj3/CnSpVqvFzp07qVQqlMtl6vU6r3jFK/jEJz7ByXrwwQcZHByk2WzSbDZpNpssX74c556t2GpTH85JhsapjeTMCKUijQ09VPsSnHPOnToFusTRo0eZmppi3bp1vPnNb+bSSy/lhhtu4KKLLuL2229HErt27eKaa67hZE1OTrJ48WJarRaPPfYYz4aZYWaYGZs2bcLNX7HVJt3apDaSMyOUitQqCflgL6FUxDnnXiibNm3CzDAzzIy5qkCX6OvrY+XKlfznf/4nN954I/feey/j4+Ncf/31XHDBBTxfjh49yg9/+EM++clPsmrVKi666CI+/vGP87tIQhKSuO6663DzT2y1Gdixl2RonNhq0xFKRWqVhHywl2pfgnPOvdCuu+46JCEJScxVBbrEueeeS0er1eIrX/kKjz76KKfCI488wtve9jZuvPFGxsfHaTQa7N69m69+9as491Riq019OCcZGmfbngPM6F+2iMaGHqp9Cc45506vAl3iK1/5Cvfddx9ZlvHQQw9xxRVXYGZUKhV27txJq9Xi+XD++efzhS98gfPPP5+O8847jz/5kz/h3nvvxbkn2rbnAOnWJrWRnBmhVKSxcSnZmiWEUhHnnHOnX4EuctZZZ2FmfP3rX+e+++7j7rvv5pprrmHLli1ceumlvPnNb2bt2rWcjOnpaXbu3Mnj/epXv2LBggU4NyO22qRbmgzs2EtstekIpSK1SkI+2Et58UKcc869cAp0sXPOOYc1a9bwpS99iauuuor//u//5r777uNktNttqtUqDz/8MB2PPPII3/zmN7niiis47WKENOVpxQhpijt9YqtNfTgnGRpnbN8hOkKpSK2SkA/2Uu1LcLNUjJCmPK0YIU1xzs0OBbrMoUOH+O53v8uVV17JH/7hH/LGN76Rq6++mocffphvfOMb3HvvvZwMM2NwcJCrr76adevWsXLlSq699lqWL1/OaVevw9gYJAlPEiOkKYyNQZriTq3YalMfzkmGxqmN5MwoLz6bxoYeqn0Jbpar12FsDJKEJ4kR0hTGxiBNcc51vwJd4r3vfS9vfOMbueSSS3j3u9/NL3/5S66//nq+/e1vMzExwY4dO3j1q1/NWWedxclau3YtzWaT7du302w2GRgY4AVRrUK5DDFCkvBbMUKaQowQAmQZ7tTZtucA6dYmtZGcGaFUJFuzhMbGHkKp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bWI227RpE7PZpk2bmO02bdrEbLZp0yZms02bNjGbbdq0Cdd9CsxDrVaLiYkJJiYmmJiYYGJigsOHD/N8qVUS8sFeqn0J3WDz5s3MZps3b2Y227x5M7PZ5s2bme02b97MbLZ582Zms82bNzObbd68Gdd9CsxDt956K+vWrWP9+vWsX7+e9evX873vfY/nS7UvwTnnnHOnToF56MEHH2RwcJBms0mz2aTZbLJ8+XKcc845NzsUmIcmJydZvHgxrVaLxx57jN/l4osvxswwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzIwOM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwMzrMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PM6DAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDOjw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzo8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8yMDjPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDM6zAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPMDDPDzOgwM8wMM8PMMDPMDDPDzDAzzAwzw8wwM8wMM8PMMDPM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" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0">The best fit line tells us that the model is not a good fit to the data because the data has a non-linear pattern. While visualizing the best fit as shown is one possible way to debug our learning algorithm, it is not always easy to visualize the data and model.</span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Bias-variance</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">An important concept in machine learning is the bias-variance tradeoff. Models with high bias are not complex enough for the data and tend to underfit, while models with high variance overfit to the training data</span></span><span class = "S2"><span class="S0"> </span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Learning Curve</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">A learning curve plots training and cross validation error as a function of training set size. Plotting learning curves can help debug learning algorithm even if it is not easy to visualize the data.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">To plot the learning curve, we need a training and cross validation set error for different </span></span><span class = "S2"><span class="S5">training </span></span><span class = "S2"><span class="S0">set sizes. To obtain different training set sizes, we should use different subsets of the original training set X</span></span><span class = "S2"><span class="S0">. Specifically, for a training set size of i</span></span><span class = "S2"><span class="S0">, we should use the first i examples (i.e., </span></span><span class = "S2"><span class="S0">X(1:i,:) and </span></span><span class = "S2"><span class="S0">y(1:i)</span></span><span class = "S2"><span class="S0">).</span></span></div><div class = "S4"><span class = "S2"><span class="S0">We can use the </span></span><span class = "S2"><span class="S0">trainLinearReg </span></span><span class = "S2"><span class="S0">function to find the </span></span><span class = "S2"><span class="S5">θ </span></span><span class = "S2"><span class="S0">parameters. Note that the lambda </span></span><span class = "S2"><span class="S0">is passed as a parameter to the </span></span><span class = "S2"><span class="S0">learningCurve </span></span><span class = "S2"><span class="S0">function.After learning the </span></span><span class = "S2"><span class="S5">θ </span></span><span class = "S2"><span class="S0">parameters, we should compute the </span></span><span class = "S2"><span class="S6">error </span></span><span class = "S2"><span class="S0">on the training and cross validation sets. Recall that the training error for a dataset is defined as</span></span></div><div class = "S4"><span style="vertical-align:-17px"><img src="data:image/png;base64,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" width="230" height="46" /></span></div><div class = "S4"><span class = "S2"><span class="S0">In particular,the training error does not include the regularization term. One way to compute the training error is to use existing cost function and set </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">to 0 </span></span><span class = "S2"><span class="S5">only </span></span><span class = "S2"><span class="S0">when using it to compute the training error and cross validation error. When computing the training set error, we will compute it on the training subset (i.e., X(1:n,:) </span></span><span class = "S2"><span class="S0">and </span></span><span class = "S2"><span class="S0">y(1:n)</span></span><span class = "S2"><span class="S0">) (instead of the entire training set). However, for the cross validation error, we should compute it over the </span></span><span class = "S2"><span class="S5">entire </span></span><span class = "S2"><span class="S0">cross validation set. We store the computed errors in the vectors error train </span></span><span class = "S2"><span class="S0">and </span></span><span class = "S2"><span class="S0">error val</span></span><span class = "S2"><span class="S0">.</span></span><span class = "S2"><span class="S0"> </span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">lambda = 0;</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[error_train, error_val] = learningCurve([ones(m, 1) X], y,[ones(size(Xval, 1), 1) Xval], yval,lambda);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7083B092" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_5" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(1:m,error_train);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(1:m,error_val(1:m));</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">title(</span><span class="S11">'Learning curve for linear regression'</span><span class="S0">)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">legend(</span><span class="S11">'Train'</span><span class="S0">,</span><span class="S11">'Cross Validation'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'Number of training examples'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Error'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">off</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">axis([0 13 0 150]);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="D5666CCC" data-scroll-top="null" data-scroll-left="null" data-testid="output_6" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1365" widgetid="uniqName_196_1365" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1367" widgetid="uniqName_196_1367" src="data:image/png;base64,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5sEHH6RLly58kHbt2vGXtGvXjlZ9+vQh0rNnT5YsWcKSJUuYMWMGt912G6NHj+aSSy4hUlpayrFjx4js2rWL3bt3cybt2rWjVZ8+fYj07NmTJUuWsGTJEmbMmMFtt93G6NGj2bVrFxUVFYwcOZL9+/dz4MABRo8eTWTx4sXs2rWLiooKRo4cyf79+zlw4ACjR48msnjxYt7v0ksvJVJWVkZNTQ2tysvLiQwYMIAg+CTECIJPsRkzZjBo0CAGDRrEoEGDGDRoEDt37iQ9PZ2ysjLuu+8+5s2bx5AhQ8jLy+O1114jkpCQQGTLli0sXbqUxx57jOeee45IY2Mjn6TMzEyys7NpaGggMzOTESNG0L9/f8477zw+SGZmJgMGDOC9996jf//+TJ48mVtvvZVDhw6Rnp5OqyuvvJLI1KlTeeqpp/jyl79Mhw4d+DAmTpxIZN++fYwcOZKUlBQiQ4cOJT09nbKyMu677z7mzZvHkCFDyMvL47XXXuPD6tWrF0OGDOG9997j2muv5Z577mHgwIFs3boVSYwZM4ZPytChQ0lPT6esrIz77ruPefPmMWTIEPLy8njttddISEggsmXLFpYuXcpjjz3Gc889R6SxsZGPaujQoaSnp1NWVsZ9993HvHnzGDJkCHl5ebz22mtkZmaSnZ1NQ0MDmZmZjBgxgv79+3PeeefxlwwdOpT09HTKysq47777mDdvHkOGDCEvL4/XXnuNffv2ceutt5Kfn09RURFbt25l7969RPr378++ffu49dZbyc/Pp6ioiK1bt7J3714i/fv35/169erFkCFDeO+997j22mu55557GDhwIFu3bkUSY8aMIQg+CTGC4FPstddeo6ysjLKyMsrKyigrK2P37t2sWrWKK664gieeeILx48dTW1tLYWEhubm5RG655Rby8vI4dOgQeXl5zJs3j29+85tEysvL+aQtXLiQW2+9lZqaGjZt2sSsWbO44IILiLRt25YzKS4uZsiQIVRUVPDkk0+yd+9e7r33XqZPn06rmTNn8tnPfpaXXnqJO+64g7y8PK677jo+jLFjx9KpUycid955J60SExNZtWoVV1xxBU888QTjx4+ntraWwsJCcnNz+WssWrSIe++9l7179zJnzhzWr1/PV77yFdasWUNCQgKflMTERFatWsUVV1zBE088wfjx46mtraWwsJDc3Fxu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" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'# Training Examples\tTrain Error\tCross Validation Error\n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="65ED02BD" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_7" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"># Training Examples Train Error Cross Validation Error</div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> fprintf(</span><span class="S11">' \t%d\t\t%f\t%f\n'</span><span class="S0">, i, error_train(i), error_val(i));</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="119CD7CF" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="171" data-testid="output_8" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> 1 0.000000 205.121096<br> 2 0.000000 110.300366<br> 3 3.286595 45.010231<br> 4 2.842678 48.368911<br> 5 13.154049 35.865165<br> 6 19.443963 33.829962<br> 7 20.098522 31.970986<br> 8 18.172859 30.862446<br> 9 22.609405 31.135998<br> 10 23.261462 28.936207<br> 11 24.317250 29.551432<br> 12 22.373906 29.433818</div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0">We can observe that </span></span><span class = "S2"><span class="S5">both </span></span><span class = "S2"><span class="S0">the train error and cross validation error are high when the number of training examples is increased. This reflects a </span></span><span class = "S2"><span class="S6">high bias </span></span><span class = "S2"><span class="S0">problem in the model -too simple and is unable to fit our dataset well.</span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Feature Mapping for Polynomial Regression</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">The problem with our linear model is that it was too simple for the data and resulted in underfitting (high bias). We address this problem by adding more features. </span></span></div><div class = "S4"><span class = "S2"><span class="S0">For use polynomial regression, our hypothesis has the form: </span></span></div><div class = "S4"><span style="vertical-align:-6px"><img src="data:image/png;base64,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" width="666.5" height="22" /></span><span class = "S2"><span class="S0">by defining </span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAoCAYAAAACJPERAAABw0lEQVRYR+3VS6hOYRQG4OcoFBnJRJnI5GQstxNGkmJ0DBQTA0woKcrpSLmbSM7AwNSlGEiJGBFKMWBmrESUwkjHpaWVdn+bffnP32+wv9qjvb71rvd911rfiCGckSFg6kAHqnonbyfvjCjQNdKMyPi3JP+NvLOwBJuxFWtxG/vwid/7ejXOYDn24kYTacqYzsVSvMUYrmEBNuIB1uMAvmETjmCqX9Di/cW4gg2Z/BYOYgLvmwAVY6s8nZMyBrM7ye4YXrUFjHtVoBGzB5cSZDcu4+egQVfhPr5iC15UAC7KQqOwk2WxdZhGU13HCuxIj8tyzcfOjImOP4rjbUCjk6PaaJ44pzGJ7yXJZqfsK/G4LWiosB1r8AHRQPeSzcd/SBwsW4OO4nB+y3AX7zCe3RvexXJ4hB+FIhqBxniEL1+wEBdwEU9QnNfwNeY1/LqK5z2sa4MGYCQ5hNdZ+YncRtGF4e057MdLvMl/sa16x6c2aPi3LRN/Tv+CTVG22LfnMQ+ncBPTJd7WBu1n1nvvdqB/FKmzkZpKPxR51+Fh243UlGE89MFyV07CM5zF0963dxDyVhbbgVZK1E9AJ28/6lXe/QUIkl8phGpQ5AAAAABJRU5ErkJggg==" width="14.5" height="20" /></span><span class = "S2"><span class="S0"> </span></span><span class = "S2"><span class="S0">= (waterLevel), </span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,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" width="118.5" height="22" /></span><span class = "S2"><span class="S0">,</span></span><span class = "S2"><span class="S5"> ... ,</span></span><span style="vertical-align:-6px"><img src="data:image/png;base64,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" width="120.5" height="22" /></span></div><div class = "S4"><span class = "S2"><span class="S0">Now, We will add more features using the higher powers of the existing feature </span></span><span class = "S2"><span class="S5">x </span></span><span class = "S2"><span class="S0">in the dataset. It turns out that if we run the training directly on the projected data, will not work well as the features would be badly scaled. Therefore, we will need to use feature normalization.</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">p = 8;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Map X onto Polynomial Features and Normalize</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = polyFeatures(X, p); </span><span class="S10">%Implementation of polyFeature is at the end section</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[X_poly, mu, sigma] = featureNormalize(X_poly); </span><span class="S10">% Normalize</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = [ones(m, 1), X_poly]; </span><span class="S10">% Add Ones</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Map X_poly_test and normalize (using mu and sigma)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_test = polyFeatures(Xtest, p);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_test = bsxfun(@minus, X_poly_test, mu);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_test = bsxfun(@rdivide, X_poly_test, sigma);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_test = [ones(size(X_poly_test, 1), 1), X_poly_test]; </span><span class="S10">% Add Ones</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Map X_poly_val and normalize (using mu and sigma)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_val = polyFeatures(Xval, p);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_val = bsxfun(@minus, X_poly_val, mu);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_val = bsxfun(@rdivide, X_poly_val, sigma);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly_val = [ones(size(X_poly_val, 1), 1), X_poly_val]; </span><span class="S10">% Add Ones</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'Normalized Training Example 1:\n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="020F08CF" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_9" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Normalized Training Example 1:</div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">' %f \n'</span><span class="S0">, X_poly(1, :));</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="D7B938EE" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="129" data-testid="output_10" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> 1.000000 <br> -0.362141 <br> -0.755087 <br> 0.182226 <br> -0.706190 <br> 0.306618 <br> -0.590878 <br> 0.344516 <br> -0.508481 </div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0"> </span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Learning Polynomial Regression</span></span></h2><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">lambda = 0;</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[theta] = trainLinearReg(X_poly, y, lambda);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="E3E7393C" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_11" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Plot training data and fit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">figure(1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(X, y, </span><span class="S11">'rx'</span><span class="S0">, </span><span class="S11">'MarkerSize'</span><span class="S0">, 10, </span><span class="S11">'LineWidth'</span><span class="S0">, 1.5);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plotFit(min(X), max(X), mu, sigma, theta, p);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'Change in water level (x)'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Water flowing out of the dam (y)'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">title (sprintf(</span><span class="S11">'Polynomial Regression Fit (lambda = %f)'</span><span class="S0">, lambda));</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="B972AAD7" data-scroll-top="null" data-scroll-left="null" data-testid="output_12" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1410" widgetid="uniqName_196_1410" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1412" widgetid="uniqName_196_1412" src="data:image/png;base64,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r169eOWVV2hr7dq19OvXj9jYWLKzszl69Chhp0+fZvLkyXTr1o1evXoxd+5c2qqtrWX48OHExsbi8Xjo168fxcXFXM7y5cuJi4sjLi6OuLg44uLiiIuLIy4ujri4OM6fP09be/fupa6ujq5du5KcnIzX6yU9PR3X1q1baWvv3r3U1dXRtWtXkpOT8Xq9pKen49q6dSt79+6lrq6Orl27kpycjNfrJT09HdfWrVtx7d27l7q6Orp27UpycjJer5f09HRcW7duZe/evdTV1dG1a1eSk5Pxer2kp6fj2rp1K3v37qWuro6uXbuSnJyM1+slPT0d19atW9m7dy91dXV07dqV5ORkvF4v6enpuLZu3YorKysL18svv4xpXxyMuURVVRUff/wxrvj4eFwFBQU8+uijHDhwgNTUVM6ePcuMGTPIzs7mcm644QbKy8t58cUXCSspKaG8vJyuXbviWrt2LatWrWLw4MHExcWRmJjItm3bGDlyJGEFBQU8+uijHDhwgNTUVM6ePcuMGTPIzs7G1draSnl5OfPmzWPy5MnceuutdO7cmVdffZWkpCSqq6tJTU3l6NGj/PCHP+TQoUO41q5dS3l5Oc3NzTQ3N3PvvfdSVlbGoEGDyMzMpKamhkmTJrF7924+j3feeYfKykoqKytZvXo1zz33HK7MzEzChg0bxgsvvIDP5yM9PZ3Fixdz5513curUKVyjR4/mv/7rv/B6vdx5550UFhbym9/8hvLycurr63GVl5ezYsUKHn30UZqamvD5fLiGDRvGCy+8gM/nIz09ncWLF3PnnXdy6tQpDh8+TGZmJkePHmXs2LE88MADvP322wwZMoRjx45x+PBhMjMzOXr0KGPHjuWBBx7g7bffZsiQIRw7dgzX2rVrKS8vp7m5GVdBQQGPPvooBw4cIDU1lbNnzzJjxgyys7MJW7t2LatWrWLw4MHExcWRmJjItm3bGDlyJH9PdXU1S5YsYcmSJSxZsoS3336bsLVr11JeXk5zczO1tbWcO3cO18GDBzl69CiXs2LFCiIjI+nfvz+X09zczL333ktZWRmDBg0iMzOTmpoaJk2axO7du2ltbaW8vJx58+YxefJkbr31Vjp37syrr75KUlIS1dXVpKamcvToUX74wx9y6NAhLpWdnU1SUhKJiYmsXLmStLQ0AoEArtGjR1NUVITX6+XOO+/k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6dOnc7yNGTOGoaEhDnfw4EFGjRqFHB/hkiLyWjQKdXUQj4MxfIAx4HlQVweeh4iIfD4ccqygoID9+/fzz//8z1x99dVcffXVzJw5k+7ubj4P48aN4/XXX+dwfX19XHLJJYh8IsaA54ExHJUx4HlgDCIi8vlwyLH+/n6mTJnCiy++yNixYxk7dizvvPMOruvS3t7O8VZRUUFWe3s7WTt37qSjo4Np06YhIiIiI4NDjt14443Mnj2bjo4O1q5dy9q1a4nFYixevJjbb7+d481xHB566CHuvfde5s2bx5w5c3jwwQc566yzEBERkZHBIcfefvtt7rzzTo50/fXXkzUwMMDxdtlll7Fp0yaam5vZsmUL11xzDSIiIjJyOAwDmUyGo8lkMowaNQoRERGRwznk2IwZM5g9ezYDAwMccuDAAW677TbGjRvHaaedhgxPid19iIiI5IJDji1dupRgMEhFRQXl5eVceumlTJo0iRdeeIHW1lZkeGps6aR+zQ7q1+zApjOIiIicSA7DwPr162lra2PlypU89thjtLS0sG3bNk499VRk+LHpDA2tndh0BpvehwkGEBEROZEchonzzjuPKVOmUF5ejjEGGb4Su/s4JFoZQkRE5ERzEPkUbDpD/ZodZJlggHBJESIiIieag8inkNjdxyHRSAgREZFccBD5FJo395BlggHqKooRERHJBYcc27lzJzt37mTnzp3s3LmTnTt3snPnTnbu3EkqlaK7uxsZHmw6Q2J3P1nhkiJERERyxSHHfvzjH1NdXU11dTWzZ89m9uzZVFdXU11dTXV1Na7rMnHiRP74xz8iuZXY3YcJBsiaV3E2IiIiueKQY7W1tZx99tm89NJLbN26la1bt/LKK68wceJE7rnnHl5//XVqamq44YYbkNyqqygmPr+c+IIphEuKEBERyRWHHFuyZAm///3vKSws5JAzzjgDz/NYunQpo0eP5mc/+xlvv/02+/fvR3LLBAOES4oQERHJJYcc+9vf/kZBQQFHchyHAwcOkOU4DlkHDhxARERExCHHJk2axPz589m3bx+H7N+/nwULFvC1r32NrHg8zj/8wz9wxhlnICIiIuKQY48//jjvvPMOkydPpqKigoqKCi666CI6Ozt5+umn6e7u5tZbb+XHP/4xIiIiIlkOw0BrayvxeJympiZ+9rOf0dLSwqZNm8g655xz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L1NbW0ttbS07d+7krrvuora2ltraWmpra6mtrWXevHkMDQ0xatQo5PhK7O4jywQDiIiIjEQOOTB16lQymQy9vb1k9fb20tvbS29vL729vfT29rJ3717uueceCgoKkOMrvqCcdx+eQeei6YiIiIxEDjny1FNPEYvFqKio4IknniAWixGLxYjFYsRiMVpbW6mvr0dERETkSA459vjjj3P66aezZ88eurq66Orqoquri127dtHU1ISIiIjIkRxy7Omnn6aiooJvfOMbRCIRIpEIkUiEb37zmzz55JOIiIiIHMkhx5YuXcqtt95KMplk3LhxtLa2snnzZqZOncott9yCiIiIyJEccmxgYIDvfOc7FBQUcPbZZ7Np0ybOPPNMVq1axZIlSxARERE5kkOOjR49GsdxyJo7dy5r164lq6CggNNPP52BgQFEREREDueQY+PHj6exsZHBwUEuuugiUqkUQ0NDdHV10dfXx5gxYxARERE5nEOOrV69mk2bNvGrX/2K888/n7FjxzJx4kQikQgVFRWMGTMGOX7c5a/S2NLJqs09iIiIjFQOOeY4Dlu2bOEXv/gFWbFYjKeeeopnn32Wxx9/HDl+bDrDISYYQEREZKRyyIHrr7+e66+/nh07drBv3z6OdMEFF/DVr34VOb5s3z4Su/tpaO1ERERkJHPIgVmzZrF3716+9a1vMXnyZK644gp+9rOf0d3djXx+bDqDiIhIPnDIgXnz5tHW1kYymeT555/njjvu4OWXX6ayspLS0lIikQjr1q0jnU4jx09XOsMh4ZIiRERERiqHHPvyl7/MDTfcQGtrK9u3b2fjxo3U1dWxaNEiLr/8cuT4sX0ZskwwgIiIyEjmMAyk02nWrVtHJBIhHA7T2NjIueeey3333YccPza9jyxTFEBERGQkc8iBoaEhUqkU8+bN49JLL2XatGksXbqUiy++mOeeew7f94nFYsyZMwc5fmxfBhERkXzgkAOVlZVUVVXx3//93zz22GO88sordHR0sGTJEs4//3zk89G5aDrvPjyD+IJyRERERjKHHBg3bhxZ6XSa1atX09fXh4iIiMgn5ZADq1evZuvWrXiex86dO7nuuusoLS0lEomwbt060uk0IiIiIsfikCOnnnoqpaWlPPPMM2zdupWNGzcyZ84cli9fzrRp07j00kupra1FRERE5EgOw8TYsWOpqanht7/9LbNnz+Yvf/kLW7duRURERORIDjnU39/Pa6+9xsyZM/nHf/xHJk+ezI033siuXbt49tlneeWVVxARERE5kkMO3HLLLUyePJnLLruMuXPnsn//fpYsWcJLL73Eli1bWLNmDV/96lc59dRTERERETmSQw5kMhnuvPNOnn/+ebZv385zzz3HFVdcQWFhISIiIiIfxyEHmpubmTt3Ll/+8peRz59NZwg90EHogQ5Wbe5BRERkpHOQk4YpCmCCAUREREY6B8l7tm8fNp0hsbsfERGRfOAgec+mM4iIiOQTB8l7XekMh4RLihARERnpHCTv2b4MWSYYQEREJB84SN6z6X2IiIjkE4c8t23bNv70pz9xpD179tDW1obv++Q725chyxQFEBERyQcOeWzXrl3cdNNNbNu2jcOtX7+empoaWlpamD9/Po888gj5rHPRdDoXTcdSQGQvAAAgAElEQVSrmYiIiEg+cMhTBw4c4K677uKss87icENDQ0SjUZqbm1myZAnr1q3D8zysteSrxO4+Erv7sH37EBERyQcOeWrp0qV8/etf52tf+xqHe/755yksLGT8+PFkBYNBrrzySjZu3MhHKS0tpbS0lNLSUpYtW8ZIEi4poq6imHBJESIikt+WLVtGaWkppaWllJaWkq8c8tDLL7/MSy+9xO23386R+vv7mTBhAoc744wzePPNN/kovu/j+z6+77Nw4UJERESGo4ULF+L7Pr7v4/s++cohzwwMDPDzn/+cpUuXcjRDQ0M4jsPhHMfh4MGDiIiIyMjgMMLdf//9lJeXU15ezhVXXMHixYuZOHEiXV1dtLe3k06neeONN/B9n6wxY8YwNDTE4Q4ePMioUaMQERGRkcFhhKutraWpqYmmpiYefvhhxo4dy969e1m9ejWrV6/mrbfeor29nY6ODrLGjRvH66+/zuH6+vq45JJLEBERkZHBYYT7yle+wvTp05k+fTpTp07ljjvuYMWKFaxYsYIVK1Zw4YUXsmDBAurr68mqqKggq729naydO3fS0dHBtGnTEBERkZHB4STjOA4PPfQQ9957L/PmzWPOnDk8+OCDnHXWWeSj0AMdnHJXDHf5q4iIiOQLhzy3YsUKvvGNb3C4yy67jE2bNtHc3MyWLVu45ppryFc2nSErXFKEiIhIvnCQvGXTGURERPKRg+Qt27ePQ84PBhAREckXDnJSMMEAIiIi+cJB8lb7rn4OMUWnIiIiki8c5KRgggFERETyhYPkLduXIcsEA4iIiOQTB8lb0UiIzkXT8WrKEBERyScOkrds3z6aN/dg0xlERETyiYPkrXBJEdHKEHUVxYiIiOQTBxEREZERxkFERERkhHEQERERGWEcREREREYYBxEREZERxkHyUmNLJ6EHOgg90IGIiEi+cZC8dH4wQN2lxUQjIURERPKNg+Sl5s09NLR20tjaiYiISL5xkLxk+zJkmaIAIiIi+cZB8pJNZ8gywVMRERHJNw6Sd2w6wyGmKICIiEi+cZC8dn4wgIiISL5xkLxj+/ZxiAkGEBERyTcOknfCJUV4NWU0REKYolMRERHJNw6Sl+oqiolWhjDBACIiIvnGQURERGSEcRAREREZYRxERERERhgHERERkRHGQURERGSEcRAREREZYRxERERERhgHERERkRHGQURERGSEcRAREREZYRxERERERhgHERERkRHGQURERGSEcRAREREZYRxERERERhgHERERkRHGQURERGSEcRAREREZYRxERERERhgHERERkRHGQURERGSEcZCT1rJly8hHy5YtIx8tW7aMfLVs2TLy0bJly8hHy5YtIx8tW7YMGTkc8lQ6nSYWi/HSSy9xNHv27KGtrQ3f9zlZNTU1kY+amprIR01NTeSrpqYm8lFTUxP5qKmpiXzU1NSEjBwOeai9vZ3q6mqee+45HnroIW666SYOHjzIIevXr6empoaWlhbmz5/PI488goiIiIwcDnlmaGiIn/70p/z617/moYce4t/+7d/o7++ntbWVrKGhIaLRKM3NzSxZsoR169bheR7WWkRERGRkcMgz7e3tnHvuuUydOpVDnn32Wa655hqynn/+eQoLCxk/fjxZwWCQK6+8ko0bN3IsU6dOpbS0lNLSUkpL///24Dg268LA//g731K7dmRpulJOvQ7lwA8onFr6UKhCDwTXXMQds1lbxlGZEUYhLJMbDR1H0UPvhy2G7nrresZ1uB2OwblBPZKOXqHYNtIRsAHET4ukpDcNwbWNCgzwefbL80cvPX86vWl+10e+r5eQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCTiJCEJSUhCEpKQhCQk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NZw6dYr/H9asWcOpU6f4OGVlZfT29vJxSkpKOHv2LKHQ9SogFAp9atFolOXLl7N161buvvtu/vEf/5F169bxxhtv8PWvf53e3l7iDhw4wIULF0gk165dIxaL8b9t/fr1/Nu//RufpQMHDvD222/z/8OBAwd4++23+WN27NjBTTfdxOTJk/k4a9euZd26dYRC16uAUCj0qdXX19Pd3c2ePXtYs2YNCxYs4IEHHmDnzp38+Z//OX//939PompoaODuu+/mf9u7777L59nly5epr6/n0Ucf5ZPIz88nbv/+/YRC16OAUCj0qf3sZz+jtLSUCRMmMFJSUhJPPfUU3/rWtxjW39/Po48+Sk5ODg888AAtLS0Me/PNN6moqGDWrFnk5OSwePFi9u7dy7CVK1fS2trK8uXLycnJYdGiRbS0tDDSwMAAGzZsIDc3lwULFrBnzx4ee+wxjh8/TtyVK1eorq6moKCA3NxcysvLOXfuHB9l5cqVHD9+nLiVK1fS2trK8uXLycnJYdGiRbS0tPBhtmzZwt69exl29OhRVq5cSV9fH8Pq6+v52c9+Rtybb75JRUUFs2bNIicnh8WLF7N3717i6uvrOXHiBIcOHeKxxx4j7sqVK1RXV1NQUEBubi7l5eWcO3eOYStXrqSzs5P58+ezaNEiLl26xMe5cuUK1dXVFBQUkJubS3l5OefOnSPuueee44c//CEjvfXWW6xcuZLz589z5coVqqurKSgoIDc3l/Lycs6dO8cntW/fPm688UYmTpxIe3s7K1eu5OzZswyrr69n48aNjPTggw/y/PPPEwpdjwJCodCncvbsWQYHB5kxYwYfZurUqdx///0M++EPf8hXv/pVfvCDH/CXf/mXrF27lvPnzxOLxVi2bBmXL1+msbGRF198kdzcXNavX09/fz9xhw4doqqqigceeIAf/OAHTJs2jbVr13LhwgWGrVy5kv7+fhobG6murmbnzp38+7//O7/73e+IW7duHW1tbWzbto19+/aRlZVFaWkpAwMDfJhDhw7xu9/9jrhDhw5RVVXFAw88wA9+8AOmTZvG2rVruXDhAh+UlJTEr371K4a99NJLHDp0iCNHjjDsxz/+MX/2Z39GLBZj2bJlXL58mcbGRl588UVyc3NZv349/f39zJ07l5tvvpnJkydTVFRE3Lp162hra2Pbtm3s27ePrKwsSktLGRgYIO7QoUM89dRTPPzwwzz44IOkpaXxcdatW0dbWxvbtm1j3759ZGVlUVpaysDAALfeeiv//M//zOXLlxn2q1/9ijfffJPx48ezbt062tra2LZtG/v27SMrK4vS0lIGBgb4JFpaWpg1axZx9957L5cuXaKiooK4l19+me3bt/M3f/M3jDRr1iyOHz/OwMAAodD1JiAUCn0qb775JnFf+MIX+CS+/e1vU1RUxL333ss//MM/EI1GOXXqFO+99x4LFy5k8+bNTJ06lVtuuYUNGzYQd/bsWYY9/PDDPPTQQ9x7771s3ryZaDTKa6+9RtyRI0c4deoU27dvZ/r06dx9993U1tYy7PTp0xw4cIDt27eTm5vLTTfdxObNm8nIyGDXrl18Eg8//DAPPfQQ9957L5s3byYajfLaa6/xQffddx9dXV1Eo1HiOjs7iUQiHDlyhLjjx4/z+9//nnnz5vHee++xcOFCNm/ezNSpU7nlllvYsGEDcWfPnuWOO+4gIyODm2++mfz8fE6fPs2BAwfYvn07ubm53HTTTWzevJmMjAx27drFsEWLFrFs2TIeffRRPs7p06c5cOAA2whdAJUAAAlKSURBVLdvJzc3l5tuuonNmzeTkZHBrl27+Ku/+ivS09PZv38/w375y1/y9a9/ndOnT3PgwAG2b99Obm4uN910E5s3byYjI4Ndu3bxSbzyyitMnz6dYU8//TR9fX3U1NRQUVHB6tWryc3NZSRJJCUlcezYMUKh601AKBT6VMaPH0/ctWvX+CQmTJjAsKSkJOJisRhf+tKXqKio4LXXXuP5559nw4YNlJaW8kETJkxgWEpKCnHXrl0jrre3l/T0dDIzMxmWnZ1NamoqcT09PcQ9++yzVFRUUFFRQUVFBRcvXuT111/nk5gwYQLDUlJSiLt27RoflJubS2pqKocPH+att97i/PnzPPLIIxw+fJi4Q4cOMX/+fJKSkvjSl75ERUUFr732Gs8//zwbNmygtLSUj9LT00Pcs88+S0VFBRUVFVRUVHDx4kVef/11hk2ePJlPqqenh7hnn32WiooKKioqqKio4OLFi7z++usEQcDixYvZt28fcd3d3fznf/4nX/va1+jp6SHu2WefpaKigoqKCioqKrh48SKvv/46H+fatWtcvXqVL37xiwy78cYbqaqq4tlnnyU7O5u1a9fyQUEQcMMNN3Dx4kVCoetNQCgU+lT+4i/+gjFjxtDT08OHOX78OJs3b+add97hj7l8+TKLFy/m+9//PidOnOC2227je9/7Hv8Tly9f5o95//33ueGGG4hEIkQiESKRCJFIhNWrV1NcXMxnKQgC5s2bR2dnJx0dHcyZM4e5c+dy+fJlTp8+TWtrKwsWLCDu8uXLLF68mO9///ucOHGC2267je9973t8lPfff58bbriBSCRCJBIhEokQiURYvXo1xcXFDEtKSuKTev/997nhhhuIRCJEIhEikQiRSITVq1dTXFxM3Ne//nVeeeUVzp8/z969eykoKCAjI4P333+fG264gUgkQiQSIRKJEIlEWL16NcXFxfyp3n33XeIGBwe5dOkSHyYIAkKh61FAKBT6VIIg4KGHHmLXrl1cuXKFD/rXf/1XDh48yNixY/ljWlpasM3evXuprq5m+fLlZGdn8z8xadIkhoaGGBoaYtj58+e5fPkycRkZGVy9epWCggKKioooKiqiqKiIcePGkZqaymftvvvu4+WXX6azs5OZM2eSlJTErFmz2LdvH2+88Qbz5s0jrqWlBdvs3buX6upqli9fTnZ2Nh8lIyODq1evUlBQQFFREUVFRRQVFTFu3DhSU1P5U2RkZHD16lUKCgooKiqiqKiIoqIixo0bR2pqKnETJ07k7rvvZv/+/ezfv5+SkhLiMjIyuHr1KgUFBRQVFVFUVERRURHjxo0jNTWVj5OcnExSUhKXL19mWF9fH//n//wfnn76acaMGcNTTz3Fh/n973/PF7/4RUKh601AKBT61FavXs2lS5coKyvj+PHjxGIxzp8/z5NPPklTUxMbNmwgCAL+mKSkJOLefvtt4t577z0ef/xx4qLRKJ9EQUEBt9xyC+vWraO/v5+zZ8+yfv16hhUUFJCdnc3GjRu5dOkSca2traxYsYLBwUE+a/fddx/9/f28/PLLzJ49m7j8/Hyef/558vLyGDt2LHFJSUnEvf3228S99957PP7448RFo1HikpKS6O/v55133qGgoIDs7Gw2btzIpUuXiGttbWXFihUMDg7ypygoKCA7O5uNGzdy6dIl4lpbW1mxYgWDg4MMW7x4MT/84Q8JgoA5c+YQV1BQQHZ2Nhs3buTSpUvEtba2smLFCgYHB/kkpk+fjm3iYrEY3/3ud7nnnnv42te+xtatW9m9ezetra2MdPbsWaLRKJMmTSIUut4EhEKhT238+PG88MILpKamUlJSwtSpU5k7dy7/8R//QW1tLYWFhXychQsXUlBQwIMPPsisWbP46le/yqxZs5g8eTJvvPEGn0QQBDQ2NhIEAX/913/N3/7t31JYWMiwIAhobGxkYGCASCTCXXfdxWOPPcb69euZP38+n7Xk5GTuvfdekpKSmDx5MnEzZ87k/fffZ+HChQxbuHAhBQUFPPjgg8yaNYuvfvWrzJo1i8mTJ/PGG28QN3/+fDo6OrjnnnsIgoDGxkYGBgaIRCLcddddPPbYY6xfv5758+fzpwiCgMbGRgYGBohEItx111089thjrF+/nvnz5zPswQcf5NKlSyxevJggCIgLgoDGxkYGBgaIRCLcddddPPbYY6xfv5758+fzSRQUFPCb3/yGuH/6p3/irbfe4oknniBu+vTpPProo2zcuJG3336bYb/5zW+49dZbueWWWwiFrjcBoVDoMzFhwgQaGxs5efIkL730Eh0dHbS2tlJYWMgw2yxYsICRbLNgwQKSk5Opr6+nu7ub/fv309HRwbJly3jppZd49NFHibPNggULGMk2CxYsIO7ChQu8/vrrPPvss5w4cYKOjg6+9rWvEZeWlkZcdnY2u3fv5tVXX6W5uZljx47xyCOP8FFss2DBAuJss2DBAkayzYIFC/goDQ0NvPLKKwybPn06tlmyZAnDkpOTqa+vp7u7m/3799PR0cGyZct46aWXePTRR4krKiri5MmTvPrqq8RlZ2eze/duXn31VZqbmzl27BiPPPIIw2xTUFDAH2ObgoIChmVnZ7N7925effVVmpubOXbsGI888ggjpaamcurUKb73ve8xUnZ2Nrt37+bVV1+lubmZY8eO8cgjjzDMNgUFBXyUkpISuru7eeutt/jOd77DK6+8QmZmJsP+7u/+js7OTjIzMxnW1NTE0qVLCYWuRwGhUOgzlZyczOTJk8nMzORPkZycTEZGBn+KWCzGihUr2L9/P3HRaJSnnnqKzMxMZs2axUjJycmMHz+eIAgYLZKTk8nIyOCjBEFAUlISIyUnJzN+/HiCIOCzkpyczPjx4wmCgP+p5ORkxo8fTxAE/E9kZGSwbNkyfv7zn/NJnDlzhv7+foqLiwmFrkcBoVDoc2P8+PE8+eSTVFVVcccddzB9+nROnDjBv/zLvxAEAaHRbfXq1TQ3N3PhwgU+zrZt23jiiSdITk4mFLoeBYRCoc+VoqIifvOb33D06FGOHz/O3r17ueOOOwiNfmlpaezdu5eMjAw+zrZt2ygoKCAUul4FhEKhz6XU1FRSUlIIJZaUlBSSkpL4OGlpaYRC17OAUCgUCoVCoQQTEAqFQqFQKJRg/i87n5JYcoutDwAAAABJRU5ErkJggg==" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">figure(2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[error_train, error_val] = </span><span class="S15">...</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> learningCurve(X_poly, y, X_poly_val, yval, lambda);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="8F818686" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_13" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(error_train(1:m));</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(error_val(1:m));</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">legend(</span><span class="S11">'Train'</span><span class="S0">,</span><span class="S11">'Cross Validation'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">title(sprintf(</span><span class="S11">'Polynomial Regression Learning Curve (lambda = %f)'</span><span class="S0">, lambda));</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'Number of training examples'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Error'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">axis([0 13 0 100]);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">off</span><span class="S0">;</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="067DF955" data-scroll-top="null" data-scroll-left="null" data-testid="output_14" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1413" widgetid="uniqName_196_1413" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1415" widgetid="uniqName_196_1415" src="data:image/png;base64,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TTfdxB/yi1/8grLdu3fz2c9+lhg7BSeA7du383y/+tWv6OzsZOfOnRxJqVRi69at2CYiIsbGd7/7XebMmcPb3vY2PvnJT/JXf/VXnHfeedx6660cS8PDw9x0000837/8y79QFAUv5Oc//zn33HMPZcPDwzz77LMcyc9//nPuuece/pA///M/p2x4eJhnn32WGDsFFW716tUsXbqU0bq6uvibv/kb7r77bpYvX84ll1zC8PAwh23cuJELL7yQTZs2sWTJElauXElERLwyzz33HJ/4xCe49dZb+fSnP80HP/hBPvaxj7Fu3TpuvPFGyvbv38/DDz/MI488wtatWzmsq6uLO++8k5/+9Kcctm/fPu666y7uvvtunn32WQ7bt28fd911F3fffTfPPvssR/LJT36SDRs28Lvf/Y7Dfve733HHHXfw0Y9+lLLh4WG2bt3KnXfeyc6dO3m+adOmsXDhQkb73ve+x913381ow8PDbN26lTvvvJOdO3dy2H//93/z29/+lq1bt/KGN7yBhQsXMlpXVxd33nknP/3pTzls//79PPzwwzz99NPcdddd9PT0EEdWUKEOHDjAtddey80338xoQ0NDXHvttaxYsYLly5fzzW9+kwMHDrB582bKhoaGaGtrY926dSxbtoyOjg7Wrl3Lnj17qBS//MpVlNouoNR2Ab/8ylX88itX8cuvXMXT69t5en07T69v5+n17Ty9vp2D963n4H3rOXjfeg7et56B3m4GersZ6O1moLebwb0lBveWGNxbIiLildi8eTPjx4+nubmZ0ebNm8fDDz9M2UMPPcQll1zCRz7yEb74xS/y3HPPce655/KFL3yBzZs38/73v5+1a9eye/du3vve99LZ2cntt9/OGWecwcDAALt37+a9730vnZ2d3H777ZxxxhkMDAzwfG95y1s455xzuOOOOzjs1ltvZd68ebzhDW/gd7/7He9+97tZu3YtmzdvZvHixbS1tTHaQw89xPnnn0/Zc889x/ve9z5Wr17Nhg0b+Lu/+zvKfve73/Hud7+btWvXsnnzZhYvXkxbWxtl999/P2V33HEHu3bt4vzzz6dseHiYc889ly984Qts3ryZ97///axdu5ayhx56iIsuuojzzjuPjRs3ctFFF/GlL32J+N8KKtSKFSuYPHkyN9xwA6N1dXXxpje9ife85z0c9t3vfpd58+ZRdv/99zNp0iROO+00yiZPnszs2bPZsWMHlWLi3AVMWdDKlAWt1DTMoqZhFjUNsziSgd5uBnq7Gejt5pltd/D0+naeXt/O0+vbeeorn+HnbfP5edt8ft42n7750+mbP52++dPpmz+dJ5bM5IklM3liyUyeWDKTJ5bMpNR2AaW2Cyi1XcAvv3IVv/zKVQz0dhMRR8fT69vpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nb750+mbP52++dPpmz+dvvnT6Zs/nafXt3PY/v37ede73sUfsnv3brZt20ZXVxcbNmxgYGCAe++9l9WrV9PV1cWSJUvo7u7mzDPPZMWKFdxyyy20t7fzzDPPsHPnTs4880xWrFjBLbfcQnt7O8888wxH8tGPfpRvfOMbHHbbbbdxxRVXULZ7924uuOACbr31VlavXs1NN93Ezp07eSEbNmzg5JNP5q677uJrX/san/nMZyjbvXs3F1xwAbfeeiurV6/mpptuYufOnZR9+tOfpuyrX/0qr3vd6zjsm9/8JgMDA9x7772sXr2arq4ulixZwnPPPUdZX18f99xzD1/96ldZtWoVGzZsIP63ggp13XXXcc0111BdXc1o+/fvp66ujuuuu44zzzyTv/zLv+RrX/sahx04cIDTTz+d0SZMmEBfXx8vRhKSkMSqVat4NdU0zKKmYRY1DbOYOHcBE+cuYOLcBUxZ0MqUBa1MWdDKlAWtTFnQyhuvXMEbr1zBG69cQd31G6i7fgN112+g7voNvPXfdvLWf9vJW/9tJ2/9t53Ud/RT39FPfUc/9R39vPn6Dt58fQdvvr6DN1/fwRuu/P+YsqCVKQtambKglZqGWdQ0zOLnbfOJiKNjyoJW6jv6qe/op76jn/qOfuo7+qnv6Ke+o5/6jn7qO/qp7+invqOf+o5+6jv6qe/op76jn/qOfuo7+qnv6Ke+o5/6jn7qO/qp7+invqOf+o5+6jv6qe/op76jn/qOfuo7+qnv6Ke+o5/6jn7qO/qp7+invqOf+o5+6jv6qe/op76jnykLWjnslFNOob+/nz+kvr6eiRMnUtbZ2UlzczOHve1tb6OmpobJkyeze/duamtrufjii6mpqWHatGnMmzeP3bt3U1tby8UXX0xNTQ3Tpk3jSBYtWsRDDz3EU089RalUoq+vjw984AOUnXXWWTQ3N/O5z32ORYsW0dLSwtDQEC+ks7OTM844g8Nmz55N2VlnnUVzczOf+9znWLRoES0tLQwNDfFiOjs7aW5u5rC3ve1t1NTU8MADD1A2ZcoUJkyYQNnJJ5/MU089xR9j1apVSEISkjhRFVSooig4kh//+Mds2rSJhoYGfvjDH3L77bfz7//+7+zYsYOyoaEhiqJgtKIoGB4e5sXYxja2aWlp4bWgamodVVPrqJpaR9XUOmoaZlHTMIuahlnUNMxi4twFTJy7gKraOgb3loiI17aZM2fy8MMPs2/fPkbbt28fdXV1PPvss5RNmzaNw6qrq/n1r3/NaM899xx1dXU8+uijbNmyhXe9610sXryY22+/nTe84Q08+uijbNmyhXe9610sXryY22+/nSMZP348H/nIR7j99tv5+te/zic/+UkO+973vsf555/PmWeeydVXX82qVasYHh7mhZxyyikMDg5y2O9//3vKvve973H++edz5plncvXVV7Nq1SqGh4d5MdXV1fz6179mtOeee44JEyZQVhQFr0RLSwu2sY1tTlQFJ5g/+7M/4y1veQsLFy6kTBLnnnsud999N2UnnXQSQ0NDjDY8PMz48eOJl6e6oZFDvT1ExGvbtGnTWLx4MZ/4xCc4ePAgZQMDA1x22WXMnj2b17/+9Tzfhz70Ie6++25+85vfUHbfffdxyimncM8993DVVVdx1llncfXVV9PU1MSePXv40pe+xFVXXcVZZ53F1VdfTVNTE3v27OGFfPzjH2fDhg3cfvvtfPSjH+WwzZs309zczMUXX8yMGTPYtm0bjz76KC/kwx/+MF1dXfzmN7+h7M4776Rs8+bNNDc3c/HFFzNjxgy2bdvGo48+ymjPPfcco33oQx/i7rvv5je/+Q1l9913H6eccgrvete7iJeu4AQzZcoUnq8oCoqioGzq1Kk88sgjjLZ//35mzJhBvDxVU+sY6O0mIuJf//VfmTZtGm984xt561vfytSpU/mTP/kT1qxZw5HMnTuXhQsXIolzzz2Xj3/843zrW99iyZIl7Nixg3POOYc5c+bws5/9jE996lNcfvnl7Nixg3POOYc5c+bws5/9jE996lO8kL/4i7/gt7/9LW9605t4y1vewmGXX345mzdv5rzzzmPu3LmccsopPPPMM4yMjHAk55xzDhdffDHvfOc7Oeecc9ixYwdll19+OZs3b+a8885j7ty5nHLKKTzzzDMMDw9T9v73v5+JEydSKpU4bO7cuSxcuBBJnHvuuXz84x/nW9/6FkVREC9dwQlm7ty5/OpXv+K+++6j7Fe/+hXbt2/nb//2byk7++yzKevq6qLs8ccfp7u7m8bGRuLlqaqtIyKi7OSTT2bNmjX85je/4Uc/+hEHDx7klltuYcKECZQ1NzezZcsWRrv++usplUp85zvf4YknnqCxsZEpU6awa9cutmzZwpYtW9i+fTtTpkxhypQp7Nq1iy1btrBlyxa2b9/OlClTeDHf//732bJlC6PV19fzi1/8gm984xvce++9tLW1MTAwwLnnnsuWLVsoa25uZt++fRz2j//4jzz++OPce++9dHV1sWXLFurr6/nFL37BN77xDe69917a2toYGBigKArKtm/fzsGDB/nYxz7Gvn37OOz666+nVCrxne98hyeeeILGxkbKmpubefLJJzmsubmZJ598kvjfCk4wVVVVfOUrX+ELX/gCF154IR/4wAdYuHAhM2fOpKwoCpYvX87SpUtZvHgxixYt4sYbb+TUU08lXp6JcxdwcNt6IiIOK4qCCRMmUBQFL0VRFNTU1PB8J598Mq9//et5vpNPPpnXv/71vFITJkygKApeqvHjx/P617+e55swYQJFUXAk48eP50iKoqCmpoZ4eQoq3Jw5c9i+fTujvfvd7+a+++7jP//zP9m1axdXXHEFo82cOZMHHniAdevWsWvXLubNm0e8MlW1dQzuLREREXEsFESMgeqGRg719hAREXEsFESMkcF9JSLilXnPe96DJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCTe85738FpXEDEGahpmMbi3RES8Mrfc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NnGQ2MRBjN3zGLvnMXbPs3bmLGtnzrJ25izGs/OsmZhhzcQMayZmiNhZInaWiJ0lPDxKKJEiYmdZMzGDsXseY/c8/c4k/c4kPSM2oUSKrr4Y4tPREEIsG+HhUZqVMu/WqlVpVso0Sj7nprZyemyQM95G3pg7QKtWJTw8ypqJGYzd88QmDtLvTNIzYiOuja6+GBE7S2ziIMaz8/Q/OklXXwxxc+jqi9HVF6OrL0ZXX4xQIkUokSKUSNEzYtMzYhNKpOjqiyGuHQ0hxLLRM2LTmPNplHwaJZ9zU1upehs4423k/NRjNCtlQokUtztPY+yeJzZxkH5nkp4Rm1Aihbj+uvpidPXFEEL8PQ0hxLKyZmKGul+gWSkTSqSI2FmM3fMYu+fpdybpGbEJJVIIIcTNTEMIsayEEimM3fP0O5P0jNiEEimEEKLdaAghhBBCtBkNIYQQQog2oyGEEEII0WY0hBBCCCHajIYQQgghRJvREEIIIYRoMxpCfEq7du1CfLBdu3YhPtyuXbsQH2zXrl2ID7Zr1y7E8qOxTFWrVY4cOUIQBIhPZ2pqCvHBpqamEB9uamoK8cGmpqYQH2xqagqx/GgsQ4cOHWLTpk0cPnyYsbExisUiQgghhGgfGsvMwsICnuexb98+duzYwczMDHv37uW1115DCCGEEO1BY5l57rnnWLlyJXfeeSdLVq1axf3338+xY8f4IPfddx/xeJx4PE48HicejxOPx4nH48TjceLxOPF4nHg8TjweJx6PE4/HicfjxONx4vE48XiceDxOPB4nHo8Tj8eJx+PE43Hi8TjxeJx4PE48HicejxOPx4nH48TjceLxOPF4nHg8TjweJ/qNNLrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665VJf+8/olotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JZLfe0/o1suuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlolsuuuWiWy665aJbLrrlUl/7z+iWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolotuueiWi2656JaLbrnolkvYzhO284TtPGE7T9jOE7bzhO08YTtP2M4TtvOE7TxhO0/YzhO284TtPGE7T9jOE7bzhO08YTtP2M4TtvOE7TxhO8+5L32XsJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5wnaesJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5wnaesJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5wnaesJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5wnaesJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5wnaesJ0nbOcJ23nCdp6wnSds5wnbecJ2nrCdJ2znCdt5zn3pu4TtPGE7T9jOE7bzhO08YTtP2M4TtvOE7TxhO0/YzhO284TtPGE7T9jOE7bzhO08ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ0ofQ01aHH6EQay8ylS5e46667uNptt93GqVOn+CD/8R//QRAEBEFAEAQEQUAQBARBQBAEBEFAEAQEQUAQBARBQBAEBEFAEAQEQUAQBARBQBAEBEFAEAQEQUAQBARBQBAEBEFAEAQEQUAQBARBQBAEBEFAEAQEQUAQBHz//3koR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEoR6EchXIUylEUcxmKuQzFXIZiLkMxl6GYy1DMZSjmMhRzGYq5DMVchmIuQzGXoZjLUMxlKOYyFHMZirkMxVyGYi5DMZehmMtQzGUo5jIUcxmKuQzFXIZiLkMxl6GYy1DMZSjmMhRzGYq5DMVchmIuQzGXoZjLUMxlKOYyFHMZirkMxVyGYi5DMZehmMtQzGUo5jIUcxmKuQzFXIZiLkMxl6GYy1DMZSjmMhRzGYq5DMVchmIuQzGXoZjLUMxlKOYyFHMZirkMxVyGYi5DMZehmMtQzGUo5jIUcxmKuQzFXIZiLkMxl6GYy1DMZSjmMhRzGYq5DMVchmIuQzGXoZjLUMxlKOYyFHMZirkMxVyGYi5DMZehmMtQzGUo5jIUcxmKuQzFXIZiLkMxl6GYy1DMZSjmMhRzGYq5DMVchmIuQzGXoZjLUMxlKOYyFHMZirkMs+OjzI6PMjs+yuz4KLPjo8yOjzI7Psrs+Ciz46PMjo8yOz7K7Pgos+OjzI6PMjs+yuz4KLPjo8yOjzI7Psrs+Ciz46PMjo8yOz7K7Pgos+OjzI6PMjs+yuz4KLPjo8yOjzI7Psrs+Ciz46PMjo8yOz7K7Pgos+OjzI6PMjs+yuz4KLPjo8yOjzI7Psrs+Ciz46PMjo8yOz7K7Pgos+OjzI6PMjs+yuz4KLPjo8yOjzI7Pkon0lhmFhYW0DSNq2maxuLiIu3CMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw0808AzDTzTwDMNPNPAMw3SySjpZJR0Mko6GSWdjJJORkkno6STUdLJKOlklHQySjoZJZ2Mkk5GSSejpJNR0sko6WSUdDJKOhklnYySTkZJJ6Okk1HSySjpZJR0Mko6GSWdjJJORkkno6STUdLJKOlklHQySjoZJZ2Mkk5GSSejpJNR0sko6WSUdDJKOhklnYySTkZJJ6Okk1HSySjpZJR0Mko6GSWdjJJORkkno6STUdLJKOlklHQySjoZJZ2Mkk5GSSejpJNR0sko6WSUdDJKOhklnYySTkZJJ6Okk1HSySjpZJR0Mko6GSWdjJJORkkno6STUdLJKOlklHQySjoZJZ2Mkk5GSSejpJNR0sko6WSUdDJKOhklnYySTkZJJ6Okk1HSySjpZJR0Mko6GSWdjJJORkkno6STUdLJKOlklHQySjoZJZ2Mkk5GSSejpJNR0sko6WSU4YFehgd6GR7oZXigl+GBXoYHehke6GV4oJfhgV6GB3oZHuhleKCX4YFehgd6GR7oZXigl+GBXoYHehke6GV4oJfhgV6GB3oZHuhleKCX4YFehgd6GR7oZXigl+GBXoYHehke6GV4oJfhgV6GB3oZHuhleKCX4YFehgd6GR7oZXigl+GBXoYHehke6GV4oJfhgV6GB3oZHuhleKCX4YFehgd6GR7oZXigl+GBXoYHehke6KUTaSwzt956KwsLC1xtcXGRFStWIIQQQoj2oLHM9PX18dJLL3G1ixcvcu+99yKEEEKI9qCxzCSTSZYcPXqUJa+88grlcpmhoSGEEEII0R40lhlN09i5cyfbtm1j8+bNPPjggzzxxBPouo4QQggh2oPGMjQ4OMjx48fZt28fJ0+eZP369QghhBCifWgIIYQQQrQZDSGEEEKINqMhPlC1WuXIkSMEQYB4r1dffZUjR47whz/8AfHhXnzxRf7yl78g/t6FCxf4/e9/z/z8POK9XnvtNY4cOcLLL7+MeK/nn3+ed6tWqxw5coQgCFjunn/+ed7t1Vdf5ciRI/zhD3+g3WmI93Xo0CE2bdrE4cOHGRsbo1gsIt7x05/+lO9973scPnyYiYkJHnroIf72t78h3uvVV1/l4Ycf5sUXX0S84+jRo3z7299mdnaWnTt38vDDD7O4uIh42969e/mXf/kXDh8+zGOPPca//uu/It7x7LPPsm3bNq526NAhNm3axOHDhxkbG6NYLLJcPfvss2zbto2r/fSnP+V73/sehw8fZmJigoceeoi//e1vtCsN8R4LCwt4nse+ffvYsWMHMzMz7N27l9deew0BL7/8MgcOHODXv/41O3bs4De/+Q1//etfOXToEOLvtVotstksuq4j3rGwsMDjjz/O5OQkO3fu5Fe/+hWXLl3id7/7HQIWFxfZuXMn//7v/86OHTvwfZ//+q//4uWXX2a5u3TpEo8//jg///nPudrCwgKe57Fv3z527NjBzMwMe/fu5bXXXmM5uXTpEo8//jg///nPudrLL7/MgQMH+PWvf82OHTv4zW9+w1//+lcOHTpEu9IQ7/Hcc8+xcuVK7rzzTpasWrWK+++/n2PHjiFg5cqV7Nmzh5UrV3KFYRicPXsW8feeeuopvvGNb7B27VrEO44ePcrnPvc57rvvPq747W9/y/r16xFv+7//+z/+6Z/+iSXd3d1omsb//u//stxNTk6yatUqfvazn3G15557jpUrV3LnnXeyZNWqVdx///0cO3aM5WRycpJVq1bxs5/9jKutXLmSPXv2sHLlSq4wDIOzZ8/SrjTEe1y6dIm77rqLq912222cOnUKAdFolFQqxRWvv/46pVKJBx54APGOF154gfn5eX7wgx8g/t7FixeJxWJs376dL33pS3z5y1/mF7/4BeJtmqbheR5btmyhWCzy8MMPMzo6ype+9CWWu+3bt5PL5eju7uZqly5d4q677uJqt912G6dOnWI52b59O7lcju7ubq4WjUZJpVJc8frrr1MqlXjggQdoVxriPRYWFtA0jatpmsbi4iLi750/f550Os2WLVu4++67EW9rNBps376dp556CvFer776KocPHyaRSPDiiy/yy1/+kunpaY4dO4Z428mTJwmFQqxevZqVK1fyP//zPzSbTZY7TdN4PwsLC2iaxtU0TWNxcZHlRNM0/pHz58+TTqfZsmULd999N+1KQ7zHrbfeysLCAldbXFxkxYoViHf88Y9/5Dvf+Q7f/e53GRsbQ7zjySef5J577uH111/n6NGjXLhwgUqlQhAECPj85z/PF77wBUZHR1kSj8d54IEHmJ2dRcDvf/97/vu//5v9+/fz0EMPsWfPHpb827/9G+L93XrrrSwsLHC1xcVFVqxYgXjHH//4R77zne/w3e9+l7GxMdqZhniPvr4+XnrpJa528eJF7r33XsTbyuUymUyGH//4xzzyyCOIv7d69WrefPNN9u/fz/79+/nzn//M0aNHKZfLCIhEIrybpmlomoaAixcvsnbtWm655Rau+MIXvkC1WkW8v76+Pl566SWudvHiRe69917E28rlMplMhh//+Mc88sgjtDsN8R7JZJIlR48eZckrr7xCuVxmaGgIAdVqFcdxePLJJxkZGaHVatFqtVhYWEC87Yc//CF79uxhz5497Nmzhy9+8Yts2bKFRx55BAEjIyNcuHCBUqnEkgsXLvD8889jWRYC7rnnHo4fP86f/vQnljQaDU6ePMl9992HeH/JZJIlR48eZckrr7xCuVxmaGgIAdVqFcdxePLJJxkZGaHVatFqtVhYWKBdaYj30DSNnTt3sm3bNjZv3syDDz7IE088ga7rCNi/fz9vvvkm3//+91m3bh3r1q1j3bp15PN5hPgourq6mJqa4ic/+QmbNm3iW9/6FqOjowwODiLg7rvvZtu2bdi2zebNm/n617/OV7/6VTZs2IB4f5qmsXPnTrZt28bmzZt58MEHeeKJJ9B1HQH79+/nzTff5Pvf/z7r1q1j3bp1rFu3jnw+T7vSEO9rcHCQ48ePs3v3bl544QXWr1+PeNuPfvQjgiAgCAKCICAIAoIgYPv27Yj3t2fPHr75zW8i3vGVr3yFUqnE3r17mZ+fZ8uWLYh3jI6O8sILL7B7927m5+d5/PHHEe/42te+xvPPP8/VBgcHOX78OLt37+aFF15g/fr1LFdf+9rXeP7557niRz/6EUEQEAQBQRAQBAFBELB9+3balYb4UKFQCE3TEEJcG93d3dxyyy2I99I0jVAoxC233IL46EKhEJqmITqbhhBCCCFEm9EQQgghhGgzGkIIIYQQbUZDCCGEEKLNaAghhBBCtBkNIYQQQog2oyGEEEII0WY0hBBCCCHajIYQQgghRJvREEIIIYRoMxpCCCGEEG1GQwghhBCizWgIIYQQQrQZDSGEEEKINqMhhBBCCNFmNIQQQggh2oyGEEIIIUSb0RBCCCGEaDMaQgghhBBtRkMIIYQQos1oCCGEEEK0GQ0hhBBCiDajIYQQQgjRZjSEEEIIIdqMhhBCCCFEm/n/AQ/rKko3cJ3mAAAAAElFTkSuQmCC" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'Polynomial Regression (lambda = %f)\n\n'</span><span class="S0">, lambda);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="6669DB0E" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_15" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">Polynomial Regression (lambda = 0.000000)</div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'# Training Examples\tTrain Error\tCross Validation Error\n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="713EBF74" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_16" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"># Training Examples Train Error Cross Validation Error</div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> fprintf(</span><span class="S11">' \t%d\t\t%f\t%f\n'</span><span class="S0">, i, error_train(i), error_val(i));</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="572F3D44" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="171" data-testid="output_17" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> 1 0.000000 160.721900<br> 2 0.000000 160.121510<br> 3 0.000000 61.754825<br> 4 0.000000 61.928895<br> 5 0.000000 6.597981<br> 6 0.000060 10.517076<br> 7 0.015259 13.699524<br> 8 0.068689 8.010588<br> 9 0.043567 40.949449<br> 10 0.063380 9.173390<br> 11 0.134434 8.465502<br> 12 0.120138 11.288354</div></div></div></div></div><div class = "S14"><span class = "S2"><span class="S0">The polynomial fit is able to follow the datapoints very well - thus, obtaining a low training error. However, the polynomial fit is very complex and even drops off at the extremes. This is an indicator that the polynomial regression model is overfitting the training data and will not generalize well.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">To better understand the problems with the unregularized (</span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">= 0) model, you can see that the learning curve shows the same effect where the low training error is low, but the cross validation error is high. There is a gap between the training and cross validation errors, indicating a high variance problem.</span></span></div><div class = "S4"><span class = "S2"><span class="S0">One way to combat the overfitting (high-variance) problem is to add regularization to the model.</span></span><span class = "S2"><span class="S0"> </span></span></div><h2 class = "S3"><span class = "S2"><span class="S0">Selecting </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">using a cross validation set</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">The value of </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">can significantly affect the results of regularized polynomial regression on the training and cross validation set. In particular, a model without regularization (</span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">= 0) fits the training set well, but does not generalize. Conversely</span></span><span class = "S2"><span class="S0"> a model with too much regularization (</span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">= 100) does not fit the training set. Concretely, we will use a cross validation set to evaluate how good each </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">value is. After selecting the best </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">value using the cross validation set, we can then evaluate the model on the test set to estimate how well the model will perform on actual unseen data to the data. Let's try </span></span><span class = "S2"><span class="S5">λ </span></span><span class = "S2"><span class="S0">in the following range: (0,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.001,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.003,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.01,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.03,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.1,</span></span><span class = "S2"><span class="S5"> </span></span><span class = "S2"><span class="S0">0.3, 1, 3, 10) </span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span><span class="S0">[lambda_vec, error_train, error_val] = </span><span class="S0">validationCurve(X_poly, y, X_poly_val, yval);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="7D3AAED3" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_18" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">close </span><span class="S11">all</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(lambda_vec, error_train, lambda_vec, error_val);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">legend(</span><span class="S11">'Train'</span><span class="S0">, </span><span class="S11">'Cross Validation'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">xlabel(</span><span class="S11">'lambda'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ylabel(</span><span class="S11">'Error'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsFigure" uid="BF5CAD37" data-scroll-top="null" data-scroll-left="null" data-testid="output_19" style="width: 631px; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureElement" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="figureContainingNode" style="width: 560px; max-width: 100%; display: inline-block; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="GraphicsView" data-dojo-attach-point="graphicsViewNode,backgroundColorNode" id="uniqName_196_1416" widgetid="uniqName_196_1416" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><img class="ImageView figureImage" data-dojo-attach-point="imageViewNode" draggable="false" ondragstart="return false;" id="uniqName_196_1418" widgetid="uniqName_196_1418" src="data:image/png;base64,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u+wyHnjgAf7Tf/pPXHbZZVx22WUURcGJOnLkCAcOHCDitRRERES8AS6//HKuv/56rr/+et7xjnfQ2trK9ddfz/XXX8+LL77Is88+y3e/+102btzImCNHjrBx40Yeeughnn76aY5paGjgmmuuYcy+fft49tln2bt3Lw8//DDf/va3iRhTEBER41ZXX4VJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasGmLRqgEmrBpi0aoBJqwaYtGqASasG6OqrcCK2bdvGH//xH3PDDTdwxx13sH//ft773vfS09NDf38/ixcvprOzkzHbtm1jwYIFjNm2bRuLFi3iqquu4pFHHmHRokXceeedRBRERMS41Tl/BkdXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7dydHUrR1e3cnR1K0dXt3J0dStHV7fSOX8GJ2rHjh088cQTDA4OMjQ0xIc+9CHuu+8+1q1bx5o1a3j66ad5JUNDQzz22GN8+ctfZu3atTz44INEFERERLwJmpqaeOc738mYiy66iLa2Nm6//XauvfZaVq5cyeHDh3klZ511FlOmTGHM5MmT2b17NxEFERERb4KGhgaO+eY3v8mCBQu48MILue2221i7di1HjhzhlRRFQcTLFURERLzJ+vv7aWtr47rrruM973kPTzzxBNu3byfiRBVERES8yW655Rb6+/u56qqrKJVKnHHGGbz44oscOXKEiBNREBER8Qbbs2cPV155Jce0tbWxYcMGjmlqamLXrl3ce++9PP7443R2drJ//36KoqCtrY09e/Ywpq2tjR//+Mcc09bWxo9//GMiCiIiIt4iU6ZMoSgKIn5ZBRERERF1piAiIiKizhRERERE1JmCiIiIiDpTEBEREVFnCiIiIt5AO3bs4OMf/zgLFixg8eLFfPvb3+bN1tnZyZYtW3i5bdu28bd/+7e8mh07drBmzRrG7Nixg1tvvZVXsmPHDtasWcPr2bVrF2N27NjBrbfeSrxxCiIiIt4g//zP/8zll1/Ou9/9bm666SbmzJnDVVddxX333ceb6ciRI6xZs4aX+/znP09RFLyaH/3oRzz22GOMOXLkCAcOHOCV/OhHP+Kxxx7j9fzmb/4mY44cOcKBAweIN05BRETEG+DQoUN8+MMf5r777uNjH/sYV155JUuXLuXuu+/m7/7u7xizb98+nn32Wb773e+yceNGjhkcHOShhx5ieHiYY/bs2cPDDz/Mo48+yoEDBzhmz549PPzwwzz66KMcOHCAV3LTTTfx4IMPUqvVOKZWq/HAAw+wZMkSxhw5coSNGzfy0EMP8fTTT/NyDQ0NXHPNNRzvm9/8Jo8++ijHO3LkCBs3buShhx7i6aef5pj//b//Nz/72c/YuHEj5557Ltdccw3HGxwc5KGHHmJ4eJhj9u3bx7PPPsvevXt5+OGH+fa3v028soKIiIg3QH9/P6eccgptbW0c7/3vfz/PPvssY7Zt28Yf//Efc8MNN3DHHXdw6NAh5s6dy1//9V/T39/PJZdcQk9PDzt27OD3f//3GRgY4P7776e5uZn9+/ezY8cOfv/3f5+BgQHuv/9+mpub2b9/Py93/vnnc+mll/LAAw9wzH333cf73/9+zj33XGq1Gu9973vp6emhv7+fxYsX09nZyfG2bdvGggULGHPo0CH+23/7b6xbt44HH3yQj3zkI4yp1Wq8973vpaenh/7+fhYvXkxnZydjvvWtbzHmgQceYOvWrSxYsIAxR44cYe7cufz1X/81/f39XHLJJfT09DBm27ZtLFq0iKuuuopHHnmERYsWceeddxK/qCAiIsatvf9zNUMLGxla2MjQwkaGFjYytLCRoYWNDC1sZGhhI0MLGxla2MjQwkaGFjYytLCRoYWNDC1sZGhhI0MLGxla2MjQwkaGFjYytLCRoYWNDC1sZGhhI0MLGxla2MjQwkaGFjYytLCRoYWNDC1sZGhhI0MLGxla2MjQwkaGFjYytLCRoYWNDC1sZO//XM0x+/bt4+KLL+b17NixgyeeeILBwUEefPBB9u/fz+OPP866desYHBxk+fLlPPXUU1x44YV87nOf45577mH16tW8+OKLPP3001x44YV87nOf45577mH16tW8+OKLvJIlS5Zw7733csxXvvIVPvrRjzJmx44dfOhD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sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vY5p577uFkVxARERFRZwoiIiIi6kxBRERERJ0piIiIiKgzBRERERF1piAiIiKizhTEa9r/vac459QjRERExPhREK/p/3zv27SdeZCIiIgYPwoiIiIi6kxBRERERJ0piIiIiKgzBRERERF1piAiIiKizhRERERE1JmCiIiIiDpTEBEREVFnCiIiIiLqTMEE9v3vf5+NGzdSLpd5uZ07d7Jx40ZsExEREfWlYIL69Kc/zbJly+jr66Orq4tFixbx85//nDGPPPII7e3t9PX1sXz5cv7+7/+eiIiIqB8FE9Bzzz3HAw88wNe+9jU++9nP8o1vfIOf/OQnPPLIIxw+fJjOzk7uvvtuPvvZz9Lb20tPTw/VapWIiIioDwUT0Jlnnsldd93FmWeeyTEzZsxgZGSEb33rW5x55pn8xm/8BmOmTZvGZZddxpNPPsmrOefUo0hCEpJYu3YtERER49HatWuRhCQkMVEVTEANDQ20tLRwzPDwMJs2bWLu3Lm88MIL/NZv/RbHmzJlCkNDQ7wW29jGNitXriQiImI8WrlyJbaxjW0mqoIJbvfu3SxZsoSPfvSjNDc3c/jwYYqi4HhFUXDkyBEiIiKiPhRMYN/5znf44Ac/yA033MDy5csZ8453vIPDhw9zvCNHjnDKKacQERER9aFggnrqqae48cYb+au/+iuWLl3KMeeccw7f/e53Od6+fft4z3veQ0RERNSHgglo586drFixgs985jOUSiUOHjzIwYMHOXz4MLNnz2bM4OAgY/7t3/6Np556ive9731EREREfSiYgL7yla/ws5/9jFtuuYULLriACy64gAsuuIA777yToij4H//jf/DJT36SxYsXc+211/J3f/d3/Of//J+JiIiI+lAwAf3Zn/0ZtrGNbWxjm0996lOM+b3f+z3+5V/+hbvvvputW7fy/ve/n4iIiKgfBRERERF1piAiIiKizhRERERE1JmCiIiIiDpTEBEREVFnCiIiIiLqTEFEREREnSmIiIiIqDMFEREREXWmICIiIqLOFERERETUmYKIiIiIOlMQERERUWcKIiIiIupMQURERESdKYiIiIioMwURERERdaYgIiIios4URERERNSZgoiIiIg6UxARERFRZwoiIiIi6kxBRERERJ0piIiIiKgzBRERERF1piAiIiKizhRERERE1JmCiIiIiDpTEBEREVFnCiIiIiLqTEFEREREnSmIiIiIqDMFEREREXWmIF7XOaceISIiIsaPgnhdv3PGYSIiImL8KIiIiIioMwURERERdaYgIiIios4URERERNSZgoiIiIg6UxARERFRZwoiIiIi6kxBnJCDz+8kIiIixoeCiIiIiDpTEBEREVFnCiIiIiLqTEFERERMONXRGl19FSqtn6Y6WmOiKYiIiIgJozpao6uvQqm7zJhf//b/w/Rpk5loCiIiIqLuVUdrdPVVKHWXGbNp+Sw658/g7f9nLxNRQURERNSt6miNrr4Kpe4yYzYtn0Xn/BlMnzaZiawgTsjBPTuJiIgYL6qjNbr6KpS6y4zZtHwWnfNnMH3aZE4GBREREVE3qqM1uvoqlLrLjNm0fBad82cwfdpkTiYFERERMe5VR2t09VUodZcZs2n5LDrnz2D6tMmcjAoiIiJi3KqO1ujqq1DqLlPdV2PT8ll0zp/B9GmTOZkVRERExLhTHa3R1Veh1F2muq/GpuWz6GlvZvq0yQQURERExLhRHa3R1Veh1F2muq/GpuWz6GlvZvq0ycT/VRARERFvuepoja6+CqXuMtV9NTYtn0VPezPTp00mflHBSWDz5s0cb3R0lK1bt7J161a2bt3K1q1beemll4iIiHizVUdrdPVVKHWXqe6rsWn5LHram5k+bTLx6gomuHXr1vHJT36S4339619n8eLFLFu2jGXLlrFs2TKeffZZXsuh539ERETEG6U6WqOrr0Kpu0x1X41Ny2fR097M9GmTiddXMEG98MILfOITn+Af/uEfeLnvfe97dHR0UC6XKZfLlMtlLrnkEiIiIn7VqqM1uvoqlLrLVPfV6Glvpqe9menTJhMnrmCC+tznPse0adP4m7/5G15u+/btzJw5k9HRUQ4ePEhERMSvWnW0RldfhVJ3meq+Gj3tzfS0NzNn5lTil1cwQX3qU5/iT//0TznttNM43uHDh/nhD3/IHXfcwR/8wR9w4YUX8hd/8Re8nj//xJ8jCUmsXbuWiIiIE1EdrdHVV6HUXaa6r0ZPezM97c3MmTmVX4W1a9ciCUlIYqIqmKCKouCV7N69m7a2Nr70pS/x1FNPsWnTJjZv3sz999/Pa/nvf/vfsY1tVq5cSURExGupjtbo6qtQ6i5T3Vejp72ZnvZm5sycyq/SypUrsY1tbDNRFZxkGhsb+fznP09jYyNjzj33XObOncu2bduIiIj4j6qO1ujqq1DqLlPdV6OnvZme9tmM400AACAASURBVGbmzJxKvHEKTjLDw8P09vZyvAMHDvC2t72NiIiIf6/qaI31W3ZR6i6zfusuetqb6WlvZs7MqcQbr+AkU6vV6Ozs5Pvf/z5jdu/ezeOPP84f/uEfEhER8cuqjtZYv2UXpe4yXf0VetqbqXS0MGfmVOJXp+AkI4mOjg6uvvpqFi9ezBVXXMFNN93EJZdcQkRExImqjtZYv2UXpe4yXf0VetqbqXS0MGfmVOJXr2CCu/zyy9m8eTPHW7RoEeVymbvvvptyuczSpUt5PQf37CQiIqI6WmP9ll2Uust09VfoaW+m0tHCnJlTiTdPQURERLyu6miN9Vt2Ueou09Vfoae9mUpHC3NmTiXefAURERHxmtZv2UWpu0xXf4We9mYqHS3MmTmVeOsURERExCtav2UXpXVluvor9LQ3U+loYc7MqcRbryAiIiL+f9Zv2UVpXZmu/gqLZzdQ6WhhzsypxPhREBEREf+f9Vt2UVpXpqu/wuLZDVQ6Wlgyu4EYfwoiIiJOcuu37KK0rkxXf4XFsxuodLSwZHYDMX4VREREnKTWb9lFaV2Zrv4Ki2c3UOloYcnsBmL8K4jX9fyBgoPP7yQiIiaG6miN0royXf0VFs9uoNLRwpLZDUT9KIiIiDhJVEdrlNaVKXWXmTNzKpWOFpbMbiDqT0FERMQEVx2tUVpXptRdZs7MqVQ6WuicP4OoXwXj0OjoKBEREf9R1dEapXVlSt1l5sycSqWjhc75M4j6VzAOXXnllXzhC18gIiLi36M6WqO0rkypu8ycmVOpdLTQOX8GMXEUjEOHDh3i/PPPJyIi4pdRHa1RWlem1F1mzsypVDpa6Jw/g5h4CsahL37xi9x2223cdddd/OAHP2B4eJjh4WGGh4cZHh4mIiLieNXRGku/+hyl7jJzZk6l0tFC5/wZxMRVMA7dfvvtjFmzZg1XXHEF8+bNY968ecybN48rrriCiIiIMdXRGku/+hyl7jLTp06m0tFC5/wZxMRXMA4NDg5iG9vYxja2sc327duJiIiTW3W0xtKvPkepu8z0qZOpdLTQOX8GcfIoGKf279/PrbfeSmtrK62trXzwgx9kZGSEt8Lug5M4uGcnERHx1qqO1lj61ecodZeZPnUylY4WOufPIE4+BePQCy+8wMUXX8z/+l//i7PPPpuzzz6bF198kVKpxODgIBERcXKpjtZY+tXnKHWXmT51MpWOFjrnzyBOXgXj0NVXX80f/dEf8dRTT/HAAw/wwAMPMDAwwGc+8xk+9rGPERERJ4fqaI2lX32OUneZ6VMnU+looXP+DCIKxqHnn3+eW2+9lZf7wAc+wJiXXnqJiIiYuKqjNbr6KpS6y0yfOplKRwud82cQcUzBOFWr1XgltVqNU045hYiImHiqozW6+iqUusuMqXS00Dl/BhEvVzAOtba28kd/9Ee89NJLHHPw4EFWrFjBOeecw+mnn05EREwc1dEaXX0VSt1lxlQ6WuicP4OIV1MwDq1Zs4Zp06Yxe/ZsZs2axXvf+14uuOACNm/eTH9/PxERMTFUR2t09VUodZcZU+looXP+DCJeT8E4NDo6yiOPPMLGjRv5x3/8R770pS/R19fHv/7rv3LaaafxZnv+QMGh539ERES8MaqjNbr6KpS6y4ypdLTQOX8GESeqYBy68sor+cIXvsB5553HxRdfzKxZs5g+fToREVHfqqM1uvoqlLrLjKl0tNA5fwYRv6yCcejQoUOcf/75RETExFAdrdHVV6HUXWZMpaOFzvkziPj3KhiHvvjFL3Lbbbdx11138YMf/IDh4WGGh4cZHh5meHiYN9vzByZxcM9OIiLil1MdrdHVV6HUXWbMpuWz6Jw/g4j/qIJx6Pbbb2fMmjVruOKKK5g3bx7z5s1j3rx5XHHFFURExPhWHa3R1Veh1F1mzKbls+icP4Pp0yYT8UYoGIe+/vWvYxvb2MY2trHN9u3biYiI8ak6WqOrr0Kpu8yYTctn0Tl/BtOnTSbijVQwDl155ZV84QtfYDx5+9nncfD5nURExC+qjtbo6qtQ6i4zZtPyWXTOn8H0aZOJ+FUoGIcOHTrE+eefT0REjG/V0RpdfRVK3WXGbFo+i875M5g+bTIRv0oF49AXv/hFbrvtNu666y5+8IMfMDw8zPDwMMPDwwwPDxMREW+t6miNrr4Kpe4yYzYtn0Xn/BlMnzaZiDdDwTh0++23M2bNmjVcccUVzJs3j3nz5jFv3jyuuOIK3ioH9+wkIuJkVh2t0dVXodRdprqvxqbls+icP4Pp0yYT8WYqGIcGBwexjW1sYxvb2Gb79u28FU4559eJiDhZVUdrdPVVKHWXqe6rsWn5LHram5k+bTIRb4WCOrNnzx4iIuLNUR2t0dVXodRdprqvxqbls+hpb2b6tMlEvJUKxokrr7ySD3/4wxyzZ88eFi1axM9//nOOGRkZ4fLLL+et8Pazz+PQ8z8iIuJkUB2t0dVXodRdprqvxqbls+hpb2b6tMlEjAcF48SBAwc4cOAAx9u2bRsREfHmqY7W6OqrUOouU91XY9PyWfS0NzN92mQixpOCiIg46VVHa3T1VSh1l6nuq7Fp+Sx62puZPm0yEeNRQZyQt59zHgf37CQiYiKpjtbo6qtQ6i5T3Vejp72ZnvZmpk+bTMR4VhARESed6miNrr4Kpe4y1X01etqb6WlvZs7MqUTUg4KIiDhpVEdrdPVVKHWXqe6r0dPeTE97M3NmTiWinhSMI8888wwLFixgwYIFfOQjH2HMtddey4IFC1iwYAErVqzgrfL2s8/j4PM7iYioR9XRGl19FUrdZar7avS0N9PT3sycmVOJqEcF48S73vUu3vWud7F371727t3L3r17ede73sXevXvZu3cve/fuZe/evZx77rlERMSJqY7W6OqrUOouU91Xo6e9mZ72ZubMnEpEPSsYJ+69914GBwcZHBxkcHCQwcFBBgcHGRwcZHBwkMHBQQYHB9m0aRMREfHaqqM11m/ZRam7zPqtu+hpb6anvZk5M6cSMREUxGt655yr+crz72DMwT07iYgYz6qjNdZv2UWpu0xXf4We9mYqHS3MmTmViImkIF7T2885jzGnnPPrRESMV9XRGuu37KLUXaarv0JPezOVjhbmzJxKxERUEBERdas6WmP9ll2Uust09VfoaW+m0tHCnJlTiZjICuKEvP3s8zj0/I+IiBgPqqM11m/ZRam7TFd/hZ72ZiodLcyZOZWIk0FBRETUlfVbdlHqLtPVX6GnvZlKRwtzZk4l4mRSECfs4J6dRES8VdZv2UVpXZmu/go97c1UOlqYM3MqESejgjghbz/nPCIi3grrt+yitK5MV3+FxbMbqHS0MGfmVCJOZgURETEurd+yi9K6Ml39FRbPbqDS0cKS2Q1EBBRERMS4sn7LLkrrynT1V1g8u4FKRwtLZjcQEf9XQZywt599Hgef30lExK/C+i27KK0r09VfYfHsBiodLSyZ3UBE/KKCiIh4S1VHa5TWlenqr7B4dgOVjhaWzG4gIl5dQUREvCWqozVK68qUusvMmTmVSkcLS2Y3EBGvryBO2Cnn/DoH9+wkIuI/ojpao7SuTKm7zJyZU6l0tNA5fwYRceIKIiLiTVEdrVFaV6bUXWbOzKlUOlronD+DiPjlFZwENm/ezMvt3LmTjRs3YptfxqHnf0RExC+jOlqjtK5MqbvMnJlTqXS00Dl/BhHx71cwwa1bt45PfvKTHO+RRx6hvb2dvr4+li9fzt///d9zIt5+9nlERJyo6miN0roype4yc2ZOpdLRQuf8GUTEf1zBBPXCCy/wiU98gn/4h3/geIcPH6azs5O7776bz372s/T29tLT00O1WiUi4o1QHa2x9KvPUeouM2fmVCodLXTOn0FEvHEKJqjPfe5zTJs2jb/5m7/heN/61rc488wz+Y3f+A3GTJs2jcsuu4wnn3yS1yKJr3/96/z5J/6ctWvXEhHxctXRGku/+hyl7jLTp06m0tFC5/wZRLyZ1q5diyQkIYmJqmCC+tSnPsWf/umfctppp3G8F154gd/6rd/ieFOmTGFoaIjXYpurP/Ix7rj1/2UP/oPjPOjDz7/naTRRdhjZkrAiu95We87Xn6g7ncw5Z3R5BqieKanoDO1NRztrQZk47nDuyVU4ZTT8kYjL0z0oHeoIlHjPT/lRZBeusbcyGSb9Ml1PYB0SllkstgNk8XxM6LPhUW15M1olYioWtnJvdD3m3BIgjn+tpM/r9Wc89NBDGGPMz1TrDQ6cOIcXlOnrbCecdPGHEhhzKzz00EO8+PyznP3rj/DcQ7/Px/6HFTYihw3KcRxez+rqKo7jcCXHcbh8+TLGGHM1qvUGB06cwwvK9HW2E066+EMJjLkVmrWI5UKOyB9m3k+xmJuirSfOU5duZyNy2GRuv/12VldXudLly5e57bbbeCOatQhjzOZWrTc4cOIcXlCmr7OdcNLFH0pgzM3UrEUsF3IsZMc5n9rBvJ9ipVJky+A+EkGJRFCiOz3Bd//119iIHDaZnp4eXnzxRa60tLTEvffey6/Sti2OMWbzqtYbHDhxDi8o09fZTjjp4g8lMOZmaNYiVipFFnNTRP4w836K186cJJZ02ZmZJRGU6B2bpsNLsxk4bDJ79+5lzXPPPcea73//+xSLRe677z6MMeb1VOsNMvkQLyjT19lOOOniDyUw5kZr1iKWCzkWsuOEhwa4lH2YZi2iOz1BIigRz5yiw0sTS7psNg6bjOM4PP744zz66KPs37+f9773vXz84x/nrW99K8YYc6VqvUEmH+IFZdaEky7+UAJjbpRmLWK5kGMhO07kDzPvp1ipFIklXXbPXiARlOgdmyaWdNnsHDa43/md3+H555/nSgMDA3z961/n+PHjzM3N8e53v5s34raenTRfiTDGbGzVeoNMPsQLyqwJJ138oQTG3AjNWsRiborIH2beT/HamZO09cTpTk+QCEr0jk3T4aUx/5mDMcaY/1e13iCTD/GCMmvCSRd/KIEx11OzFrFcyLGQHed8agfzfopmLWLL4D4SQYl45hTd6QliSRfzizkYY8wmV603yORDvKDMmnDSxR9KYMz10KxFrFSKLOamiPxh5v0UK5UisaTLzswsiaBE79g0HV4a88Y5mDesbVucf6vNY4zZGKr1Bpl8iBeUWRNOuvhDCYy5Vs1axHIhR+QPEx4a4FL2YdZ0pydIBCV6x6bp8NLEki7mzXEwxphNplpvkMmHeEGZNeGkiz+UwJg3q1mLWC7kWMiOE44OMO+nWKkU2TK4j92zF0gEJbrTE8SSLub6cDBvWFtPnOYrEcaY9alab5DJh3hBmTWF0T34QwmMuVrNWkSzFrGYmyLyh5n3U7x25iRtPXHuHPskiaBE79g0HV4ac2M4GGPMBletN8jkQ7ygzJrC6B78oQR9Xe0Y80Y1axHLhRwL2XHCQwPM+ymatYju9ASJoEQ8c4ru9ASxpIu58RyMMWaDqtYbZPIhXlBmTWF0D/5Qgr6udoz5VZq1iOVCjoXsOJE/zLyfYqVSJJZ0SRwtkQhK9I5NE0u6mJvPwVy1Zi3CGNO6qvUGmXyIF5RZUxjdgz+UoK+rHWN+mWYtYrmQI/KHmfdTLOamaOuJ052eIBGU6B2bpsNL09YTx9xaDuaqtG2LY4xpTdV6g0w+xAvKrCmM7sEfStDX1Y4xr6dZi1gu5FjIjnM+tYN5P8VKpciWwX0kghKJoER3eoJY0sW0FgdjjFnnqvUGmXyIF5RZUxjdgz+UoK+rHWOu1KxFrFSKLOamiPxh5v0UK5UisaTLzswsiaBE79g0HV4a09ocjDFmnarWG2TyIV5QprrUoDC6B38oQV9XO8b8TLMWsVzIEfnDhIcGuJR9mGYtojs9QSIo0Ts2TYeXJpZ0MeuHg7kqt/XspPlKhDHm1qnWG2TyIV5QprrUoDC6h5mRfvq62jGmWYtYLuRYyI4T+cPM+ylWKkW2DO5j9+wFEkGJ3rFpYkkXs345GGPMOlGtN8jkQ7ygTHWpQWF0DzMj/fR1tWM2t2YtYjE3ReQPM++neO3MSdp64nSnJ0gEJXrHpunw0piNw8FclbZtcf6tNo8x5uap1htk8iFeUKa61KAwuoeZkX76utoxm1OzFrFcyLGQHed8agfzfopmLWLL4D4SQYl45hTd6QliSRezMTkYY0yLqtYbZPIhXlCmutSgMLqHmZF++rraMZtLsxaxUimymJsi8oeZ91OsVIrEki47M7MkghK9Y9N0eGnM5uBgjDEtplpvkMmHeEGZ6lKDwugeZkb66etqx2wezVrEciFH5A8THhrgUvZh1nSnJ0gEJXrHpunw0sSSLmbzcTBXrflKhDHm+qvWG2TyIV5QprrUYGakn5mRfvq62jEbX7MWsVzIsZAd53xqB/N+ipVKkS2D+9g9e4FEUKI7PUEs6WKMg7kqbT1xjDHXV7XeIJMP8YIy1aUGMyP9zIz0M7irE7NxNWsRK5Uii7kpIn+YeT/Fa2dO0tYTZ2dmlkRQondsmg4vjTH/lYMxxtwi1XqDTD7EC8pUlxrMjPQzM9LP4K5OzMbUrEUsF3IsZMcJDw1wKfswzVpEd3qCRFAinjlFd3qCWNLFmF/GwVyVtm1xmrUIY8ybV603yORDvKBMdanBzEg/MyP9DO7qxGwszVrEciHHQnacyB9m3k+xUikSS7okjpZIBCV6x6aJJV2MuRoOxhhzk1TrDY6dvYgXlKkuNZgZ6WdmpJ/BXZ2YjaNZi1gu5Ij8Yeb9FIu5Kdp64nSnJ0gEJXrHpunw0rT1xDHmzXIwxpgbrFpvcOzsRbygTOZ0yMxIPzMj/Qzu6sSsf81axHIhx0J2nPOpHcz7KVYqRbYM7iMRlEgEJbrTE8SSLsZcLw7GGHODVOsNjp29iBeUyZwOmRnpJ5x0GdzViVm/mrWIlUqRxdwUkT/MvJ9ipVIklnTZmZklEZToHZumw0tjzI3iYK7KbT07ab4SYYz5xar1BsfOXsQLymROh8yM9BNOugzu6sSsT81axHIhR+QPEx4a4FL2YZq1iO70BImgRO/YNB1emljSxZibwcEYY66Tar3BsbMX8YIymdMhMyP9hJMug7s6MetLsxaxXMixkB0n8oeZ91OsVIpsGdzH7tkLJIISvWPTxJIuxtwKDuaqxJIu/1abxxjz/6vWGxw7exEvKJM5HTIz0k846TK4qxOzPjRrEc1axGJuisgfZt5P8dqZk7T1xOlOT5AISvSOTdPhpTGmFTiYq9Z8JcIY8x+Onb2IF5TJnA6ZGeknnHQZ3NWJaX3NWsRyIcdCdpzw0ADzfopmLaI7PUEiKBHPnKI7PUEs6WJMq3EwV61tW5xmLcKYzezY2Yt4R8tkTof4v5cgnHQZ3NWJaV3NWsRKpchCdpzIH2beT7FSKRJLuuzMzJIISvSOTRNLuhjT6hzMVbsjeR8/rnwDYzajY2cv4h0tkzkdsn/vdsJJlwf3bse0pmYtYrmQI/KHCQ8NcCn7MG09cbrTEySCEr1j03R4aWJJF2PWEwdz1WJJl5VKEWM2k2NnL+IdLZM5HbJ/73bCSZcH927HtJZmLWK5kGMhO8751A7m/RQrlSJbBvexe/YCiaBEd3qCWNLFmPXMwVy123p2snwmhzGbwbGzF/GOlsmcDtm/dzvhpMuDe7djWkOzFrFSKbKYmyLyh5n3U7x25iRtPXF2ZmZJBCV6x6bp8NIYs5E4mKsWS7qsadYijNmojp29iHe0TOZ0yP692wknXR7cux1z6zVrEcuFHAvZccJDA1zKPkyzFtGdniARlIhnTtGdniCWdDFmo3Iwb0rbtjg/rnwDYzaaar2Bd7RM5nTI/r3bCSddHty7HXPrNGsRy4UcC9lxIn+YeT/FSqVILOmSOFoiEZToHZsmlnQxZrNwMG/KHcn7aL4SYcxGUa038I6W8YIyg7s6CSddHty7HXNrNGsRi7kpIn+YeT/Fa2dO0tYTpzs9QSIo0Ts2TYeXpq0njjGbkYN5U2JJl2Ytwpj1rlpv4B0t4wVlBnd1Ek66+EMJzM3VrEUsF3IsZMc5n9rBvJ+iWYvYMriPRFAinjlFd3qCWNLFGAMO5k3p8NIsn8lhzHpVrTfwjpbxgjKDuzoJJ138oQTm5mjWIlYqRRZzU0T+MPN+ipVKkVjSZWdmlkRQondsmg4vjTHm5zmYN61tW5xmLcKY9aRab+AdLeMFZQZ3dRJOuvhDCcyN16xFLBdyRP4w4aEBLmUfplmL6E5PkAhK9I5N0+GliSVdjDG/nIN50+5I3sePK9/AmPWgWm/gHS3jBWUGd3USTrr4QwnMjdOsRSwXcixkx4n8Yeb9FCuVIlsG97F79gKJoETv2DSxpIsx5uo4mDetrSfOSqWIMa2sWm9w4MQ5vKDM4K5OwkkXfyiBuf6atYhmLWIxN0XkDzPvp3jtzEnaeuJ0pydIBCV6x6bp8NIYY66Ng3nT2rbFab4SYUwrqtYbHDhxDi8o09fZTjjp4g8lMNdXsxaxXMixkB0nPDTAvJ+iWYvoTk+QCErEM6foTk8QS7oYY64fB/OmdXhpflz5Bsa0kmq9wYET5/CCMn2d7YSTLv5QAnN9NGsRK5UiC9lxIn+YeT/FSqVILOmyMzNLIijROzZNLOlijLlxHMw1adsWp1mLMOZWq9YbHDhxDi8o09fZTjjp4g8lMNeuWYtYLuSI/GHm/RSXsg/T1hOnOz1BIijROzZNh5cmlnQxxtwcDuaa3JG8jx9XvoExt0q13uDAiXN4QZm+znbCSRd/KIF585q1iOVCjoXsOOdTO5j3U6xUimwZ3EciKJEISnSnJ4glXYwxt4aDuSaxpMtKpYgxN1u13uDAiXN4QZm+znbCSRd/KIG5es1axEqlyGJuisgfZt5P8dqZk8SSLjszsySCEr1j03R4aYwxrcHBXJPbenayfCaHMTdLtd4gkw/xgjJ9ne2Eky7+UAJzdZq1iOVCjoXsOOGhAS5lH6ZZi+hOT5AISsQzp+jw0sSSLsaY1uNgrkks6bKmWYsw5kaq1htk8iFeUGZNOOniDyUwb0yzFrFcyLGQHSfyh5n3U6xUisSSLrtnL5AISvSOTRNLuhhjWp+DuWZt2+L8uPINjLkRqvUGmXyIF5RZE066+EMJzK/WrEUs5qaI/GHm/RSvnTlJW0+c7vQEiaBE79g0HV4aY8z642Cu2R3J+2i+EmHM9VStN8jkQ7ygzJpw0sUfSmB+sWYtYrmQYyE7zvnUDub9FM1axJbBfSSCEvHMKbrTE8SSLsaY9c3BXLNY0qVZizDmeqjWG2TyIV5QZk046eIPJTA/r1mLWKkUWcxNEfnDzPspVipFYkmXnZlZEkGJ3rFpOrw0xpiNxcFcsw4vzfKZHMZci2q9QSYf4gVl1oSTLv5QAvOfNWsRy4UckT9MeGiAS9mHWdOdniARlOgdm6bDSxNLuhhjNi4Hc120bYvTrEUYc7Wq9QaZfIgXlFkTTrr4QwnMf2jWIpYLORay44SjA8z7KVYqRbYM7mP37AUSQYnu9ASxpIsxZvNwMNfFHcn7+HHlGxjzRlXrDTL5EC8os6Ywugd/KMFm16xFNGsRi7kpIn+YeT/Fa2dO0tYT586xT5IISvSOTdPhpTHGbF4O5rpo64mzUilizK9SrTfI5EO8oMyawuge/KEEfV3tbFbNWsRyIcdCdpzw0ADzfopmLaI7PUEiKBHPnKI7PUEs6WKMMWsczHXRti1O85UIY36Rar1BJh/iBWXWFEb34A8l6OtqZ7Np1iJWKkUWsuNE/jDzfoqVSpFY0mVnZpZEUKJ3bJpY0sUYY16Pg7kuOrw0P658A2P+q2q9QSYf4gVl1hRG9+APJejramczadYilgs5In+YeT/FpezDtPXE6U5PkAhK9I5N0+GliSVdjDHmV3Ew103btjjNWoQxa6r1Bpl8iBeUWVMY3YM/lKCvq53NoFmLWC7kWMiOcz61g3k/xUqlyJbBfSSCEomgRHd6gljSxRhjrpaDuW7uSN7HjyvfwGxu1XqDTD7EC8qsKYzuwR9K0NfVzkbWrEWsVIos5qaI/GHm/RSvnTlJLOmyMzNLIijROzZNh5fGGGOulcMmVK/XmZubY25ujrm5Oebm5lheXuZaxZIuK5UiZnOq1htk8iFeUKa61KAwugd/KEFfVzsbVbMWsVzIsZAdJzw0wKXswzRrEd3pCRJBiXjmFB1emljSxRhjrieHTejpp59m//79HDx4kIMHD3Lw4EG+853vcK1u69nJ8pkcZnOp1htk8iFeUKa61KAwuoeZkX76utrZaJq1iOVCjoXsOJE/zLyfYqVSJJZ02T17gURQondsmljSxRhjbiSHTahSqTA5OUm5XKZcLlMul3n729/OtYolXdY0axFm46vWG2TyIV5QprrUoDC6h5mRfvq62tlImrWIxdwUkT/MvJ/itTMnaeuJ052eIBGU6B2bpsNLY4wxN5PDJvS9732PXbt2Ua/XaTabXE9t2+L8uPINzMZVrTfI5EO8oEx1qUFhdA8zI/30dbWzETRrEcuFHAvZcc6ndjDvp2jWIrYM7iMRlIhnTtGdniCWdDHGmFvFYZNZXV3lhz/8IR/5yEd4z3vewz333MOHP/xhfhURQUQQEY4cOcIvckfyPpqvRJiNp1pvkMmHeEGZ6lKDwugeZkb66etqZz1r1iJWKkUWc1NE/jDzfoqVSpFY0mVnZpZEUKJ3bJoOL40xpvUdOXIEEUFEEBE2KodN5tKlS7zrXe/i05/+NMVikUKhwPPPP89TTz3FL6OqqCqqykMPPcQvEku6NGsRZuOo1htk8iFeUKa61KAwuoeZkX76utpZr5q1iOVCjsgfJjw0wKXsw6zpTk+QCEr0jk3T4aWJJV2MMevLQw89hKqiqqgqG5XDJrNjxw6efPJJduzYwZo777yTKpOCbAAAIABJREFU+++/n29961tcDx1emuUzOcz6V603yORDvKBMdanBzEg/MyP99HW1s940axHLhRwL2XHC0QHm/RQrlSJbBvexe/YCiaBEd3qCWNLFGGPWA4dN5uWXX2Z2dpYr/fSnP+XXfu3XuF7atsVp1iLM+lStNzhw4hxeUGZNYXQPMyP9DO7qZL1o1iKatYjF3BSRP8y8n+K1Mydp64lz59gnSQQlesem6fDSGGPMeuSwyTQaDXzf56WXXmLNpUuX+MpXvsIf/MEfcL3ckbyPH1e+gVk/qvUGx85exDtaxgvK9HW2E066+EMJ+rraWQ+atYjlQo6F7DjhoQHm/RTNWkR3eoJEUCKeOUV3eoJY0sUYY9Y7h01GRJicnCSdTrN//35+//d/nw984AO8/e1v53rpTk+w8H+NE44OEPnDLOamWMxNsVIpYlpLtd4gkw/xgjKZ0yH7924nnHTxhxK0umYtYrmQYyE7TuQPM++nWKkUiSVdEkdLJIISvWPTxJIuxhiz0ThsQu973/sol8scP36ccrnMgQMHuJ7aeuLsnr3AzswsWwb3saZZi1jMTXE+tYNwdIDIH2YxN8VyIcdKpYi5uar1Bpl8iBeUqS41mBnpJ5x0eXDvdlpZsxaxXMgR+cPM+ykWc1O09cTpTk+QCEr0jk3T4aVp64ljjDEbmYO5Ydp64nR4abrTE/SOTRPPnGL37AV2ZmbZMriPNa+dOcml7MOcT+0gHB0g8odZzE2xXMixUilirq9qvcGBE+fwgjJrCqN7mBnpZ3BXJ62oWYtYLuRYyI5zPrWDeT/FSqXIlsF9JIISiaBEd3qCWNLFGGM2Ewdz07X1xOnw0nSnJ4hnTpEISuyevcDOzCxbBvex5rUzJ5n3U5xP7SAcHWAhO85iboqVSpFmLcK8cdV6g2NnL+IdLeMFZfo62wknXfyhBH1d7bSSZi1ipVJkMTdF5A8z76d47cxJYkmXnZlZEkGJ3rFpOrw0xhizmTmYltHWE6fDS9OdniCeOcXu2QskjpbYmZkllnRZs5ibIjw0wPnUDsLRARay4yzmplipFDH/WbXeIJMP8YIymdMh+/duJ5x08YcStJJmLWK5kGMhO054aIBL2Ydp1iK60xMkghLxzCk6vDSxpIsxxpj/4GBaWltPnLaeOB1emu70BPHMKXbPXiBxtMTOzCxtPXHWLOamOJ/awfnUDsLRAcLRASJ/mIXsOAvZcRZzUyzmplgu5Fgu5FipFFmpFGnWIjaaar1BJh/iBWWqSw1mRvoJJ10e3LudVtCsRSwXcixkx4n8Yeb9FCuVIrGky+7ZCySCEr1j08SSLsYYY16fg1mX2nritPXE6U5P0J2eIJ45xe7ZCySOltiZmWVnZpbu9ASxpEss6fIzK5UiK5Uii7kpFnNTzPspzqd2cD61g3B0gHB0gMgfJvKHWciOs5ibYjE3xWJuiuVCjpVKkZVKkWYtotVU6w0OnDiHF5RZUxjdw8xIP4O7OrnVmrWIxdwUkT/MvJ/itTMnaeuJ052eIBGU6B2bpsNLY4wx5o1xMBtKW0+ctp44bT1xYkmXDi9Nh5emOz1Bd3qC3rFpesemiWdOEc+cIhGU2D17gd2zF9iZmWVnZpbu9ATd6QliSZcrrVSKLOamWMxNMe+nOJ/awfnUDs6ndhCODhCODhD5wyxkx1nIjrOYm2IxN8VyIcdyIcdKpchKpUizFnG9VOsNjp29iHe0jBeU6etsJ5x08YcS9HW1c6s0axHLhRwL2XHOp3Yw76do1iK2DO4jEZSIZ07RnZ4glnQxxhhz9RyM+f+09cRp64kTS7rEki4dXpru9ATd6Qm60xP0jk0Tz5winjlFIiixe/YCu2cvkDhaYmdmlp2ZWbrTE8SSLrGky8+sVIq8duYki7kpLmUfZt5PcT61g/OpHYSjA4SjA0T+MJE/zEJ2nMXcFIu5KRZzUywXcqxUiqxUijRrET9TrTfI5EO8oEzmdMj+vdsJJ138oQS3QrMWsVIpspibIvKHmfdTrFSKxJIuOzOzJIISvWPTdHhpjDHGXDsHY65RW0+ctp44bT1xYkmXDi9Nh5emOz1Bd3qC3rFp4plTxDOnSAQlEkGJ3bMX2D17gZ2ZWXZmZulOT9CdniCWdLnSSqXIYm6KxdwU836K86kdnE/tIDz0Nt4587/wue/+b3ztp1O8u/RxFrLjLOamWMxNsVzIsVzIsVIpslIp0qxFXG/NWsRyIUfkDxMeGuBS9mHWdKcnSAQlesem6fDSxJIuxhhjri8HY26htp44bT1xYkmXWNKlw0vTnZ6gOz1Bd3qC3rFp4plTrP7v/zf/5+8cY+h/nOWp//Xr7Myc4u1P/ncG/o+/pjs9QSzp0tYT52dWKkVeO3OSxdwUl7IPM++nOJ/awfnUDsLRAcLRASJ/mMgfZiE7zmJuisXcFIu5KZYLOVYqRVYqRZq1iJ9p1iKWCzkWsuOEowPM+ylWKkW2DO5j9+wFEkGJ7vQEsaSLMcaYG8vBmBZ27OxFvKNlvKBMX2c74aSLP5Tgv8l/o60nTizpEku6dHhputMTdKcn6E5P0Ds2TTxzinjmFImgRCIosXv2ArtnL7AzM8vOzCzd6Qm2DO4jlnT5mWYtYqVSZDE3xWJuink/xfnUDs6ndjDvp3jtzEnaeuLcOfZJEkGJ3rFpOrw0xhhjbi4HY1pMtd7g2NmLJP6iSOZ0yP692wknXfyhBNdDW0+ctp44saRLh5emw0vTnZ6gOz1B79g0vWPTxDOniGdOkQhK7J69wO7ZCySCEvHMKbrTE8SSLsYYY24dB2NaRLXeIJMPSfxFked+8CozI/2Eky4P7t2OMcYYcyUHY26xar1BJh/iBWWqSw3CSZeZkX4Gd3VijDHGvB4HY26RY2cv4h0t4wVl1oSTLjMj/fR1tWOMMcb8Mg7G3ETVeoNjZy/iHS2TOR0yuKuTcNLFH0pgjDHGvFEOxtwE1XqDTD7EC8ocP3sRfyhBOOniDyUwxhhjrpaDMTdQtd4gkw/xgjLVpQYzI/0UDu1hcFcnxhhjzJvlYMwNUK03OHDiHF5QZk1hdA8zI/0M7urEGGOMuVYOxlwn1XqDY2cv4h0t4wVl+jrbCSdd/KEEfV3tGGOMMdeLgzHXqFpvkMmHeEGZzOmQ/Xu3E066+EMJjDHGmBvBwZg3qVpvkMmHeEGZ6lKDmZF+wkmXB/duxxhjjLmRHIy5StV6gwMnzuEFZdYURvcwM9LP4K5OjDHGmJvBwZg3oFpvcOzsRbyjZbygTF9nO+Gkiz+UoK+rHWOMMeZmcjDml6jWG2TyIV5QJnM6ZP/e7YSTLv5QAmOMMeZWcTDmdVTrDTL5EC8oU11qMDPSTzjp8uDe7RhjjDG3moMxV6jWGxw4cQ4vKLOmMLqHmZF+Bnd1YowxxrQKB7PpVesNjp29iHe0jBeU6etsJ5x08YcS9HW1Y4wxxrQaB7NpVesNMvkQLyiTOR2yf+92wkkXfyiBMcYY08oczKZTrTfI5EO8oEx1qcHMSD/hpMuDe7djjDHGrAcOZtOo1hscOHEOLyizpjC6h5mRfgZ3dWKMMcasJw5mQ6vWGxw7exHvaBkvKNPX2U446eIPJejrascYY4xZjxzMhlStN8jkQ7ygTOZ0yP692wknXfyhBMYYY8x652A2lGq9QSYfkviLItWlBjMj/YSTLg/u3Y4xxhizUTiYDaFab5DJh3hBmepSg3DSZWakn8FdnRhjjDEbjYNZ16r1Bpl8iBeUWVMY3cPMSD99Xe0YY4wxG5WDWZeq9QaZfIgXlFlTGN2DP5Sgr6sdY4wxZqNzMOtKtd4gkw85cOJ7VJcaFEb34A8l6OtqxxhjjNksHMy6UK03yORDvKBMdanBzMhvMTPST19XO8YYY8xm42BaWrXe4NjZi3hBmTM/WGJmpJ+ZkX76utoxxhhjNisH07KOnb2IF5TJnA6ZGemncGgPg7s6McYYYzY7B9NyzvxgCe9omczpEP/3EoSTLoO7OjHGGGPMf3AwLaNab+AdLXPgxDn2791OOOny4N7tGGOMMeY/czC3XLXe4MCJc3hBmcFdnYSTLg/u3Y4xxhhjXp+DuWWq9QYHTpzDC8r0dbYTTrr4QwmMMcYY88s5mJuuWm+QyYd4QZm+znbCSRd/KIExxhhj3hgHc9NU6w0y+RAvKLMmnHTxhxIYY4wx5uo4mBuuWm+QyYd4QZk14aSLP5TAGGOMMW+Og7lhqvUGmXyIF5RZUxjdgz+UwBhjjDHXxsFcd9V6g0w+xAvKVJcaFEb34A8l6OtqxxhjjDHXzsFcV9V6Ay8oU11qUBjdw8xIP31d7RhjjDHm+nEw100mH+IFZR78n7YzM9JPX1c7xhhjjLn+HMw1q9YbZPIhx+YuUhjdgz+UwBhjjDE3joO5JtV6gwMnvseacNKlr6sdY4wxxtxYDuZNy+RDvKDM/r3b8YcSGGOMMebmcDBXrVpvcODEOc78YInC6B4e3LsdY4wxxtw8DuaqVOsNDpz4Hn2d7RQO7aGvqx1jjDHG3FwO5g3L5EO8oMzMyG/hDyUwxhhjzK3hYH6l5h3dZPIhx+YuUhjdQ19XO63qyJEjrBdHjhxhPTly5AjrxZEjR1hPjhw5wnpx5MgR1osjR46wnhw5coT14siRI5hby2GTiqKIZ599FlXll6nWGyzH/2fWhJMufV3ttLJsNst6kc1mWU+y2SzrRTabZT3JZrOsF9lslvUim82ynmSzWdaLbDaLubUcNqFnnnmGkZER8vk8o6OjPPHEE/wiZ36wxEr3bvyhBMYYY4xpDQ6bzOrqKr7vc/z4cQ4fPszs7CwzMzNUq1Vez+CuTrrP/3eMMcYY0zocNpmvfe1rbN26lbvuuos1XV1dvPOd7+SFF17g9fR1tTO4aysigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIsEZEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBAR1ogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiLBGRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEdaICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoiwRkQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBHWiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIsIaEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBAR1ogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCLCGhFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUR429vexkbksMm8+uqr3H333VzpLW95C+fPn+cX+fznP4+qoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqoqqoqqoKqqKqqKqqCqqiqqiqqgqqsrnP/95NiKHTWZ1dRXHcbiS4zhcvnwZY4wxxqwPDpvM7bffzurqKle6fPkyt912G8YYY4xZHxw2mZ6eHl588UWutLS0xL333osxxhhj1geHTWbv3r2see6551jz/e9/n2KxyH333Ycxxhhj1geHTcZxHB5//HEeffRR9u/fz3vf+14+/vGP89a3vhVjjDHGrA8Om9DAwABf//rXOX78OHNzc7z73e/GGGOMMeuHgzHGGGPMOuNgjDHGGLPOOJhfKIoinn32WVSV9eL5559nPXjppZd49tlnKZfLtDpV5dlnn6VarbKefPvb3+aVV16hVdXrdebm5pibm2Nubo65uTmWl5dpVfV6na9+9auUSiVaWb1eZ25ujrm5Oebm5pibm2Nubo5qtUqrqlarPPvss5w7d4714KWXXuLZZ5/l5ZdfppU9//zz/FdRFPHss8+iqqx3DuZ1PfPMM4yMjJDP5xkdHeWJJ56g1R09epRHH32UVvfRj36UgwcPks/nyWQyvO997+MnP/kJreiTn/wkDz30EF/5ylf4wAc+wKc+9SnWg5deeon3v//9fPvb36ZVPf300+zfv5+DBw9y8OBBDh48yHe+8x1a0XPPPcd73vMevvzlL/P444/z/ve/n8uXL9OK5ubmOHjwIAcPHuTgwYMcPHiQBx54gGPHjtGKZmZm+OM//mPy+TwPP/wwH/7wh2llhw8f5oEHHiCfz/Onf/qnZLNZWtHRo0d59NFHudIzzzzDyMgI+Xye0dFRnnjiCdYzB/NzVldX8X2f48ePc/jwYWZnZ5mZmaFardKKXn31VR555BE++9nP0urOnTvHyZMn+eIXv8jhw4f50pe+xI9+9COeeeYZWs33v/99Pve5z5HL5fjLv/xLnnrqKZ544gnq9TqtrNlsMjExwVvf+lZaWaVSYXJyknK5TLlcplwu8/a3v51Ws7q6yiOPPML09DSPP/44f//3f8+rr77K6dOnaUW/93u/R7lcplwuUy6XefLJJ9m2bRvj4+O0msuXL/P4449z7NgxDh8+TC6X4+mnn+bcuXO0ou9+97v87d/+LadOneLw4cN86Utf4otf/CLf/e53aRWvvvoqjzzyCJ/97Ge50urqKr7vc/z4cQ4fPszs7CwzMzNUq1XWKwfzc772ta+xdetW7rrrLtZ0dXXxzne+kxdeeIFWND09TVdXFx/72MdodVu3buVTn/oUW7du5WcSiQQXLlyg1ezatYunn36arVu3sqatrY3V1VWazSat7BOf+AS/+7u/y+7du2ll3/ve99i1axf1ep1ms0mreu655/j1X/913va2t/Ez//AP/8C73/1uWt3KygqPPPIIH/3oR9m6dSut6N///d9pb29nzR133IHjOPz0pz+lFb300ku84x3vYPv27ay5/fbbuffee8nn87SK6elpurq6+NjHPsaVvva1r7F161buuusu1nR1dfHOd76TF154gfXKwfycV199lbvvvpsrveUtb+H8+fO0oscee4wPfehD3HHHHbS67du347ouP/Pyyy9TKBS4//77aTWO43DXXXexurrKyZMn2b9/P3/2Z3/GnXfeSav65je/SalU4oMf/CCtbHV1lR/+8Id85CMf4T3veQ/33HMPH/7wh2lFS0tLxONxHnvsMe655x727NnD3/zN37AefOYzn+Huu+/mHe94B63IcRx83+fQoUM88cQTvP/972ffvn3cc889tKLbb7+df/mXf+FKy8vLvPLKK7SKxx57jA996EPccccdXOnVV1/l7rvv5kpvectbOH/+POuVg/k5q6urOI7DlRzH4fLly7Qix3FYjy5dusSDDz7IoUOH6O/vp1XV63V+8pOf0NPTw9e//nVeffVVWtHy8jKPPfYYn/jEJ2h1ly5d4l3vehef/vSnKRaLFAoFnn/+eZ566ilazUsvvUQ+nyeZTPLtb3+bp556ir/+67/mhRdeoJX95Cc/YWZmhg9+8IO0srm5OWKxGNu2bWPr1q384Ac/YGVlhVbkui6XLl3i8OHDfPOb3+T48eO8+OKLXL58mVbhOA6vZ3V1FcdxuJLjOFy+fJn1ysH8nNtvv53V1VWudPnyZW677TbM9fHd736XP/qjP+KBBx5gdHSUVrZt2zYeeOABPvOZz9De3s7x48dpRX/1V3/Fb/3Wb/Hyyy/z3HPPUa/XqVQqqCqtZseOHTz55JPs2LGDNXfeeSf3338/3/rWt2g1v/Ebv8Fv/uZvsm/fPtaICPfffz9f/vKXaWX/+I//SDwe57d/+7dpVV/96lf5p3/6J/7u7/6O973vfXzqU59izec+9zla0dat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" style="width: 100%; height: auto; white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"></div></div></div></div></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'lambda\t\tTrain Error\tValidation Error\n'</span><span class="S0">);</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="1685E8FA" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="18" data-testid="output_20" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;">lambda Train Error Validation Error</div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1:length(lambda_vec)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> fprintf(</span><span class="S11">' %f\t%f\t%f\n'</span><span class="S0">, </span><span class="S15">...</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> lambda_vec(i), error_train(i), error_val(i));</span></span></div></div><div class = 'inlineWrapper outputs'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div><div class="outputParagraph" style="white-space: normal; font-style: normal; color: rgb(64, 64, 64); font-size: 14px;"><div class="inlineElement eoOutputWrapper embeddedOutputsTextElement" uid="B633629F" data-scroll-top="null" data-scroll-left="null" data-width="601" data-height="143" data-testid="output_21" style="max-height: 261px; width: 631px; white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"><div class="textElement" style="white-space: pre; font-style: normal; color: rgb(64, 64, 64); font-size: 12px;"> 0.000000 0.120138 11.288354<br> 0.001000 0.185426 21.020938<br> 0.003000 0.173151 16.786538<br> 0.010000 0.221903 17.021492<br> 0.030000 0.281853 12.829010<br> 0.100000 0.459318 7.587014<br> 0.300000 0.921760 4.636833<br> 1.000000 2.076188 4.260626<br> 3.000000 4.901351 3.822907<br> 10.000000 16.092213 9.945508</div></div></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div></div></div><div class = "S0"></div><div class = 'SectionBlock containment'><h2 class = "S17"><span class = "S2"><span class="S0">Implementation of functions</span></span></h2><div class = "S4"><span class = "S2"><span class="S0">Implementation of linearRegCostFunction</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[J, grad] = linearRegCostFunction(X, y, theta, lambda)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%LINEARREGCOSTFUNCTION Compute cost and gradient for regularized linear </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%regression with multiple variables</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [J, grad] = LINEARREGCOSTFUNCTION(X, y, theta, lambda) computes the </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% cost of using theta as the parameter for linear regression to fit the </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% data points in X and y. Returns the cost in J and the gradient in grad</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Initialize some useful values</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">m = length(y); </span><span class="S10">% number of training examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% We need to return the following variables correctly </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">J</span><span class="S0"> = 0;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">J = sum(((X * theta)- y ).^2) / (2*m);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">n = size(theta,1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">J = J + (lambda / (2*m)) * sum(theta(2:n).^2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">grad = zeros(size(theta));</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">diff = (X * theta) - y;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">j = 1:n</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> total = 0;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">for </span><span class="S0">i = 1:m</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> total = total + diff(i) * X(i,j);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> total = total / m;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">j>1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> total = total + (lambda / m) * theta(j);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> grad(j) = total;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% =========================================================================</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">grad = grad(:);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of trainLinearReg</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[theta] = trainLinearReg(X, y, lambda)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%TRAINLINEARREG Trains linear regression given a dataset (X, y) and a</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%regularization parameter lambda</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [theta] = TRAINLINEARREG (X, y, lambda) trains linear regression using</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% the dataset (X, y) and regularization parameter lambda. Returns the</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% trained parameters theta.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Initialize Theta</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">initial_theta = zeros(size(X, 2), 1); </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Create "short hand" for the cost function to be minimized</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">costFunction = @(t) linearRegCostFunction(X, y, t, lambda);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Now, costFunction is a function that takes in only one argument</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">options = optimset(</span><span class="S11">'MaxIter'</span><span class="S0">, 200, </span><span class="S11">'GradObj'</span><span class="S0">, </span><span class="S11">'on'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Minimize using fmincg</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">theta = fmincg(costFunction, initial_theta, options);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of fmincg</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[X, fX, i] = fmincg(</span><span class="S0">f</span><span class="S0">, X, options, </span><span class="S0">P1</span><span class="S0">, </span><span class="S0">P2</span><span class="S0">, </span><span class="S0">P3</span><span class="S0">, </span><span class="S0">P4</span><span class="S0">, </span><span class="S0">P5</span><span class="S0">)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Minimize a continuous differentialble multivariate function. Starting point</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% is given by "X" (D by 1), and the function named in the string "f", must</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% return a function value and a vector of partial derivatives. The Polack-</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Ribiere flavour of conjugate gradients is used to compute search directions,</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% and a line search using quadratic and cubic polynomial approximations and the</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Wolfe-Powell stopping criteria is used together with the slope ratio method</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% for guessing initial step sizes. Additionally a bunch of checks are made to</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% make sure that exploration is taking place and that extrapolation will not</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% be unboundedly large. The "length" gives the length of the run: if it is</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% positive, it gives the maximum number of line searches, if negative its</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% absolute gives the maximum allowed number of function evaluations. You can</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% (optionally) give "length" a second component, which will indicate the</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% reduction in function value to be expected in the first line-search (defaults</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% to 1.0). The function returns when either its length is up, or if no further</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% progress can be made (ie, we are at a minimum, or so close that due to</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% numerical problems, we cannot get any closer). If the function terminates</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% within a few iterations, it could be an indication that the function value</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% and derivatives are not consistent (ie, there may be a bug in the</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% implementation of your "f" function). The function returns the found</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% solution "X", a vector of function values "fX" indicating the progress made</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% and "i" the number of iterations (line searches or function evaluations,</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% depending on the sign of "length") used.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Usage: [X, fX, i] = fmincg(f, X, options, P1, P2, P3, P4, P5)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% See also: checkgrad </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Copyright (C) 2001 and 2002 by Carl Edward Rasmussen. Date 2002-02-13</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% (C) Copyright 1999, 2000 & 2001, Carl Edward Rasmussen</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Permission is granted for anyone to copy, use, or modify these</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% programs and accompanying documents for purposes of research or</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% education, provided this copyright notice is retained, and note is</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% made of any changes that have been made.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% These programs and documents are distributed without any warranty,</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% express or implied. As the programs were written for research</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% purposes only, they have not been tested to the degree that would be</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% advisable in any important application. All use of these programs is</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% entirely at the user's own risk.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [ml-class] Changes Made:</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% 1) Function name and argument specifications</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% 2) Output display</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Read options</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">if </span><span class="S0">exist(</span><span class="S11">'options'</span><span class="S0">, </span><span class="S11">'var'</span><span class="S0">) && ~isempty(options) && isfield(options, </span><span class="S11">'MaxIter'</span><span class="S0">)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> length = options.MaxIter;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> length = 100;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">RHO = 0.01; </span><span class="S10">% a bunch of constants for line searches</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">SIG = 0.5; </span><span class="S10">% RHO and SIG are the constants in the Wolfe-Powell conditions</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">INT = 0.1; </span><span class="S10">% don't reevaluate within 0.1 of the limit of the current bracket</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">EXT = 3.0; </span><span class="S10">% extrapolate maximum 3 times the current bracket</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">MAX = 20; </span><span class="S10">% max 20 function evaluations per line search</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">RATIO = 100; </span><span class="S10">% maximum allowed slope ratio</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">argstr = </span><span class="S0">[</span><span class="S11">'feval(f, X'</span><span class="S0">]; </span><span class="S10">% compose string used to call function</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1:(nargin - 3)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S0">argstr</span><span class="S0"> = [argstr, </span><span class="S11">',P'</span><span class="S0">, int2str(i)];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">argstr = [argstr, </span><span class="S11">')'</span><span class="S0">];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">if </span><span class="S0">max(size(length)) == 2, red=length(2); length=length(1); </span><span class="S15">else </span><span class="S0">red</span><span class="S0">=1; </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">S=</span><span class="S0">[</span><span class="S11">'Iteration '</span><span class="S0">];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">i = 0; </span><span class="S10">% zero the run length counter</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">ls_failed = 0; </span><span class="S10">% no previous line search has failed</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fX = [];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">[f1 </span><span class="S0">df1</span><span class="S0">] = eval(argstr); </span><span class="S10">% get function value and gradient</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">i = i + (length<0); </span><span class="S10">% count epochs?!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">s = -df1; </span><span class="S10">% search direction is steepest</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">d1 = -s'*s; </span><span class="S10">% this is the slope</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">z1 = red/(1-d1); </span><span class="S10">% initial step is red/(|s|+1)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">while </span><span class="S0">i < abs(length) </span><span class="S10">% while not finished</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> i = i + (length>0); </span><span class="S10">% count iterations?!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> X0 = X; f0 = f1; df0 = df1; </span><span class="S10">% make a copy of current values</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> X = X + z1*s; </span><span class="S10">% begin line search</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> [f2 </span><span class="S0">df2</span><span class="S0">] = eval(argstr);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> i = i + (length<0); </span><span class="S10">% count epochs?!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d2 = df2'*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> f3 = f1; d3 = d1; z3 = -z1; </span><span class="S10">% initialize point 3 equal to point 1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">length>0, M = MAX; </span><span class="S15">else </span><span class="S0">M</span><span class="S0"> = min(MAX, -length-i); </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> success = 0; limit = -1; </span><span class="S10">% initialize quanteties</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">while </span><span class="S0">1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">while </span><span class="S0">((f2 > f1+z1*RHO*d1) || (d2 > -SIG*d1)) && (M > 0) </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> limit = z1; </span><span class="S10">% tighten the bracket</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">f2 > f1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = z3 - (0.5*d3*z3*z3)/(d3*z3+f2-f3); </span><span class="S10">% quadratic fit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> A = 6*(f2-f3)/z3+3*(d2+d3); </span><span class="S10">% cubic fit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> B = 3*(f3-f2)-z3*(d3+2*d2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = (sqrt(B*B-A*d2*z3*z3)-B)/A; </span><span class="S10">% numerical error possible - ok!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">isnan(z2) || isinf(z2)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = z3/2; </span><span class="S10">% if we had a numerical problem then bisect</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = max(min(z2, INT*z3),(1-INT)*z3); </span><span class="S10">% don't accept too close to limits</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z1 = z1 + z2; </span><span class="S10">% update the step</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> X = X + z2*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> [f2 </span><span class="S0">df2</span><span class="S0">] = eval(argstr);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> M = M - 1; i = i + (length<0); </span><span class="S10">% count epochs?!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d2 = df2'*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z3 = z3-z2; </span><span class="S10">% z3 is now relative to the location of z2</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">f2 > f1+z1*RHO*d1 || d2 > -SIG*d1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">break</span><span class="S0">; </span><span class="S10">% this is a failure</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">d2 > SIG*d1</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> success = 1; </span><span class="S15">break</span><span class="S0">; </span><span class="S10">% success</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">M == 0</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">break</span><span class="S0">; </span><span class="S10">% failure</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> A = 6*(f2-f3)/z3+3*(d2+d3); </span><span class="S10">% make cubic extrapolation</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> B = 3*(f3-f2)-z3*(d3+2*d2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = -d2*z3*z3/(B+sqrt(B*B-A*d2*z3*z3)); </span><span class="S10">% num. error possible - ok!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">~isreal(z2) || isnan(z2) || isinf(z2) || z2 < 0 </span><span class="S10">% num prob or wrong sign?</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">limit < -0.5 </span><span class="S10">% if we have no upper limit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = z1 * (EXT-1); </span><span class="S10">% the extrapolate the maximum amount</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = (limit-z1)/2; </span><span class="S10">% otherwise bisect</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">(limit > -0.5) && (z2+z1 > limit) </span><span class="S10">% extraplation beyond max?</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = (limit-z1)/2; </span><span class="S10">% bisect</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">(limit < -0.5) && (z2+z1 > z1*EXT) </span><span class="S10">% extrapolation beyond limit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = z1*(EXT-1.0); </span><span class="S10">% set to extrapolation limit</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">z2 < -z3*INT</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = -z3*INT;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">elseif </span><span class="S0">(limit > -0.5) && (z2 < (limit-z1)*(1.0-INT)) </span><span class="S10">% too close to limit?</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z2 = (limit-z1)*(1.0-INT);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> f3 = f2; d3 = d2; z3 = -z2; </span><span class="S10">% set point 3 equal to point 2</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z1 = z1 + z2; X = X + z2*s; </span><span class="S10">% update current estimates</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> [f2 </span><span class="S0">df2</span><span class="S0">] = eval(argstr);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> M = M - 1; i = i + (length<0); </span><span class="S10">% count epochs?!</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d2 = df2'*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span><span class="S0"> </span><span class="S10">% end of line search</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">success </span><span class="S10">% if line search succeeded</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> f1 = f2; fX = [fX' f1]';</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S10">%fprintf('%s %4i | Cost: %4.6e\r', S, i, f1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> s = (df2'*df2-df1'*df2)/(df1'*df1)*s - df2; </span><span class="S10">% Polack-Ribiere direction</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> tmp = df1; df1 = df2; </span><span class="S0">df2</span><span class="S0"> = tmp; </span><span class="S10">% swap derivatives</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d2 = df1'*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">d2 > 0 </span><span class="S10">% new slope must be negative</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> s = -df1; </span><span class="S10">% otherwise use steepest direction</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d2 = -s'*s; </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z1 = z1 * min(RATIO, d1/(d2-realmin)); </span><span class="S10">% slope ratio but max RATIO</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d1 = d2;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> ls_failed = 0; </span><span class="S10">% this line search did not fail</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">else</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> X = X0; f1 = f0; df1 = df0; </span><span class="S10">% restore point from before failed line search</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">ls_failed || i > abs(length) </span><span class="S10">% line search failed twice in a row</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">break</span><span class="S0">; </span><span class="S10">% or we ran out of time, so we give up</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> tmp = df1; df1 = df2; </span><span class="S0">df2</span><span class="S0"> = tmp; </span><span class="S10">% swap derivatives</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> s = -df1; </span><span class="S10">% try steepest</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> d1 = -s'*s;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> z1 = 1/(1-d1); </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> ls_failed = 1; </span><span class="S10">% this line search failed</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">if </span><span class="S0">exist</span><span class="S0">(</span><span class="S11">'OCTAVE_VERSION'</span><span class="S0">)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> fflush(stdout);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">fprintf(</span><span class="S11">'\n'</span><span class="S0">);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of learningCurve</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[error_train, error_val] = learningCurve(X, y, Xval, yval, lambda)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%LEARNINGCURVE Generates the train and cross validation set errors needed </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%to plot a learning curve</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [error_train, error_val] = ...</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% LEARNINGCURVE(X, y, Xval, yval, lambda) returns the train and</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% cross validation set errors for a learning curve. In particular, </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% it returns two vectors of the same length - error_train and </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% error_val. Then, error_train(i) contains the training error for</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% i examples (and similarly for error_val(i)).</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% In this function, we will compute the train and test errors for</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% dataset sizes from 1 up to m. In practice, when working with larger</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% datasets, we might want to do this in larger intervals.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Number of training examples</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">m = size(X, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">n</span><span class="S0"> = size(X,2);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">m_val = size(Xval,1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% we need to return these values correctly</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">error_train = zeros(m, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">error_val = zeros(m_val, 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1 : m</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> theta = trainLinearReg(X(1:i,:), y(1:i,:), lambda);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> error_train(i) = linearRegCostFunction(X(1:i,:), y(1:i,:), theta, 0);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> error_val(i) = linearRegCostFunction(Xval, yval,theta, 0);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Note: We should evaluate the training error on the first i training</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% examples (i.e., X(1:i, :) and y(1:i)).</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% For the cross-validation error, we should instead evaluate on</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% the _entire_ cross validation set (Xval and yval).</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Note: If we are using your cost function (linearRegCostFunction)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% to compute the training and cross validation error, you should </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% call the function with the lambda argument set to 0. </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Do note that you will still need to use lambda when running</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% the training to obtain the theta parameters.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of polyFeatures</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[X_poly] = polyFeatures(X, p)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%POLYFEATURES Maps X (1D vector) into the p-th power</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [X_poly] = POLYFEATURES(X, p) takes a data matrix X (size m x 1) and</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% maps each example into its polynomial features where</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% X_poly(i, :) = [X(i) X(i).^2 X(i).^3 ... X(i).^p];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% We need to return the following variables correctly.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = zeros(numel(X), p);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1: size(X,1)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">for </span><span class="S0">j = 1 :size(X_poly,2)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> X_poly(i,j) = X(i,1)^j;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> </span><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of featureNormalize</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[X_norm, mu, sigma] = featureNormalize(X)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%FEATURENORMALIZE Normalizes the features in X </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% FEATURENORMALIZE(X) returns a normalized version of X where</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% the mean value of each feature is 0 and the standard deviation</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% is 1. This is often a good preprocessing step to do when</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% working with learning algorithms.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">mu = mean(X);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_norm = bsxfun(@minus, X, mu);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">sigma = std(X_norm);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_norm = bsxfun(@rdivide, X_norm, sigma);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% ============================================================</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of plotFit</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">plotFit(min_x, max_x, mu, sigma, theta, p)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%PLOTFIT Plots a learned polynomial regression fit over an existing figure.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%Also works with linear regression.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% PLOTFIT(min_x, max_x, mu, sigma, theta, p) plots the learned polynomial</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% fit with power p and feature normalization (mu, sigma).</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Hold on to the current figure</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">on</span><span class="S0">;</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% We plot a range slightly bigger than the min and max values to get</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% an idea of how the fit will vary outside the range of the data points</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">x = (min_x - 15: 0.05 : max_x + 25)';</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Map the X values </span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = polyFeatures(x, p);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = bsxfun(@minus, X_poly, mu);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = bsxfun(@rdivide, X_poly, sigma);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Add ones</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">X_poly = [ones(size(x, 1), 1) X_poly];</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Plot</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">plot(x, X_poly * theta, </span><span class="S11">'--'</span><span class="S0">, </span><span class="S11">'LineWidth'</span><span class="S0">, 2)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Hold off to the current figure</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">hold </span><span class="S11">off</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div></div><div class = "S14"><span class = "S2"><span class="S0">Implementation of validationCurve</span></span></div><div class = 'CodeBlock contiguous'><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">function </span><span class="S0">[lambda_vec, error_train, error_val] = </span><span class="S15">...</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> validationCurve(X, y, Xval, yval)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%VALIDATIONCURVE Generate the train and validation errors needed to</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%plot a validation curve that we can use to select lambda</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% [lambda_vec, error_train, error_val] = ...</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% VALIDATIONCURVE(X, y, Xval, yval) returns the train</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% and validation errors (in error_train, error_val)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% for different values of lambda. You are given the training set (X,</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% y) and validation set (Xval, yval).</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">%</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% Selected values of lambda (you should not change this)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S10">% We need to return these variables correctly.</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">error_train = zeros(length(lambda_vec), 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0">error_val = zeros(length(lambda_vec), 1);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">for </span><span class="S0">i = 1:length(lambda_vec)</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> lambda = lambda_vec(i);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> theta = trainLinearReg(X, y, lambda);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> error_train(i) = linearRegCostFunction(X, y, theta,0);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"> error_val(i) = linearRegCostFunction(Xval, yval,theta, 0);</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S15">end</span></span></div></div><div class = 'inlineWrapper'><div class = "S8 lineNode"><span class = "S9"><span class="S0"></span></span></div></div></div></div></div><br><!-- <br>##### SOURCE BEGIN #####<br>%% Regularized Linear Regression and Bias v.s. Variance <br>%% Problem statement<br>% Given datast using regularized linear regression predict the amount of water <br>% flowing out of a dam using the change of water level in a reservoir.<br>%% Load & plot data<br>% We will begin by visualizing the dataset containing historical records on <br>% the change in the water level, _x_, and the amount of water flowing out of the <br>% dam, _y_.<br>% <br>% This dataset is divided into three parts:<br>% <br>% • A *training *set that your model will learn on: X, y<br>% <br>% • A *cross validation *set for determining the regularization parameter: <br>% Xval, yval<br>% <br>% • A *test *set for evaluating performance. These are \unseen" examples <br>% which your model did not see during training: Xtest, ytest <br><br><br>% We will have X, y, Xval, yval, Xtest, ytest in our environment<br>load ('data.mat');<br><br>% m = Number of examples<br>m = size(X, 1);<br><br>% Plot training data<br>plot(X, y, 'rx', 'MarkerSize', 10, 'LineWidth', 1.5);<br>xlabel('Change in water level (x)');<br>ylabel('Water flowing out of the dam (y)');<br>%% Regularized Linear Regression Cost<br>% Regularized linear regression has the following cost function: <br>% <br>% $$J\left(\theta \right)=\frac{1}{2m}\left(\sum_{i=1}^m {\left(h_{\theta <br>% } \left(x^{\left(i\right)} \right)-y^{\left(i\right)} \right)}^2 \right)+\frac{\lambda <br>% }{2m}\left(\sum_{j=1}^n \theta_j^2 \right)$$<br>% <br>% where _λ _is a regularization parameter which controls the degree of regularization <br>% (thus, help preventing overfitting). The regularization term puts a penalty <br>% on the overal cost _J_. As the magnitudes of the model parameters $\theta_j$ <br>% increase, the penalty increases as well. Note that we should not regularize <br>% the $\theta_0$ term. Let's compute the initial cost<br><br>theta = [1 ; 1];<br>% Implementation of linearRegCostFunction is at the end section of document<br>J = linearRegCostFunction([ones(m, 1) X], y, theta, 1);<br>fprintf('Cost at theta = [1 ; 1]: %f \n', J);<br>%% Regularized Linear Regression Gradient<br>% The partial derivative of regularized linear regression’s cost for $\theta_j$_ <br>% _is defined as<br>% <br>% $$\frac{\partial }{\partial \theta_j }J\left(\theta \right)=\frac{1}{m}\sum_{i=1}^m <br>% \left(h_{\theta } \left(x^{\left(i\right)} \right)-y^{\left(i\right)} \right)x_j^{\left(i\right)} <br>% \;\mathrm{for}\;j=0$$<br>% <br>% $$\left(\frac{1}{m}\sum_{i=1}^m \left(h_{\theta } \left(x^{\left(i\right)} <br>% \right)-y^{\left(i\right)} \right)x_j^{\left(i\right)} \;\right)+\frac{\lambda <br>% }{m}\theta_j \;\mathrm{for}\;j\ge 1$$<br>% <br>% Let's compute the gradient for inital theta<br><br>theta = [1 ; 1];<br>[J, grad] = linearRegCostFunction([ones(m, 1) X], y, theta, 1);<br>% Implementation of linearRegCostFunction is at the end section of document<br>fprintf('Gradient at theta = [1 ; 1]: [%f; %f] \n',grad(1), grad(2));<br>%% Train Linear Regression & visualize<br>% Let's train the model and after that plot fit over data. In this part, we <br>% set regularization parameter _λ _to zero. Because our current implementation <br>% of linear regression is trying to fit a 2-dimensional _θ_, regularization will <br>% not be incredibly helpful for a _θ _of such low dimension. In the later parts, <br>% we will be using polynomial regression with regularization. <br><br>% Train linear regression with lambda = 0<br>lambda = 0;<br>[theta] = trainLinearReg([ones(m, 1) X], y, lambda);<br>%Implementation of trainLinearReg is at the end section<br>% Plot fit over the data<br>plot(X, y, 'rx', 'MarkerSize', 10, 'LineWidth', 1.5);<br>xlabel('Change in water level (x)');<br>ylabel('Water flowing out of the dam (y)');<br>hold on;<br>plot(X, [ones(m, 1) X]*theta, 'REPLACE_WITH_DASH_DASH', 'LineWidth', 2)<br>hold off;<br>%% <br>% The best fit line tells us that the model is not a good fit to the data <br>% because the data has a non-linear pattern. While visualizing the best fit as <br>% shown is one possible way to debug our learning algorithm, it is not always <br>% easy to visualize the data and model.<br>%% Bias-variance<br>% An important concept in machine learning is the bias-variance tradeoff. Models <br>% with high bias are not complex enough for the data and tend to underfit, while <br>% models with high variance overfit to the training data <br>%% Learning Curve<br>% A learning curve plots training and cross validation error as a function of <br>% training set size. Plotting learning curves can help debug learning algorithm <br>% even if it is not easy to visualize the data.<br>% <br>% To plot the learning curve, we need a training and cross validation set <br>% error for different _training _set sizes. To obtain different training set sizes, <br>% we should use different subsets of the original training set X. Specifically, <br>% for a training set size of i, we should use the first i examples (i.e., X(1:i,:) <br>% and y(1:i)).<br>% <br>% We can use the trainLinearReg function to find the _θ _parameters. Note <br>% that the lambda is passed as a parameter to the learningCurve function.After <br>% learning the _θ _parameters, we should compute the *error *on the training and <br>% cross validation sets. Recall that the training error for a dataset is defined <br>% as<br>% <br>% $$J_{\mathrm{train}} \left(\theta \right)=\frac{1}{2m}\left(\sum_{i=1}^m <br>% {\left(h_{\theta } \left(x^{\left(i\right)} \right)-y^{\left(i\right)} \right)}^2 <br>% \right)$$<br>% <br>% In particular,the training error does not include the regularization term. <br>% One way to compute the training error is to use existing cost function and set <br>% _λ _to 0 _only _when using it to compute the training error and cross validation <br>% error. When computing the training set error, we will compute it on the training <br>% subset (i.e., X(1:n,:) and y(1:n)) (instead of the entire training set). However, <br>% for the cross validation error, we should compute it over the _entire _cross <br>% validation set. We store the computed errors in the vectors error train and <br>% error val. <br><br>lambda = 0;<br>[error_train, error_val] = learningCurve([ones(m, 1) X], y,[ones(size(Xval, 1), 1) Xval], yval,lambda);<br>plot(1:m,error_train);<br>hold on;<br>plot(1:m,error_val(1:m));<br>title('Learning curve for linear regression')<br>legend('Train','Cross Validation');<br>xlabel('Number of training examples');<br>ylabel('Error');<br>hold off;<br>axis([0 13 0 150]);<br><br>fprintf('# Training Examples\tTrain Error\tCross Validation Error\n');<br>for i = 1:m<br> fprintf(' \t%d\t\t%f\t%f\n', i, error_train(i), error_val(i));<br>end<br>%% <br>% We can observe that _both _the train error and cross validation error <br>% are high when the number of training examples is increased. This reflects a <br>% *high bias *problem in the model -too simple and is unable to fit our dataset <br>% well.<br>%% Feature Mapping for Polynomial Regression<br>% The problem with our linear model is that it was too simple for the data and <br>% resulted in underfitting (high bias). We address this problem by adding more <br>% features. <br>% <br>% For use polynomial regression, our hypothesis has the form: <br>% <br>% $h_{\theta } \left(x\right)=\theta_0 +\theta_1 \ast \left(\mathrm{waterLevel}\right)+\theta_2 <br>% \ast \left(\mathrm{waterLevel}{\left.\right)}^2 +···+\theta_p \ast \left(\mathrm{waterLevel}{\left.\right)}^p <br>% =\theta_0 +\theta_1 x_1 +\theta_2 x_2 +\ldotp \ldotp \ldotp +\theta_p x_p \right.\right.$by <br>% defining $x_1$ = (waterLevel), $x_2 =\left(\mathrm{waterLevel}{\left.\right)}^2 <br>% \right.$,_ ... ,_$x_p =\left(\mathrm{waterLevel}{\left.\right)}^p \right.$<br>% <br>% Now, We will add more features using the higher powers of the existing <br>% feature _x _in the dataset. It turns out that if we run the training directly <br>% on the projected data, will not work well as the features would be badly scaled. <br>% Therefore, we will need to use feature normalization.<br><br>p = 8;<br><br>% Map X onto Polynomial Features and Normalize<br>X_poly = polyFeatures(X, p); %Implementation of polyFeature is at the end section<br>[X_poly, mu, sigma] = featureNormalize(X_poly); % Normalize<br>X_poly = [ones(m, 1), X_poly]; % Add Ones<br><br>% Map X_poly_test and normalize (using mu and sigma)<br>X_poly_test = polyFeatures(Xtest, p);<br>X_poly_test = bsxfun(@minus, X_poly_test, mu);<br>X_poly_test = bsxfun(@rdivide, X_poly_test, sigma);<br>X_poly_test = [ones(size(X_poly_test, 1), 1), X_poly_test]; % Add Ones<br><br>% Map X_poly_val and normalize (using mu and sigma)<br>X_poly_val = polyFeatures(Xval, p);<br>X_poly_val = bsxfun(@minus, X_poly_val, mu);<br>X_poly_val = bsxfun(@rdivide, X_poly_val, sigma);<br>X_poly_val = [ones(size(X_poly_val, 1), 1), X_poly_val]; % Add Ones<br><br>fprintf('Normalized Training Example 1:\n');<br>fprintf(' %f \n', X_poly(1, :));<br>%% <br>% <br>%% Learning Polynomial Regression<br><br>lambda = 0;<br>[theta] = trainLinearReg(X_poly, y, lambda);<br>% Plot training data and fit<br>figure(1);<br>plot(X, y, 'rx', 'MarkerSize', 10, 'LineWidth', 1.5);<br>plotFit(min(X), max(X), mu, sigma, theta, p);<br>xlabel('Change in water level (x)');<br>ylabel('Water flowing out of the dam (y)');<br>title (sprintf('Polynomial Regression Fit (lambda = %f)', lambda));<br><br>figure(2);<br>[error_train, error_val] = ...<br> learningCurve(X_poly, y, X_poly_val, yval, lambda);<br>plot(error_train(1:m));<br>hold on;<br>plot(error_val(1:m));<br>legend('Train','Cross Validation');<br>title(sprintf('Polynomial Regression Learning Curve (lambda = %f)', lambda));<br>xlabel('Number of training examples');<br>ylabel('Error');<br>axis([0 13 0 100]);<br>hold off;<br>fprintf('Polynomial Regression (lambda = %f)\n\n', lambda);<br>fprintf('# Training Examples\tTrain Error\tCross Validation Error\n');<br>for i = 1:m<br> fprintf(' \t%d\t\t%f\t%f\n', i, error_train(i), error_val(i));<br>end<br>%% <br>% The polynomial fit is able to follow the datapoints very well - thus, <br>% obtaining a low training error. However, the polynomial fit is very complex <br>% and even drops off at the extremes. This is an indicator that the polynomial <br>% regression model is overfitting the training data and will not generalize well.<br>% <br>% To better understand the problems with the unregularized (_λ _= 0) model, <br>% you can see that the learning curve shows the same effect where the low training <br>% error is low, but the cross validation error is high. There is a gap between <br>% the training and cross validation errors, indicating a high variance problem.<br>% <br>% One way to combat the overfitting (high-variance) problem is to add regularization <br>% to the model. <br>%% *Selecting _*λ _*using a cross validation set*<br>% The value of _λ _can significantly affect the results of regularized polynomial <br>% regression on the training and cross validation set. In particular, a model <br>% without regularization (_λ _= 0) fits the training set well, but does not generalize. <br>% Conversely a model with too much regularization (_λ _= 100) does not fit the <br>% training set. Concretely, we will use a cross validation set to evaluate how <br>% good each _λ _value is. After selecting the best _λ _value using the cross validation <br>% set, we can then evaluate the model on the test set to estimate how well the <br>% model will perform on actual unseen data to the data. Let's try _λ _in the following <br>% range: (0,_ _0.001,_ _0.003,_ _0.01,_ _0.03,_ _0.1,_ _0.3, 1, 3, 10) <br><br>[lambda_vec, error_train, error_val] = validationCurve(X_poly, y, X_poly_val, yval);<br>close all;<br>plot(lambda_vec, error_train, lambda_vec, error_val);<br>legend('Train', 'Cross Validation');<br>xlabel('lambda');<br>ylabel('Error');<br>fprintf('lambda\t\tTrain Error\tValidation Error\n');<br>for i = 1:length(lambda_vec)<br> fprintf(' %f\t%f\t%f\n', ...<br> lambda_vec(i), error_train(i), error_val(i));<br>end<br><br>%% Implementation of functions<br>% Implementation of linearRegCostFunction<br>%%<br>function [J, grad] = linearRegCostFunction(X, y, theta, lambda)<br>%LINEARREGCOSTFUNCTION Compute cost and gradient for regularized linear <br>%regression with multiple variables<br>% [J, grad] = LINEARREGCOSTFUNCTION(X, y, theta, lambda) computes the <br>% cost of using theta as the parameter for linear regression to fit the <br>% data points in X and y. Returns the cost in J and the gradient in grad<br><br>% Initialize some useful values<br>m = length(y); % number of training examples<br><br>% We need to return the following variables correctly <br>J = 0;<br><br>J = sum(((X * theta)- y ).^2) / (2*m);<br>n = size(theta,1);<br>J = J + (lambda / (2*m)) * sum(theta(2:n).^2);<br><br>grad = zeros(size(theta));<br><br>diff = (X * theta) - y;<br><br>for j = 1:n<br> total = 0;<br> for i = 1:m<br> total = total + diff(i) * X(i,j);<br> end<br> total = total / m;<br> if j>1<br> total = total + (lambda / m) * theta(j);<br> end<br> grad(j) = total;<br><br>end<br>% =========================================================================<br>grad = grad(:);<br><br>end<br>%% <br>% Implementation of trainLinearReg<br><br>function [theta] = trainLinearReg(X, y, lambda)<br>%TRAINLINEARREG Trains linear regression given a dataset (X, y) and a<br>%regularization parameter lambda<br>% [theta] = TRAINLINEARREG (X, y, lambda) trains linear regression using<br>% the dataset (X, y) and regularization parameter lambda. Returns the<br>% trained parameters theta.<br>%<br><br>% Initialize Theta<br>initial_theta = zeros(size(X, 2), 1); <br><br>% Create "short hand" for the cost function to be minimized<br>costFunction = @(t) linearRegCostFunction(X, y, t, lambda);<br><br>% Now, costFunction is a function that takes in only one argument<br>options = optimset('MaxIter', 200, 'GradObj', 'on');<br><br>% Minimize using fmincg<br>theta = fmincg(costFunction, initial_theta, options);<br><br>end<br>%% <br>% Implementation of fmincg<br><br>function [X, fX, i] = fmincg(f, X, options, P1, P2, P3, P4, P5)<br>% Minimize a continuous differentialble multivariate function. Starting point<br>% is given by "X" (D by 1), and the function named in the string "f", must<br>% return a function value and a vector of partial derivatives. The Polack-<br>% Ribiere flavour of conjugate gradients is used to compute search directions,<br>% and a line search using quadratic and cubic polynomial approximations and the<br>% Wolfe-Powell stopping criteria is used together with the slope ratio method<br>% for guessing initial step sizes. Additionally a bunch of checks are made to<br>% make sure that exploration is taking place and that extrapolation will not<br>% be unboundedly large. The "length" gives the length of the run: if it is<br>% positive, it gives the maximum number of line searches, if negative its<br>% absolute gives the maximum allowed number of function evaluations. You can<br>% (optionally) give "length" a second component, which will indicate the<br>% reduction in function value to be expected in the first line-search (defaults<br>% to 1.0). The function returns when either its length is up, or if no further<br>% progress can be made (ie, we are at a minimum, or so close that due to<br>% numerical problems, we cannot get any closer). If the function terminates<br>% within a few iterations, it could be an indication that the function value<br>% and derivatives are not consistent (ie, there may be a bug in the<br>% implementation of your "f" function). The function returns the found<br>% solution "X", a vector of function values "fX" indicating the progress made<br>% and "i" the number of iterations (line searches or function evaluations,<br>% depending on the sign of "length") used.<br>%<br>% Usage: [X, fX, i] = fmincg(f, X, options, P1, P2, P3, P4, P5)<br>%<br>% See also: checkgrad <br>%<br>% Copyright (C) 2001 and 2002 by Carl Edward Rasmussen. Date 2002-02-13<br>%<br>%<br>% (C) Copyright 1999, 2000 & 2001, Carl Edward Rasmussen<br>% <br>% Permission is granted for anyone to copy, use, or modify these<br>% programs and accompanying documents for purposes of research or<br>% education, provided this copyright notice is retained, and note is<br>% made of any changes that have been made.<br>% <br>% These programs and documents are distributed without any warranty,<br>% express or implied. As the programs were written for research<br>% purposes only, they have not been tested to the degree that would be<br>% advisable in any important application. All use of these programs is<br>% entirely at the user's own risk.<br>%<br>% [ml-class] Changes Made:<br>% 1) Function name and argument specifications<br>% 2) Output display<br>%<br><br>% Read options<br>if exist('options', 'var') && ~isempty(options) && isfield(options, 'MaxIter')<br> length = options.MaxIter;<br>else<br> length = 100;<br>end<br><br><br>RHO = 0.01; % a bunch of constants for line searches<br>SIG = 0.5; % RHO and SIG are the constants in the Wolfe-Powell conditions<br>INT = 0.1; % don't reevaluate within 0.1 of the limit of the current bracket<br>EXT = 3.0; % extrapolate maximum 3 times the current bracket<br>MAX = 20; % max 20 function evaluations per line search<br>RATIO = 100; % maximum allowed slope ratio<br><br>argstr = ['feval(f, X']; % compose string used to call function<br>for i = 1:(nargin - 3)<br> argstr = [argstr, ',P', int2str(i)];<br>end<br>argstr = [argstr, ')'];<br><br>if max(size(length)) == 2, red=length(2); length=length(1); else red=1; end<br>S=['Iteration '];<br><br>i = 0; % zero the run length counter<br>ls_failed = 0; % no previous line search has failed<br>fX = [];<br>[f1 df1] = eval(argstr); % get function value and gradient<br>i = i + (length<0); % count epochs?!<br>s = -df1; % search direction is steepest<br>d1 = -s'*s; % this is the slope<br>z1 = red/(1-d1); % initial step is red/(|s|+1)<br><br>while i < abs(length) % while not finished<br> i = i + (length>0); % count iterations?!<br><br> X0 = X; f0 = f1; df0 = df1; % make a copy of current values<br> X = X + z1*s; % begin line search<br> [f2 df2] = eval(argstr);<br> i = i + (length<0); % count epochs?!<br> d2 = df2'*s;<br> f3 = f1; d3 = d1; z3 = -z1; % initialize point 3 equal to point 1<br> if length>0, M = MAX; else M = min(MAX, -length-i); end<br> success = 0; limit = -1; % initialize quanteties<br> while 1<br> while ((f2 > f1+z1*RHO*d1) || (d2 > -SIG*d1)) && (M > 0) <br> limit = z1; % tighten the bracket<br> if f2 > f1<br> z2 = z3 - (0.5*d3*z3*z3)/(d3*z3+f2-f3); % quadratic fit<br> else<br> A = 6*(f2-f3)/z3+3*(d2+d3); % cubic fit<br> B = 3*(f3-f2)-z3*(d3+2*d2);<br> z2 = (sqrt(B*B-A*d2*z3*z3)-B)/A; % numerical error possible - ok!<br> end<br> if isnan(z2) || isinf(z2)<br> z2 = z3/2; % if we had a numerical problem then bisect<br> end<br> z2 = max(min(z2, INT*z3),(1-INT)*z3); % don't accept too close to limits<br> z1 = z1 + z2; % update the step<br> X = X + z2*s;<br> [f2 df2] = eval(argstr);<br> M = M - 1; i = i + (length<0); % count epochs?!<br> d2 = df2'*s;<br> z3 = z3-z2; % z3 is now relative to the location of z2<br> end<br> if f2 > f1+z1*RHO*d1 || d2 > -SIG*d1<br> break; % this is a failure<br> elseif d2 > SIG*d1<br> success = 1; break; % success<br> elseif M == 0<br> break; % failure<br> end<br> A = 6*(f2-f3)/z3+3*(d2+d3); % make cubic extrapolation<br> B = 3*(f3-f2)-z3*(d3+2*d2);<br> z2 = -d2*z3*z3/(B+sqrt(B*B-A*d2*z3*z3)); % num. error possible - ok!<br> if ~isreal(z2) || isnan(z2) || isinf(z2) || z2 < 0 % num prob or wrong sign?<br> if limit < -0.5 % if we have no upper limit<br> z2 = z1 * (EXT-1); % the extrapolate the maximum amount<br> else<br> z2 = (limit-z1)/2; % otherwise bisect<br> end<br> elseif (limit > -0.5) && (z2+z1 > limit) % extraplation beyond max?<br> z2 = (limit-z1)/2; % bisect<br> elseif (limit < -0.5) && (z2+z1 > z1*EXT) % extrapolation beyond limit<br> z2 = z1*(EXT-1.0); % set to extrapolation limit<br> elseif z2 < -z3*INT<br> z2 = -z3*INT;<br> elseif (limit > -0.5) && (z2 < (limit-z1)*(1.0-INT)) % too close to limit?<br> z2 = (limit-z1)*(1.0-INT);<br> end<br> f3 = f2; d3 = d2; z3 = -z2; % set point 3 equal to point 2<br> z1 = z1 + z2; X = X + z2*s; % update current estimates<br> [f2 df2] = eval(argstr);<br> M = M - 1; i = i + (length<0); % count epochs?!<br> d2 = df2'*s;<br> end % end of line search<br><br> if success % if line search succeeded<br> f1 = f2; fX = [fX' f1]';<br> %fprintf('%s %4i | Cost: %4.6e\r', S, i, f1);<br> s = (df2'*df2-df1'*df2)/(df1'*df1)*s - df2; % Polack-Ribiere direction<br> tmp = df1; df1 = df2; df2 = tmp; % swap derivatives<br> d2 = df1'*s;<br> if d2 > 0 % new slope must be negative<br> s = -df1; % otherwise use steepest direction<br> d2 = -s'*s; <br> end<br> z1 = z1 * min(RATIO, d1/(d2-realmin)); % slope ratio but max RATIO<br> d1 = d2;<br> ls_failed = 0; % this line search did not fail<br> else<br> X = X0; f1 = f0; df1 = df0; % restore point from before failed line search<br> if ls_failed || i > abs(length) % line search failed twice in a row<br> break; % or we ran out of time, so we give up<br> end<br> tmp = df1; df1 = df2; df2 = tmp; % swap derivatives<br> s = -df1; % try steepest<br> d1 = -s'*s;<br> z1 = 1/(1-d1); <br> ls_failed = 1; % this line search failed<br> end<br> if exist('OCTAVE_VERSION')<br> fflush(stdout);<br> end<br>end<br>fprintf('\n');<br>end<br>%% <br>% Implementation of learningCurve<br><br>function [error_train, error_val] = learningCurve(X, y, Xval, yval, lambda)<br>%LEARNINGCURVE Generates the train and cross validation set errors needed <br>%to plot a learning curve<br>% [error_train, error_val] = ...<br>% LEARNINGCURVE(X, y, Xval, yval, lambda) returns the train and<br>% cross validation set errors for a learning curve. In particular, <br>% it returns two vectors of the same length - error_train and <br>% error_val. Then, error_train(i) contains the training error for<br>% i examples (and similarly for error_val(i)).<br>%<br>% In this function, we will compute the train and test errors for<br>% dataset sizes from 1 up to m. In practice, when working with larger<br>% datasets, we might want to do this in larger intervals.<br>%<br><br>% Number of training examples<br>m = size(X, 1);<br>n = size(X,2);<br>m_val = size(Xval,1);<br><br>% we need to return these values correctly<br>error_train = zeros(m, 1);<br>error_val = zeros(m_val, 1);<br><br><br><br>for i = 1 : m<br> theta = trainLinearReg(X(1:i,:), y(1:i,:), lambda);<br> error_train(i) = linearRegCostFunction(X(1:i,:), y(1:i,:), theta, 0);<br> error_val(i) = linearRegCostFunction(Xval, yval,theta, 0);<br><br>end<br><br>% Note: We should evaluate the training error on the first i training<br>% examples (i.e., X(1:i, :) and y(1:i)).<br>%<br>% For the cross-validation error, we should instead evaluate on<br>% the _entire_ cross validation set (Xval and yval).<br>%<br>% Note: If we are using your cost function (linearRegCostFunction)<br>% to compute the training and cross validation error, you should <br>% call the function with the lambda argument set to 0. <br>% Do note that you will still need to use lambda when running<br>% the training to obtain the theta parameters.<br>%<br><br>end<br>%% <br>% Implementation of polyFeatures<br><br>function [X_poly] = polyFeatures(X, p)<br>%POLYFEATURES Maps X (1D vector) into the p-th power<br>% [X_poly] = POLYFEATURES(X, p) takes a data matrix X (size m x 1) and<br>% maps each example into its polynomial features where<br>% X_poly(i, :) = [X(i) X(i).^2 X(i).^3 ... X(i).^p];<br>%<br><br><br>% We need to return the following variables correctly.<br>X_poly = zeros(numel(X), p);<br><br>for i = 1: size(X,1)<br> for j = 1 :size(X_poly,2)<br> X_poly(i,j) = X(i,1)^j;<br> end<br>end<br><br>end<br>%% <br>% Implementation of featureNormalize<br><br>function [X_norm, mu, sigma] = featureNormalize(X)<br>%FEATURENORMALIZE Normalizes the features in X <br>% FEATURENORMALIZE(X) returns a normalized version of X where<br>% the mean value of each feature is 0 and the standard deviation<br>% is 1. This is often a good preprocessing step to do when<br>% working with learning algorithms.<br><br>mu = mean(X);<br>X_norm = bsxfun(@minus, X, mu);<br><br>sigma = std(X_norm);<br>X_norm = bsxfun(@rdivide, X_norm, sigma);<br><br><br>% ============================================================<br><br>end<br>%% <br>% Implementation of plotFit<br><br>function plotFit(min_x, max_x, mu, sigma, theta, p)<br>%PLOTFIT Plots a learned polynomial regression fit over an existing figure.<br>%Also works with linear regression.<br>% PLOTFIT(min_x, max_x, mu, sigma, theta, p) plots the learned polynomial<br>% fit with power p and feature normalization (mu, sigma).<br><br>% Hold on to the current figure<br>hold on;<br><br>% We plot a range slightly bigger than the min and max values to get<br>% an idea of how the fit will vary outside the range of the data points<br>x = (min_x - 15: 0.05 : max_x + 25)';<br><br>% Map the X values <br>X_poly = polyFeatures(x, p);<br>X_poly = bsxfun(@minus, X_poly, mu);<br>X_poly = bsxfun(@rdivide, X_poly, sigma);<br><br>% Add ones<br>X_poly = [ones(size(x, 1), 1) X_poly];<br><br>% Plot<br>plot(x, X_poly * theta, 'REPLACE_WITH_DASH_DASH', 'LineWidth', 2)<br><br>% Hold off to the current figure<br>hold off<br><br>end<br>%% <br>% Implementation of validationCurve<br><br>function [lambda_vec, error_train, error_val] = ...<br> validationCurve(X, y, Xval, yval)<br>%VALIDATIONCURVE Generate the train and validation errors needed to<br>%plot a validation curve that we can use to select lambda<br>% [lambda_vec, error_train, error_val] = ...<br>% VALIDATIONCURVE(X, y, Xval, yval) returns the train<br>% and validation errors (in error_train, error_val)<br>% for different values of lambda. You are given the training set (X,<br>% y) and validation set (Xval, yval).<br>%<br><br>% Selected values of lambda (you should not change this)<br>lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';<br><br>% We need to return these variables correctly.<br>error_train = zeros(length(lambda_vec), 1);<br>error_val = zeros(length(lambda_vec), 1);<br><br>for i = 1:length(lambda_vec)<br> lambda = lambda_vec(i);<br> theta = trainLinearReg(X, y, lambda);<br> error_train(i) = linearRegCostFunction(X, y, theta,0);<br> error_val(i) = linearRegCostFunction(Xval, yval,theta, 0);<br>end<br><br>end<br>##### SOURCE END #####<br>--></body></html>