HW1_reg.pdf

‫ﺗﻤﺮﯾﻦ اول درس ﯾﺎدﮔﯿﺮی ﻣﺎﺷﯿﻦ‬
‫رﮔﺮﺳﯿﻮن‬
‫ﻣﻘﺪﻣﻪ‬
‫ﺳﻼم؛ ﺑﻪ درس ﯾﺎدﮔﯿﺮی ﻣﺎﺷﯿﻦ ﺧﻮش آﻣﺪﯾﺪ‪ .‬ﺷﻤﺎ در اﯾﻦ ﺗﮑﻠﯿﻒ رﮔﺮﺳﯿﻮن ﺧﻄ را ﺗﻮﺳﻂ ‪ R‬ﭘﯿﺎده ﺳﺎزی ﻣ ﮐﻨﯿﺪ و آن را‬
‫ﺑﺮای دو دﯾﺘﺎﺳﺖ ﻣﺘﻔﺎوت اﺟﺮا ﻣ ﮐﻨﯿﺪ‪ .‬ﻣﺪ ﻧﻈﺮ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﮐﺪ ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺑﺎ ﻫﺮ دﯾﺘﺎﺳﺘ ﮐﺎر ﮐﻨﺪ؛ ﺑﻨﺎﺑﺮاﯾﻦ ﺗﻌﺪاد‬
‫‪ feature‬ﻫﺎ و ﺗﻌﺪاد داده ﻫﺎ ﻫﺮ ﻣﻘﺪار ﻣ ﺗﻮاﻧﺪ ﺑﺎﺷﺪ‪ .‬داده ﻫﺎﯾﯽ ﮐﻪ در اﺧﺘﯿﺎر ﺷﻤﺎ ﻗﺮار داده ﻣ ﺷﻮﻧﺪ ﺳﻄﺮی ذﺧﯿﺮه ﺷﺪه اﻧﺪ‬
‫)ﯾﻌﻨ ﻫﺮ ﺳﻄﺮ ﻣﻌﺮف ﯾ داده اﺳﺖ و ﻫﺮ ﺳﺘﻮن ﻣﺮﺑﻮط ﺑﻪ ﯾ وﯾﮋﮔ اﺳﺖ(‪ .‬ﻫﻤﭽﻨﯿﻦ ﺷﻤﺎ ﺑﺎﯾﺪ ﯾ ﻣﺴﺘﻨﺪ ﺗﺤﻮﯾﻞ دﻫﯿﺪ‪.‬‬
‫ﻣﺴﺘﻨﺪ ﺷﻤﺎ ﻣ ﺑﺎﯾﺴﺖ ﺷﺎﻣﻞ آﻧﺎﻟﯿﺰ ﻧﺘﺎﯾﺞ ؛ ﭘﺎﺳ ﺑﻪ ﭘﺮﺳﺶ ﻫﺎ و ﺷﺮح ﭘﯿﺎده ﺳﺎزﯾﺘﺎن ﺑﺎﺷﺪ‪ .‬ﺳﻮاﻻت ﺧﻮد را ﺑﺎ اﯾﻤﯿﻞ ﻫﺎی زﯾﺮ در‬
‫ﻣﯿﺎن ﺑ ﺬارﯾﺪ‪:‬‬
‫‪amir.keramatian٩١@gmail.com .١‬‬
‫‪af.vazifedan@gmail.com .٢‬‬
‫ﺳﯿﺎﺳﺖ ﺑﺮﺧﻮرد ﺑﺎ ﮐﭗ ﺑﺴﯿﺎر ﺳﺨﺘﮕﯿﺮاﻧﻪ ﻣ ﺑﺎﺷﺪ؛ ﻟﺬا ﮐﭗ ﻧﺰﻧﯿﺪ!‬
‫ﺑﺨﺶ اول‬
‫دﯾﺘﺎﺳﺖ اول ﺷﺎﻣﻞ ‪ ٩٧‬داده ی ﺗﮏ ﺑﻌﺪی اﺳﺖ‪ .‬اﯾﻦ دﯾﺘﺎﺳﺖ در ﻓﺎﯾﻞ ‪ data_set١‬ذﺧﯿﺮه ﺷﺪه اﺳﺖ‪ .‬آن را ‪ load‬ﮐﻨﯿﺪ‪ .‬ﺑﺎ اﯾﻦ‬
‫ﮐﺎر ﯾ ﻣﺎﺗﺮﯾﺲ ﺑﺎ ‪ ٩٧‬ﺳﻄﺮ و دو ﺳﺘﻮن ﺑﻪ ‪ workspace‬ﺷﻤﺎ اﺿﺎﻓﻪ ﻣ ﺷﻮد‪ .‬ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﮔﻔﺘﻪ ﺷﺪ ‪ ٩٧‬ﺗﻌﺪاد داده ﻫﺎﺳﺖ؛‬
‫ﺳﺘﻮن اول ﻫﺮ ﺳﻄﺮ ‪ x‬ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن داده اﺳﺖ و ﺳﺘﻮن دوم ﻣﻘﺪار ‪ y‬ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻫﻤﺎن داده ﻣ ﺑﺎﺷﺪ‪ .‬ﺣﺎل ﺷﻤﺎ ‪ x‬و ‪ y‬ﻫﺎ را از ﻫﻢ‬
‫ﺟﺪا ﮐﻨﯿﺪ و آﻧﻬﺎ را در ﻣﺎﺗﺮﯾﺲ ﻫﺎی ﻣﺠﺰا ﻗﺮار دﻫﯿﺪ و ﻣﻘﺎدﯾﺮ ‪ y‬را ﻧﺴﺒﺖ ﺑﻪ ‪ x‬در ﯾ ﻧﻤﻮدار ﺗﺮﺳﯿﻢ ﮐﻨﯿﺪ‪ .‬ﺣﺎل ﯾ ﺑﻌﺪ ﺟﺪﯾﺪ‬
‫ﺑﻪ داده ﻫﺎی ﻣﻮﺟﻮد در ‪ x‬اﺿﺎﻓﻪ ﮐﻨﯿﺪ ﮐﻪ ﻣﻘﺪار آن ﺑﺮای ﻫﻤﻪ ی آﻧﻬﺎ ‪ ١‬ﻣ ﺑﺎﺷﺪ‪) .‬ﭼﺮا اﯾﻦ ﮐﺎر را ﻣ ﮐﻨﯿﻢ؟(‬
‫ﺑﺨﺶ دوم‬
‫در اﯾﻦ ﺑﺨﺶ ﺑﺎﯾﺪ ﺗﺎﺑﻊ ‪ costFunction‬را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﺳﻪ ورودی داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﯾ ﺑﺮای ﻣﺎﺗﺮﯾﺲ داده‬
‫ﻫﺎ؛ ﯾ ﺑﺮدار ‪ y‬ﻫﺎ و دﯾ ﺮی ﺑﺮدار ‪ θ‬ﮐﻪ ﭘﺎراﻣﺘﺮﻫﺎی اﻟ ﻮرﯾﺘﻢ رﮔﺮﺳﯿﻮن را ﺷﺎﻣﻞ ﻣ ﺷﻮد‪ .‬ﻣﻘﺪاری ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ ﺑﺮ ﻣ ﮔﺮداﻧﺪ‬
‫ﺑﺎﯾﺪ ﻣﻄﺎﺑﻖ ﺗﻌﺮﯾﻒ زﯾﺮ ﺑﺎﺷﺪ‪:‬‬
‫‪١ m‬‬
‫‪Σ (hθ (x(i) ) − y (i) )٢‬‬
‫‪٢m i=١‬‬
‫= )‪J(θ‬‬
‫‪ m‬ﺗﻌﺪاد داده ﻫﺎﺳﺖ و )‪ y (i‬ﻣﻘﺪار ‪ y‬ﺑﺮای داده ی ‪ i‬اُم اﺳﺖ‪.‬‬
‫ﺑﺨﺶ ﺳﻮم‬
‫در اﯾﻦ ﺑﺨﺶ ﻣ ﺑﺎﯾﺴﺖ رﮔﺮﺳﯿﻮن ﺧﻄ را ﺑﺎ ﻣ ﺎﻧﯿﺴﻢ ‪ Gradient Descent‬ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪ .‬ﺑﺮای اﯾﻦ ﻣﻨﻈﻮر ﺗﺎﺑﻊ‬
‫‪ LinearRegression_GD‬را ﭘﯿﺎده ﺳﺎزی ﮐﻨﯿﺪ‪ .‬ورودی ﻫﺎی اﯾﻦ ﺗﺎﺑﻊ ﻣﺎﺗﺮﯾﺲ داده ﻫﺎ )‪ (X‬؛ ﺑﺮدار ‪ y‬ﻫﺎ؛ ﻧﺮخ ﯾﺎدﮔﯿﺮی )‪(α‬‬
‫و ﺗﻌﺪاد ﺗﮑﺮار ﻫﺎی ﺣﻠﻘﻪ ی اﻟ ﻮرﯾﺘﻢ ‪ Gradient LRDescent‬ﻣ ﺑﺎﺷﺪ‪ .‬ﺧﺮوﺟ اﯾﻦ ﺗﺎﺑﻊ ﻣﻘﺪار ﻧﻬﺎﯾﯽ ﺑﺮدار ‪ θ‬ﻣ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﺮای ﭘﯿﺎده ﺳﺎزی اﯾﻦ ﺗﺎﺑﻊ ﺷﻤﺎ ﻣ ﺑﺎﯾﺴﺖ در اﺑﺘﺪا ﯾ ﺑﺮدار ‪ θ‬ﺗﺸ ﯿﻞ دﻫﯿﺪ ﮐﻪ ﺗﻌﺪاد اﻟﻤﺎن ﻫﺎی آن ﺑﺮاﺑﺮ ﺑﺎ ﺗﻌﺪاد اﺑﻌﺎد داده‬
‫‪١‬‬
‫ﻫﺎ ﺳﺖ‪).‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ وﻗﺘ داده ﻫﺎ ﺑﻪ ﻋﻨﻮان ورودی ﺑﻪ اﯾﻦ ﺗﺎﺑﻊ داده ﻣ ﺷﻮﻧﺪ؛ ﺑﻪ آﻧﻬﺎ ﯾ ﺑﻌﺪ اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ‪ ( .‬اﯾﻦ ﺑﺮدار‬
‫ﻣ ﺗﻮاﻧﺪ دارای ﻣﻘﺎدﯾﺮ اوﻟﯿﻪ ﺻﻔﺮ ﯾﺎ ﻫﺮ ﻣﻘﺪار رﻧﺪﻣ ﺑﺎﺷﺪ‪ .‬آﻧﮕﺎه در ﻫﺮ ﺑﺎر ﺗﮑﺮار ﺣﻠﻘﻪ ﺑﺮدار ‪ θ‬ﺑﻪ ﺻﻮرت زﯾﺮ ﺑﻪ روز ﻣ ﺷﻮد‪:‬‬
‫)‪θ ←− θ − α × ∇J(θ‬‬
‫)‪ ∇J(θ‬ﺑﺮدار ﻣﺸﺘﻘﺎت ﺟﺰﯾﯽ ﺗﺎﺑﻊ )‪ J(θ‬ﻧﺴﺒﺖ ﺑﻪ اﻟﻤﺎن ﻫﺎی ﺑﺮدار ‪ θ‬ﻣ ﺑﺎﺷﺪ‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﻣ ﺑﺎﯾﺴﺖ ﻣﻘﺪار )‪ J(θ‬را؛ در ﻫﺮ‬
‫ﺑﺎر ﺗﮑﺮار ﺣﻠﻘﻪ را رﺳﻢ ﮐﻨﺪ‪ .‬ﺑﻪ ﻋﺒﺎرت دﯾ ﺮ ﺑﺎﯾﺪ ﯾ ﻧﻤﻮدار رﺳﻢ ﮐﻨﺪ ﮐﻪ ﻣﺤﻮر اﻓﻘ ﺷﻤﺎره ی ‪ iteration‬ﺣﻠﻘﻪ ﺑﺎﺷﺪ و ﻣﺤﻮر‬
‫ﻋﻤﻮدی ﻣﯿﺰان ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﺑﻌﺪ از اﺟﺮای ﺣﻠﻘﻪ ی ﺷﻤﺎره ی ‪ i‬اُم ﻣ ﺑﺎﺷﺪ‪ i .‬از ﺻﻔﺮ ﺗﺎ ﺗﻌﺪاد ﺗﮑﺮار ﺣﻠﻘﻪ ﻣ ﺑﺎﺷﺪ‪) .‬ﺷ ﻞ ‪ ١‬ﯾ‬
‫ﻣﺜﺎل از اﯾﻦ ﮔﺮاف را ﻧﺸﺎن ﻣ دﻫﺪ‪ .‬در اﯾﻦ ﻣﺜﺎل ﺧﺎص اﻟ ﻮرﯾﺘﻢ ‪ Gradient Descent‬ﺑﻪ درﺳﺘ ﮐﺎر ﻣ ﮐﻨﺪ و ﺑﻪ ﺻﻮرت‬
‫ﻣﺪاوم از ﻣﯿﺰان ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﮐﺎﺳﺘﻪ ﻣ ﺷﻮد‪ (.‬ﺑﺮای ﺑﻪ دﺳﺖ آوردن ﻫﺰﯾﻨﻪ از ﺗﺎﺑﻊ ‪ costFunction‬اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺨﺶ ﭼﻬﺎرم‬
‫ﺗﺎﺑﻌ ﮐﻪ در ﺑﺨﺶ ﻗﺒﻞ ﭘﯿﺎده ﺳﺎزی ﮐﺮدﯾﺪ را ﺑﺎ ﭘﺎراﻣﺘﺮﻫﺎی ‪ α‬و ﺗﻌﺪاد ﺗﮑﺮار ﺣﻠﻘﻪ ﻣﺘﻔﺎوت اﺟﺮا ﮐﻨﯿﺪ و ﻧﺘﺎﯾﺞ را در ﮔﺰارش ﺛﺒﺖ‬
‫ﮐﻨﯿﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻣﺸﺨﺺ ﮐﻨﯿﺪ ﺑﻪ ازای ﮐﺪام ‪ α‬ﺑﻬﺘﺮﯾﻦ ﻧﺘﯿﺠﻪ ﺣﺎﺻﻞ ﻣ ﺷﻮد )ﯾﻌﻨ ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﺳﺮﯾﻊ ﺗﺮ ﻣﯿﻨﯿﻤﻢ ﻣ ﺷﻮد و ﻫﻤ ﺮا‬
‫ﻣ ﺷﻮد(‪ .‬ﺑﻬﺘﺮﯾﻦ ﺑﺮدار ‪ θ‬را ذﺧﯿﺮه ﮐﻨﯿﺪ و ﺑﺎ اﺳﺘﻔﺎده از آن ﺧﻂ ‪) y = θT x‬ﺑﻬﺘﺮﯾﻦ ﺧﻄ ﮐﻪ ﺗﻮاﻧﺴﺘﯿﺪ ﺑﻪ داده ﻫﺎ ‪ fit‬ﮐﻨﯿﺪ( را‬
‫ﺑﻪ ﻫﻤﺮاه داده ﻫﺎ در ﯾ ﺷ ﻞ رﺳﻢ ﮐﻨﯿﺪ و ﺗﺼﻮﯾﺮ را در ﮔﺰارش ﺧﻮد ﻗﺮار دﻫﯿﺪ‪.‬‬
‫ﺑﺨﺶ ﭘﻨﺠﻢ‬
‫از آﻧﺠﺎ ﮐﻪ ﺑﺮای دﯾﺘﺎﺳﺖ داده ﺷﺪه ﺗﻌﺪاد ﭘﺎراﻣﺘﺮﻫﺎی رﮔﺮﺳﯿﻮن ﺧﻄ ‪ ٢‬ﻋﺪد ﻣ ﺑﺎﺷﺪ؛ ﻣ ﺗﻮان ﯾ ﻧﻤﻮدار ﺳﻪ ﺑﻌﺪی رﺳﻢ ﮐﺮد‬
‫از ﻣﻘﺎدﯾﺮ ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﻧﺴﺒﺖ ﺑﻪ ‪ θ٠‬و ‪ .θ١‬ﺑﻪ ﻣﺮﮐﺰﯾﺖ ﺑﻬﺘﺮﯾﻦ ﺑﺮدار ‪ ) θ‬ﮐﻪ در ﻓﻀﺎی ‪ R٢‬اﺳﺖ( ﯾ ‪ grid‬ﺗﺸ ﯿﻞ دﻫﯿﺪ )ﻣﺜﻼ ﺑﻪ‬
‫اﺑﻌﺎد ‪ (١٠×١٠‬و ﻣﯿﺰان ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ را ﺑﻪ ازای ﻋﻀﻮ ﻫﺎی آن ‪ grid‬ﺑﻪ دﺳﺖ آورﯾﺪ و ﻧﻬﺎﯾﺘﺎ ‪ surface‬ﺳﻪ ﺑﻌﺪی را رﺳﻢ ﮐﻨﯿﺪ‪.‬‬
‫ﺗﺤﻠﯿﻞ ﮐﻨﯿﺪ ﮐﻪ ﻧﻤﻮدار ﺑﻪ دﺳﺖ آﻣﺪه دارای ﭼﻪ ﺷ ﻠ اﺳﺖ و ﭼﺮا اﯾﻦ ﮔﻮﻧﻪ اﺳﺖ‪.‬‬
‫ﺑﺨﺶ ﺷﺸﻢ‬
‫ﺑﺎ اﺳﺘﻔﺎده از ‪ Normal Equation‬ﺑﺮدار ‪ θ‬را ﺑﻪ دﺳﺖ آورﯾﺪ‪ .‬آﯾﺎ ﺑﻬﺘﺮﯾﻦ ﺑﺮدار ‪ θ‬ﮐﻪ ﺑﺎ ‪ Gradient Descent‬ﺑﻪ دﺳﺖ آوردﯾﺪ‬
‫ﺑﻪ اﯾﻦ ﻣﻘﺪار ﻧﺰدﯾ اﺳﺖ؟‬
‫اﺧﺘﯿﺎری‪ :‬اﮔﺮ اﯾﻦ دو ﻣﻘﺪار ﺑﻪ ﻫﻢ ﻧﺰدﯾ ﺑﺎﺷﻨﺪ؛ ﻧﺸﺎن دﻫﻨﺪه ی اﯾﻦ اﺳﺖ ﮐﻪ ‪ Normal Equation‬ﺳﻌ در ﮐﻤﯿﻨﻪ ﮐﺮدن‬
‫ﻣﯿﺎﻧﮕﯿﻦ ﻣﺠﻤﻮع ﻣﺮﺑﻌﺎت ‪) ١‬ﻫﻤﺎن ﺗﺎﺑﻊ )‪ ( J(θ‬ﮐﺮده اﺳﺖ‪ .‬ﭼﻮن ‪ Gradient Descent‬ﻧﯿﺰ ﺳﻌ در ﻣﯿﻨﯿﻤﻢ ﮐﺮدن ﻫﻤﯿﻦ‬
‫ﺗﺎﺑﻊ داﺷﺘﻪ اﺳﺖ‪ .‬ﻧﺸﺎن دﻫﯿﺪ ﻓﺮﻣﻮل ‪ close form‬ﺑﺮای ﻣﯿﻨﯿﻤﻢ ﮐﺮدن ﻣﯿﺎﻧﮕﯿﻦ ﻣﺠﻤﻮع ﻣﺮﺑﻌﺎت ﺧﻄﺎ ﻫﻤﺎن ﻓﺮﻣﻮل ‪Normal‬‬
‫‪ Equation‬ﻣ ﺑﺎﺷﺪ‪ ) .‬راﻫﻨﻤﺎﯾﯽ‪ :‬از ﺗﺎﺑﻊ )‪ J(θ‬ﻧﺴﺒﺖ ﺑﻪ اﻟﻤﺎن ﻫﺎی ‪ θ‬ﻣﺸﺘﻘﺎت ﺟﺰی ﺑ ﯿﺮﯾﺪ و آﻧﻬﺎ را ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻗﺮار دﻫﯿﺪ‪(.‬‬
‫ﻣ ﺗﻮاﻧﯿﺪ از راه ﺣﻞ ﺧﻮد ﻋﮑﺲ ﺑ ﯿﺮﯾﺪ و آن را در ﮔﺰارش ﺧﻮد ﻗﺮار دﻫﯿﺪ‪.‬‬
‫ﺑﺨﺶ ﻫﻔﺘﻢ‬
‫در اﯾﻦ ﺟﺎ ﻣ ﺧﻮاﻫﯿﻢ ﻣﺘﻮﺳﻂ ﻗﯿﻤﺖ ﺧﺎﻧﻪ ﻫﺎ را در ﯾ ﻣﺤﻠﻪ ﺗﻘﺮﯾﺐ ﺑﺰﻧﯿﻢ‪ .‬دﯾﺘﺎﺳﺘ ﮐﻪ در اﺧﺘﯿﺎرﺗﺎن ﻗﺮار ﻣ ﮔﯿﺮد ﺷﺎﻣﻞ ‪۵٠۶‬‬
‫داده ی ‪ ١٣‬ﺑﻌﺪی اﺳﺖ ﮐﻪ ﻫﺮ ﺑﻌﺪ ﯾ وﯾﮋﮔ از ﻣﺤﻠﻪ اﯾﺴﺖ ﮐﻪ ﺧﺎﻧﻪ در آن ﻗﺮار دارد‪ ١٣ .‬وﯾﮋﮔ ﻣﻮرد ﺑﺤﺚ ﺣﺎوی اﻃﻼﻋﺖ‬
‫زﯾﺮ ﻣ ﺑﺎﺷﻨﺪ‪:‬‬
‫‪Mean Squared Error١‬‬
‫‪٢‬‬
‫‪Per capita crime rate per town‬‬
‫‪Proportion of residential land zoned for lots over 25,000 sq. ft.‬‬
‫‪proportion of non-retail business acres per town‬‬
‫‪1 if tract bounds Charles river, 0 otherwise‬‬
‫)‪Nitric oxides concentration (parts per 10 million‬‬
‫‪Average number of rooms per dwelling‬‬
‫‪Proportion of owner-occupied units built prior to 1940‬‬
‫‪Weighted distances to five Boston employment centres‬‬
‫‪Index of accessibility to radial highways‬‬
‫‪Full-value property-tax rate per $10,000‬‬
‫‪Pupil-teacher ratio by town‬‬
‫‪1000(Bk - 0.63)^2, where Bk is the proportion of blacks by town‬‬
‫‪Percent lower status of the population‬‬
‫‪1.‬‬
‫‪2.‬‬
‫‪3.‬‬
‫‪4.‬‬
‫‪5.‬‬
‫‪6.‬‬
‫‪7.‬‬
‫‪8.‬‬
‫‪9.‬‬
‫‪10.‬‬
‫‪11.‬‬
‫‪12.‬‬
‫‪13.‬‬
‫ﻓﺎﯾﻞ ﻫﺎی ‪ data_set٢_X‬و ‪ data_set٢_Y‬و ﺑﻪ ﺗﺮﺗﯿﺐ ﺷﺎﻣﻞ ﻣﺎﺗﺮﯾﺲ ‪ X‬ﻫﺎ و ﺑﺮدار ‪ Y‬ﻫﺎ ﻣ ﺑﺎﺷﻨﺪ‪) .‬ﺑﺮ ﺧﻼف دﯾﺘﺎﺳﺖ‬
‫اول؛ در اﯾﻨﺠﺎ ‪ Y ، X‬از ﻫﻢ ﺟﺪا ﻫﺴﺘﻨﺪ‪(.‬‬
‫• اﻟﻒ( ﺑﺎ اﺳﺘﻔﺎده از ‪ Normal Equation‬ﺑﺮدار ‪ θ‬ﺑﻬﯿﻨﻪ را ﺑﻪ دﺳﺖ آورﯾﺪ‪.‬‬
‫• ب( ﺣﺎل ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ LinearRegression_GD‬ﮐﻪ در ﺑﺨﺶ ‪ ٣‬ﭘﯿﺎده ﺳﺎزی ﮐﺮدﯾﺪ؛ ﺳﻌ ﮐﻨﯿﺪ رﮔﺮﺳﯿﻮن ﺧﻄ‬
‫را روی داده ﻫﺎی اﯾﻦ دﯾﺘﺎﺳﺖ اﺟﺮا ﮐﻨﯿﺪ )ﺑﺎ ﻫﺮ ﭘﺎراﻣﺘﺮی ﮐﻪ ﻣ ﺧﻮاﻫﯿﺪ( ‐ﻓﺮاﻣﻮش ﻧﮑﻨﯿﺪ ﮐﻪ ﯾ ﺑﻌﺪ ﺟﺪﯾﺪ ﺑﻪ داده‬
‫ﻫﺎ اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪ ‐.‬و ﻣﺠﺪدا ﻧﻤﻮدار ﻣﯿﺰان ﺧﻄﺎ در ﻫﺮ ‪ iteration‬را رﺳﻢ ﮐﻨﯿﺪ‪ .‬اﺣﺘﻤﺎﻻ اﯾﻦ ﺑﺎر ﻧﻤﻮدار ﻫﻤ ﺮا ﻧﻤ ﺷﻮد‬
‫‪ .‬دﻟﯿﻠﺶ اﯾﻦ اﺳﺖ ﮐﻪ ‪ feature‬ﻫﺎ در ﺑﺎزه ﻫﺎی ﻣﺘﻔﺎوﺗ ﻫﺴﺘﻨﺪ‪ .‬در اﯾﻦ ﺑﺎره ﺑﯿﺸﺘﺮ ﺗﻮﺿﯿﺢ دﻫﯿﺪ و ﭘﯿﺸﻨﻬﺎد ﮐﻨﯿﺪ ﭼﻪ راه‬
‫ﺣﻠ ﺑﺮای اﯾﻦ ﻣﺸ ﻞ وﺟﻮد دارد‪.‬‬
‫• ج( اﺧﺘﯿﺎری‪ :‬ﺑﺎ اﺳﺘﻔﺎده از ‪ Feature Scaling‬داده ﻫﺎ را ﭘﯿﺶ ﭘﺮدازش ﮐﻨﯿﺪ و آﻧﮕﺎه رﮔﺮﺳﯿﻮن را روی داده ﻫﺎی‬
‫ﭘﯿﺶ ﭘﺮدازش ﺷﺪه اﻧﺠﺎم دﻫﯿﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺗﻮﺿﯿﺢ دﻫﯿﺪ از ﭼﻪ ﻧﻮع ‪ Feature Scaling‬ی اﺳﺘﻔﺎده ﮐﺮدﯾﺪ‪.‬‬
‫ﺑﺨﺶ ﻫﺸﺘﻢ‬
‫در اﯾﻦ ﺑﺨﺶ ﻣ ﺧﻮاﻫﯿﻢ رﮔﺮﺳﯿﻮن را ﺗﻌﻤﯿﻢ دﻫﯿﻢ و ﺑﺎ آن ﺗﻮاﺑﻊ ﻏﯿﺮ ﺧﻄ را ﺗﻘﺮﯾﺐ ﺑﺰﻧﯿﻢ‪ .‬دﯾﺘﺎﺳﺖ ﺷﻤﺎره ‪ ٣‬ﺣﺎوی ‪ X‬ﻫﺎی ﺗﮏ‬
‫ﺑﻌﺪی اﺳﺖ‪ .‬در اﯾﻨﺠﺎ ﻫﺎ ‪ Y‬ﺗﺎﺑﻌ ﺧﻄ ﻧﺴﺒﺖ ﺑﻪ ‪ X‬ﻧﻤ ﺑﺎﺷﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻬﺘﺮ اﺳﺖ ﻣﺜﻼ ﺑﺎ ﺗﺎﺑﻌ از درﺟﻪ ی ‪ ٢‬آﻧﻬﺎ را ﺗﻘﺮﯾﺐ‬
‫ﺑﺰﻧﯿﻢ )ﺷ ﻞ ‪.(٢‬‬
‫راه ﺣﻠ ﮐﻪ ﺑﻪ ﻧﻈﺮ ﺷﻤﺎ ﻣ رﺳﺪ؛ ﭼﯿﺴﺖ؟ راه ﺣﻞ ﺧﻮد را ﺗﻮﺿﯿﺢ دﻫﯿﺪ‪ .‬ﺳﻌ ﮐﻨﯿﺪ ﺗﺎ ﺟﺎی ﻣﻤ ﻦ از ﺗﻮاﺑﻌ ﮐﻪ ﭘﯿﺎده‬
‫ﺳﺎزی ﮐﺮدﯾﺪ اﺳﺘﻔﺎده ﻣﺠﺪد ﮐﻨﯿﺪ‪ .‬ﺑﻌﺪ از ﺑﻪ دﺳﺖ آوردن ﺑﻬﺘﺮﯾﻦ ﻣﻨﺤﻨ ﮐﻪ ﺑﻪ داده ﻫﺎ ‪ fit‬ﻣ ﺷﻮد؛ آن ﻣﻨﺤﻨ و داده ﻫﺎ را در‬
‫ﯾ ﺷ ﻞ ﻧﻤﺎﯾﺶ دﻫﯿﺪ‪.‬‬
‫‪٣‬‬
‫ﺷ ﻞ ‪ :١‬ﻧﻤﻮدار ﻣﻘﺎدﯾﺮ ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ در ﻫﺮ ﺗﮑﺮار ﺣﻠﻘﻪ ی اﻟ ﻮرﯾﺘﻢ ‪Gradient Descent‬‬
‫ﺷ ﻞ ‪ :٢‬راﺑﻄﻪ ی ‪ X‬و ‪ Y‬در ﯾ‬
‫‪۴‬‬
‫دﯾﺘﺎﺳﺖ ﺳﺎﺧﺘﮕ‬
‫ﻣﻨﺤﻨ ﺑﻪ ﺗﻌﺪادی داده‬
‫ﺷ ﻞ ‪ fit :٣‬ﮐﺮدن ﯾ‬
‫‪۵‬‬