預(yù)測(cè)波士頓房?jī)r(jià)

機(jī)器學(xué)習(xí)工程師納米學(xué)位

模型評(píng)價(jià)與驗(yàn)證

項(xiàng)目 : 預(yù)測(cè)波士頓房?jī)r(jià)

第一步. 導(dǎo)入數(shù)據(jù)

在這個(gè)項(xiàng)目中削饵,你將利用馬薩諸塞州波士頓郊區(qū)的房屋信息數(shù)據(jù)訓(xùn)練和測(cè)試一個(gè)模型,并對(duì)模型的性能和預(yù)測(cè)能力進(jìn)行測(cè)試咕幻。通過(guò)該數(shù)據(jù)訓(xùn)練后的好的模型可以被用來(lái)對(duì)房屋做特定預(yù)測(cè)---尤其是對(duì)房屋的價(jià)值。對(duì)于房地產(chǎn)經(jīng)紀(jì)等人的日常工作來(lái)說(shuō),這樣的預(yù)測(cè)模型被證明非常有價(jià)值翁狐。

此項(xiàng)目的數(shù)據(jù)集來(lái)自UCI機(jī)器學(xué)習(xí)知識(shí)庫(kù)(數(shù)據(jù)集已下線)。波士頓房屋這些數(shù)據(jù)于1978年開(kāi)始統(tǒng)計(jì)钥飞,共506個(gè)數(shù)據(jù)點(diǎn)莺掠,涵蓋了麻省波士頓不同郊區(qū)房屋14種特征的信息。本項(xiàng)目對(duì)原始數(shù)據(jù)集做了以下處理:

  • 有16個(gè)'MEDV' 值為50.0的數(shù)據(jù)點(diǎn)被移除读宙。 這很可能是由于這些數(shù)據(jù)點(diǎn)包含遺失看不到的值彻秆。
  • 有1個(gè)數(shù)據(jù)點(diǎn)的 'RM' 值為8.78. 這是一個(gè)異常值,已經(jīng)被移除结闸。
  • 對(duì)于本項(xiàng)目唇兑,房屋的'RM''LSTAT'桦锄,'PTRATIO'以及'MEDV'特征是必要的扎附,其余不相關(guān)特征已經(jīng)被移除。
  • 'MEDV'特征的值已經(jīng)過(guò)必要的數(shù)學(xué)轉(zhuǎn)換结耀,可以反映35年來(lái)市場(chǎng)的通貨膨脹效應(yīng)留夜。

運(yùn)行下面區(qū)域的代碼以載入波士頓房屋數(shù)據(jù)集,以及一些此項(xiàng)目所需的 Python 庫(kù)图甜。如果成功返回?cái)?shù)據(jù)集的大小碍粥,表示數(shù)據(jù)集已載入成功。

# Import libraries necessary for this project
import numpy as np
import pandas as pd
from sklearn.model_selection import ShuffleSplit

# Import supplementary visualizations code visuals.py
import visuals as vs

# Pretty display for notebooks
%matplotlib inline

# Load the Boston housing dataset
data = pd.read_csv('housing.csv')
prices = data['MEDV']
features = data.drop('MEDV', axis = 1)
    
# Success
print("Boston housing dataset has {} data points with {} variables each.".format(*data.shape))
Boston housing dataset has 489 data points with 4 variables each.

第二步. 分析數(shù)據(jù)

在項(xiàng)目的第一個(gè)部分具则,你會(huì)對(duì)波士頓房地產(chǎn)數(shù)據(jù)進(jìn)行初步的觀察并給出你的分析即纲。通過(guò)對(duì)數(shù)據(jù)的探索來(lái)熟悉數(shù)據(jù)可以讓你更好地理解和解釋你的結(jié)果。

由于這個(gè)項(xiàng)目的最終目標(biāo)是建立一個(gè)預(yù)測(cè)房屋價(jià)值的模型博肋,我們需要將數(shù)據(jù)集分為特征(features)目標(biāo)變量(target variable)低斋。

  • 特征 'RM''LSTAT'匪凡,和 'PTRATIO'膊畴,給我們提供了每個(gè)數(shù)據(jù)點(diǎn)的數(shù)量相關(guān)的信息。
  • 目標(biāo)變量'MEDV'病游,是我們希望預(yù)測(cè)的變量唇跨。

他們分別被存在 featuresprices 兩個(gè)變量名中。

編程練習(xí) 1:基礎(chǔ)統(tǒng)計(jì)運(yùn)算

你的第一個(gè)編程練習(xí)是計(jì)算有關(guān)波士頓房?jī)r(jià)的描述統(tǒng)計(jì)數(shù)據(jù)衬衬。我們已為你導(dǎo)入了 NumPy买猖,你需要使用這個(gè)庫(kù)來(lái)執(zhí)行必要的計(jì)算。這些統(tǒng)計(jì)數(shù)據(jù)對(duì)于分析模型的預(yù)測(cè)結(jié)果非常重要的滋尉。
在下面的代碼中玉控,你要做的是:

  • 計(jì)算 prices 中的 'MEDV' 的最小值、最大值狮惜、均值高诺、中值和標(biāo)準(zhǔn)差碌识;
  • 將運(yùn)算結(jié)果儲(chǔ)存在相應(yīng)的變量中。
# TODO: Minimum price of the data
minimum_price =prices.min() # or np.min(prices, 0)

# TODO: Maximum price of the data
maximum_price =prices.max() # or np.max(prices, 0)

# TODO: Mean price of the data
mean_price = prices.mean() #or np.mean(prices, 0)

# TODO: Median price of the data
median_price = prices.median() #np.median(prices, 0)

# TODO: Standard deviation of prices of the data
std_price = prices.std() #np.std(prices,0)

# Show the calculated statistics
print("Statistics for Boston housing dataset:\n")
print("Minimum price: ${:.2f}".format(minimum_price)) 
print("Maximum price: ${:.2f}".format(maximum_price))
print("Mean price: ${:.2f}".format(mean_price))
print("Median price ${:.2f}".format(median_price))
print("Standard deviation of prices: ${:.2f}".format(std_price))
Statistics for Boston housing dataset:

Minimum price: $105000.00
Maximum price: $1024800.00
Mean price: $454342.94
Median price $438900.00
Standard deviation of prices: $165340.28

問(wèn)題 1 - 特征觀察

如前文所述虱而,本項(xiàng)目中我們關(guān)注的是其中三個(gè)值:'RM'筏餐、'LSTAT''PTRATIO',對(duì)每一個(gè)數(shù)據(jù)點(diǎn):

  • 'RM' 是該地區(qū)中每個(gè)房屋的平均房間數(shù)量牡拇;
  • 'LSTAT' 是指該地區(qū)有多少百分比的業(yè)主屬于是低收入階層(有工作但收入微笨伞);
  • 'PTRATIO' 是該地區(qū)的中學(xué)和小學(xué)里惠呼,學(xué)生和老師的數(shù)目比(學(xué)生/老師)佩番。

憑直覺(jué),上述三個(gè)特征中對(duì)每一個(gè)來(lái)說(shuō)罢杉,你認(rèn)為增大該特征的數(shù)值,'MEDV'的值會(huì)是增大還是減小呢贡歧?每一個(gè)答案都需要你給出理由滩租。

提示:你預(yù)期一個(gè)'RM' 值是6的房屋跟'RM' 值是7的房屋相比,價(jià)值更高還是更低呢利朵?

問(wèn)題 1 - 回答:

使用數(shù)據(jù)可視化的方式可以直觀的觀察出特征和結(jié)果之間的關(guān)系÷上耄現(xiàn)在已知數(shù)據(jù)集中的單個(gè)樣本具備三個(gè)特征,可以分別畫(huà)出三個(gè)特征和結(jié)果值的散點(diǎn)圖绍弟,觀察其關(guān)系技即。

data.plot.scatter('RM','MEDV', c='red')
data.plot.scatter('LSTAT', 'MEDV', c='green')
data.plot.scatter('PTRATIO', 'MEDV', c='blue');

通過(guò)散點(diǎn)圖,可以很明顯的看出來(lái)樟遣,RM值與price基本上成正比例關(guān)系而叼,而LSTAT值和price可近似的看做反比關(guān)系;值得注意的是豹悬,PTRATIO值無(wú)法直接從散點(diǎn)圖中觀察出來(lái)其與price之間的關(guān)系葵陵,但隱約可以看出,在價(jià)格低于600000的區(qū)間內(nèi)瞻佛,PTRATIO分布的比較密集脱篙。


第三步. 建立模型

在項(xiàng)目的第三步中,你需要了解必要的工具和技巧來(lái)讓你的模型進(jìn)行預(yù)測(cè)伤柄。用這些工具和技巧對(duì)每一個(gè)模型的表現(xiàn)做精確的衡量可以極大地增強(qiáng)你預(yù)測(cè)的信心绊困。

編程練習(xí)2:定義衡量標(biāo)準(zhǔn)

如果不能對(duì)模型的訓(xùn)練和測(cè)試的表現(xiàn)進(jìn)行量化地評(píng)估,我們就很難衡量模型的好壞适刀。通常我們會(huì)定義一些衡量標(biāo)準(zhǔn)秤朗,這些標(biāo)準(zhǔn)可以通過(guò)對(duì)某些誤差或者擬合程度的計(jì)算來(lái)得到。在這個(gè)項(xiàng)目中蔗彤,你將通過(guò)運(yùn)算決定系數(shù) R^2 來(lái)量化模型的表現(xiàn)川梅。模型的決定系數(shù)是回歸分析中十分常用的統(tǒng)計(jì)信息疯兼,經(jīng)常被當(dāng)作衡量模型預(yù)測(cè)能力好壞的標(biāo)準(zhǔn)。

R^2 的數(shù)值范圍從0至1贫途,表示目標(biāo)變量的預(yù)測(cè)值和實(shí)際值之間的相關(guān)程度平方的百分比吧彪。一個(gè)模型的 R^2 值為0還不如直接用平均值來(lái)預(yù)測(cè)效果好;而一個(gè) R^2 值為1的模型則可以對(duì)目標(biāo)變量進(jìn)行完美的預(yù)測(cè)丢早。從0至1之間的數(shù)值姨裸,則表示該模型中目標(biāo)變量中有百分之多少能夠用特征來(lái)解釋。模型也可能出現(xiàn)負(fù)值的 R^2怨酝,這種情況下模型所做預(yù)測(cè)有時(shí)會(huì)比直接計(jì)算目標(biāo)變量的平均值差很多傀缩。

在下方代碼的 performance_metric 函數(shù)中,你要實(shí)現(xiàn):

  • 使用 sklearn.metrics 中的 r2_score 來(lái)計(jì)算 y_truey_predictR^2 值农猬,作為對(duì)其表現(xiàn)的評(píng)判赡艰。
  • 將他們的表現(xiàn)評(píng)分儲(chǔ)存到 score 變量中。
# TODO: Import 'r2_score'
from sklearn.metrics import r2_score

def performance_metric(y_true, y_predict):
    """ Calculates and returns the performance score between 
        true and predicted values based on the metric chosen. """
    
    # TODO: Calculate the performance score between 'y_true' and 'y_predict'
    score = r2_score(y_true, y_predict)
    
    # Return the score
    return score

問(wèn)題 2 - 擬合程度

假設(shè)一個(gè)數(shù)據(jù)集有五個(gè)數(shù)據(jù)且一個(gè)模型做出下列目標(biāo)變量的預(yù)測(cè):

真實(shí)數(shù)值 預(yù)測(cè)數(shù)值
3.0 2.5
-0.5 0.0
2.0 2.1
7.0 7.8
4.2 5.3

你覺(jué)得這個(gè)模型已成功地描述了目標(biāo)變量的變化嗎斤葱?如果成功慷垮,請(qǐng)解釋為什么,如果沒(méi)有揍堕,也請(qǐng)給出原因料身。

提示1:運(yùn)行下方的代碼,使用 performance_metric 函數(shù)來(lái)計(jì)算 y_truey_predict 的決定系數(shù)衩茸。

提示2R^2 分?jǐn)?shù)是指可以從自變量中預(yù)測(cè)的因變量的方差比例芹血。 換一種說(shuō)法:

  • R^2 為0意味著因變量不能從自變量預(yù)測(cè)。
  • R^2 為1意味著可以從自變量預(yù)測(cè)因變量楞慈。
  • R^2 在0到1之間表示因變量可預(yù)測(cè)的程度幔烛。
  • R^2 為0.40意味著 Y 中40%的方差可以從 X 預(yù)測(cè)。
# Calculate the performance of this model
score = performance_metric([3, -0.5, 2, 7, 4.2], [2.5, 0.0, 2.1, 7.8, 5.3])
print("Model has a coefficient of determination, R^2, of {:.3f}.".format(score))
Model has a coefficient of determination, R^2, of 0.923.

對(duì)R^2的分析反饋
我認(rèn)為:如果是在一元回歸分析中這個(gè)模型一定程度上描述了目標(biāo)變量的變化抖部,但是還不夠成功说贝,因?yàn)檫€存在較大的誤差,不過(guò)模型的好壞最終還是要分析的具體問(wèn)題慎颗。如果是在多元回歸分析中乡恕,雖然我們得到了0.923這個(gè)看上去不錯(cuò)的R^2分?jǐn)?shù),但是不排除還有其他特征也會(huì)對(duì)目標(biāo)值有很大的影響俯萎,很難去判斷模型是否成功傲宜,但是但就對(duì)當(dāng)前要評(píng)估的特征來(lái)講,0.923的分?jǐn)?shù)意味著當(dāng)前評(píng)判的這些特征對(duì)輸出值有相當(dāng)很高的的解釋程度夫啊,因變量Y(輸出值)中92.3%的方差可以從當(dāng)前的特征來(lái)預(yù)測(cè)函卒。放在上面的問(wèn)題中,0.923得R^2分?jǐn)?shù)事實(shí)上也并不能讓我們很滿意撇眯,因?yàn)槲覀円A(yù)測(cè)的是具體的數(shù)值报嵌。

問(wèn)題 2 - 回答:

編程練習(xí) 3: 數(shù)據(jù)分割與重排

接下來(lái)虱咧,你需要把波士頓房屋數(shù)據(jù)集分成訓(xùn)練和測(cè)試兩個(gè)子集。通常在這個(gè)過(guò)程中锚国,數(shù)據(jù)也會(huì)被重排列腕巡,以消除數(shù)據(jù)集中由于順序而產(chǎn)生的偏差。
在下面的代碼中血筑,你需要

  • 使用 sklearn.model_selection 中的 train_test_split绘沉, 將 featuresprices 的數(shù)據(jù)都分成用于訓(xùn)練的數(shù)據(jù)子集和用于測(cè)試的數(shù)據(jù)子集。
    • 分割比例為:80%的數(shù)據(jù)用于訓(xùn)練豺总,20%用于測(cè)試车伞;
    • 選定一個(gè)數(shù)值以設(shè)定 train_test_split 中的 random_state ,這會(huì)確保結(jié)果的一致性喻喳;
  • 將分割后的訓(xùn)練集與測(cè)試集分配給 X_train, X_test, y_trainy_test另玖。
# TODO: Import 'train_test_split'
from sklearn.model_selection import train_test_split

# TODO: Shuffle and split the data into training and testing subsets
X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2)

# Success
print("Training and testing split was successful.")
Training and testing split was successful.

問(wèn)題 3 - 訓(xùn)練及測(cè)試

將數(shù)據(jù)集按一定比例分為訓(xùn)練用的數(shù)據(jù)集和測(cè)試用的數(shù)據(jù)集對(duì)學(xué)習(xí)算法有什么好處?

如果用模型已經(jīng)見(jiàn)過(guò)的數(shù)據(jù)表伦,例如部分訓(xùn)練集數(shù)據(jù)進(jìn)行測(cè)試日矫,又有什么壞處?

提示: 如果沒(méi)有數(shù)據(jù)來(lái)對(duì)模型進(jìn)行測(cè)試绑榴,會(huì)出現(xiàn)什么問(wèn)題?

問(wèn)題 3 - 回答:

劃分訓(xùn)練集和測(cè)試集的好處在于盈魁,我們可以近似的求出模型的泛化誤差翔怎,幫助我們?cè)u(píng)估模型的泛化能力。

我們總是希望得到泛化誤差比較小的模型杨耙,但是泛化誤差在訓(xùn)練中是無(wú)法得到的赤套,因?yàn)橛肋h(yuǎn)也不知道新的數(shù)據(jù)到底是個(gè)什么樣子。但是我們可以對(duì)泛化誤差進(jìn)行評(píng)估珊膜,評(píng)估的方法就是把數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集兩部分容握,常見(jiàn)的辦法有留出法,交叉驗(yàn)證法(包含留一法)和自助法(適合小規(guī)模的數(shù)據(jù))车柠,他們的原理就是從數(shù)據(jù)集中拿出一部部分?jǐn)?shù)據(jù)剔氏,這部分?jǐn)?shù)據(jù)不參加訓(xùn)練,用來(lái)充當(dāng)新的數(shù)據(jù)竹祷,進(jìn)而評(píng)估在模型在當(dāng)前數(shù)據(jù)集中的表現(xiàn)谈跛,通過(guò)測(cè)試誤差近似的代表其泛化誤差,但是要注意要在分割的時(shí)候保持?jǐn)?shù)據(jù)分布的一致性塑陵。

違背黃金法則就意味著最終會(huì)得到不準(zhǔn)確的測(cè)試誤差感憾,我們對(duì)模型的泛化能力評(píng)估在很大程度上失去了意義。

這里有一條黃金法則:測(cè)試集中的樣本永遠(yuǎn)都不可以參加訓(xùn)練令花,因?yàn)橐坏y(cè)試集中的樣本參加了訓(xùn)練阻桅,就等于污染了訓(xùn)練集凉倚,訓(xùn)練中已經(jīng)習(xí)得了新數(shù)據(jù)的特性,甚至在過(guò)擬合的情況下完全記住了這些樣本嫂沉,之后再遇到這些樣本稽寒,結(jié)果可想而知,測(cè)試已經(jīng)失去了測(cè)試的意義输瓜;這就好比我們要檢驗(yàn)一個(gè)學(xué)生的真實(shí)能力瓦胎,但是在試卷中除了了很多學(xué)生訓(xùn)練過(guò)的原題,但是同樣的道理?yè)Q一個(gè)題型尤揣,學(xué)生還會(huì)不會(huì)解我們依舊不知道搔啊,學(xué)生的能力到底有多強(qiáng),也就很難判斷了北戏。


第四步. 分析模型的表現(xiàn)

在項(xiàng)目的第四步负芋,我們來(lái)看一下不同參數(shù)下,模型在訓(xùn)練集和驗(yàn)證集上的表現(xiàn)嗜愈。這里旧蛾,我們專注于一個(gè)特定的算法(帶剪枝的決策樹(shù),但這并不是這個(gè)項(xiàng)目的重點(diǎn))蠕嫁,和這個(gè)算法的一個(gè)參數(shù) 'max_depth'锨天。用全部訓(xùn)練集訓(xùn)練,選擇不同'max_depth' 參數(shù)剃毒,觀察這一參數(shù)的變化如何影響模型的表現(xiàn)病袄。畫(huà)出模型的表現(xiàn)來(lái)對(duì)于分析過(guò)程十分有益。

學(xué)習(xí)曲線

下方區(qū)域內(nèi)的代碼會(huì)輸出四幅圖像赘阀,它們是一個(gè)決策樹(shù)模型在不同最大深度下的表現(xiàn)益缠。每一條曲線都直觀得顯示了隨著訓(xùn)練數(shù)據(jù)量的增加,模型學(xué)習(xí)曲線的在訓(xùn)練集評(píng)分和驗(yàn)證集評(píng)分的變化基公,評(píng)分使用決定系數(shù) R^2幅慌。曲線的陰影區(qū)域代表的是該曲線的不確定性(用標(biāo)準(zhǔn)差衡量)。

運(yùn)行下方區(qū)域中的代碼轰豆,并利用輸出的圖形回答下面的問(wèn)題胰伍。

# Produce learning curves for varying training set sizes and maximum depths
vs.ModelLearning(features, prices)

問(wèn)題 4 - 學(xué)習(xí)曲線

  • 選擇上述圖像中的其中一個(gè),并給出其最大深度酸休。
  • 隨著訓(xùn)練數(shù)據(jù)量的增加喇辽,訓(xùn)練集曲線的評(píng)分有怎樣的變化?驗(yàn)證集曲線呢雨席?
  • 如果有更多的訓(xùn)練數(shù)據(jù)菩咨,是否能有效提升模型的表現(xiàn)呢?

提示:學(xué)習(xí)曲線的評(píng)分是否最終會(huì)收斂到特定的值?一般來(lái)說(shuō)抽米,你擁有的數(shù)據(jù)越多特占,模型表現(xiàn)力越好。但是云茸,如果你的訓(xùn)練和測(cè)試曲線以高于基準(zhǔn)閾值的分?jǐn)?shù)收斂是目,這是否有必要?基于訓(xùn)練和測(cè)試曲線已經(jīng)收斂的前提下标捺,思考添加更多訓(xùn)練點(diǎn)的優(yōu)缺點(diǎn)懊纳。

  • 模型2使用的最大深度為3,隨著訓(xùn)練樣本的增加亡容,訓(xùn)練集的r^2值和測(cè)試集的R^2值最終都比較接近0.8嗤疯。

  • 隨著訓(xùn)練數(shù)據(jù)量(訓(xùn)練樣本)的增加,訓(xùn)練集曲線的評(píng)分有不斷減小的趨勢(shì)闺兢,最終會(huì)趨向于一條直線茂缚,不過(guò)幅度越來(lái)越小。相對(duì)應(yīng)的測(cè)試集的R^2值會(huì)逐漸的
    增大屋谭,但最終也會(huì)和訓(xùn)練集曲線那樣最終趨向于一條直線脚囊。

  • 有足夠大的訓(xùn)練集是一件好事,這就意味著可以在學(xué)習(xí)過(guò)程中學(xué)習(xí)的更加全面桐磁,就像一個(gè)經(jīng)驗(yàn)豐富的大人肯定會(huì)比一個(gè)小學(xué)生更會(huì)處理事務(wù)悔耘;但從曲線圖可以看
    出來(lái),訓(xùn)練集也并非越大越好我擂,在一定程度上淮逊,數(shù)據(jù)集大小達(dá)到某一個(gè)闕值之后,最終的在訓(xùn)練集上的誤差會(huì)趨向于平穩(wěn)扶踊,這個(gè)時(shí)候再去增加數(shù)據(jù)量意義不大反而
    會(huì)影響的訓(xùn)練的效率;而這個(gè)闕值的大小取決于模型郎任,有的模型對(duì)訓(xùn)練集里的數(shù)據(jù)學(xué)習(xí)的很全面秧耗,以至于快要記住所有數(shù)據(jù)了,就像上面的表4舶治,這樣的模型在訓(xùn)練
    集中表現(xiàn)很好但是在測(cè)試集上未必會(huì)有較高的精度分井,因?yàn)樗^(guò)度的學(xué)習(xí)了訓(xùn)練集,以至于泛化能力下降霉猛,這也就是常說(shuō)的過(guò)擬合尺锚。合適的模型應(yīng)該像表2中那樣,既
    不會(huì)丟失掉一些特征惜浅,又不會(huì)過(guò)度學(xué)習(xí)瘫辩,綜合來(lái)講訓(xùn)練效率較高,最終得到的模型泛化能力較強(qiáng)。

  • 當(dāng)然伐厌,單純的根據(jù)訓(xùn)練誤差來(lái)評(píng)估一個(gè)模型的泛化性能是遠(yuǎn)遠(yuǎn)不夠的承绸,還需要對(duì)泛化能力進(jìn)行評(píng)估。

問(wèn)題 4 - 回答:

復(fù)雜度曲線

下列代碼內(nèi)的區(qū)域會(huì)輸出一幅圖像挣轨,它展示了一個(gè)已經(jīng)經(jīng)過(guò)訓(xùn)練和驗(yàn)證的決策樹(shù)模型在不同最大深度條件下的表現(xiàn)军熏。這個(gè)圖形將包含兩條曲線,一個(gè)是訓(xùn)練集的變化卷扮,一個(gè)是驗(yàn)證集的變化荡澎。跟學(xué)習(xí)曲線相似,陰影區(qū)域代表該曲線的不確定性晤锹,模型訓(xùn)練和測(cè)試部分的評(píng)分都用的 performance_metric 函數(shù)摩幔。

運(yùn)行下方區(qū)域中的代碼,并利用輸出的圖形并回答下面的問(wèn)題5與問(wèn)題6抖甘。

vs.ModelComplexity(X_train, y_train)

問(wèn)題 5 - 偏差(bias)與方差(variance)之間的權(quán)衡取舍

  • 當(dāng)模型以最大深度 1訓(xùn)練時(shí)热鞍,模型的預(yù)測(cè)是出現(xiàn)很大的偏差還是出現(xiàn)了很大的方差?
  • 當(dāng)模型以最大深度10訓(xùn)練時(shí)衔彻,情形又如何呢薇宠?
  • 圖形中的哪些特征能夠支持你的結(jié)論?

提示: 高偏差表示欠擬合(模型過(guò)于簡(jiǎn)單)艰额,而高方差表示過(guò)擬合(模型過(guò)于復(fù)雜澄港,以至于無(wú)法泛化)”冢考慮哪種模型(深度1或10)對(duì)應(yīng)著上述的情況回梧,并權(quán)衡偏差與方差。

問(wèn)題 5 - 回答:

  • 當(dāng)模型以最大深度1訓(xùn)練的時(shí)候祖搓,模型的預(yù)測(cè)出現(xiàn)了比較大的偏差狱意,因?yàn)殛幱皡^(qū)域代表該曲線的不確定性,當(dāng)深度為一時(shí)拯欧,陰影區(qū)域的跨度最大详囤,此時(shí)的模型不確定因素太大,換句話說(shuō)镐作,也就是精度較低藏姐,算法的擬合能力較差。

  • 當(dāng)模型以最大深度10訓(xùn)練的時(shí)候该贾,模型的預(yù)測(cè)出現(xiàn)了比較大的方差羔杨,因?yàn)橛?xùn)練集合測(cè)試集之間的距離更大,模型這個(gè)時(shí)候已經(jīng)過(guò)擬合杨蛋,在測(cè)試集中泛化能力過(guò)差兜材。以至于出現(xiàn)比較高的方差理澎。

  • 上述圖形中當(dāng)訓(xùn)練深度為3到4的時(shí)候,看上去訓(xùn)練效果最好护姆,因?yàn)樗沟媚P偷钠詈头讲钊〉昧似胶夥恕8鶕?jù)上圖可以看出,偏差和方差之間是存在沖突的卵皂,我們希望取得最小的方差和偏差秩铆,只有深度為4的時(shí)候,方差和偏差同時(shí)最小灯变。

問(wèn)題 6- 最優(yōu)模型的猜測(cè)

  • 結(jié)合問(wèn)題 5 中的圖殴玛,你認(rèn)為最大深度是多少的模型能夠最好地對(duì)未見(jiàn)過(guò)的數(shù)據(jù)進(jìn)行預(yù)測(cè)?
  • 你得出這個(gè)答案的依據(jù)是什么添祸?

提示:查看問(wèn)題5上方的圖表滚粟,并查看模型在不同 depth下的驗(yàn)證分?jǐn)?shù)。隨著深度的增加模型的表現(xiàn)力會(huì)變得更好嗎刃泌?我們?cè)谑裁辞闆r下獲得最佳驗(yàn)證分?jǐn)?shù)而不會(huì)使我們的模型過(guò)度復(fù)雜凡壤?請(qǐng)記住,奧卡姆剃刀:“在競(jìng)爭(zhēng)性假設(shè)中耙替,應(yīng)該選擇假設(shè)最少的那一個(gè)亚侠。”

問(wèn)題 6 - 回答:

  • 我認(rèn)為最大深度為3的時(shí)候俗扇,模型能夠最好的對(duì)未見(jiàn)到的數(shù)據(jù)進(jìn)行預(yù)測(cè)硝烂。
  • 隨著深度的增加,模型的表現(xiàn)力并不會(huì)變得越來(lái)越好铜幽,其主要原因就是因?yàn)閷W(xué)習(xí)過(guò)于深入滞谢,以至于把很多不必要的特征拿來(lái)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè),最終導(dǎo)致泛化能力變差除抛,所以也并非模型越復(fù)雜得到的結(jié)果就越讓人滿意狮杨。奧卡姆提到原則的目的就是使復(fù)雜的問(wèn)題簡(jiǎn)單化,盡量去排查那些不必要的特征的干擾到忽。但是卡奧姆提到原則也不是永遠(yuǎn)正確的橄教,天下沒(méi)有免費(fèi)的午餐(NFL)定理就證明了,在所有問(wèn)題同等重要的情況下绘趋,誤差和算法是無(wú)關(guān)的。到底應(yīng)該去選擇什么樣的模型颗管,還應(yīng)該具體問(wèn)題具體對(duì)待陷遮,放到這里來(lái)講,我們對(duì)波士頓房?jī)r(jià)數(shù)據(jù)的三個(gè)特征和最終的因變量房?jī)r(jià)進(jìn)行了對(duì)比垦江,模型最終是否能夠解決這個(gè)問(wèn)題帽馋,取決于模型對(duì)這三個(gè)特征的歸納和偏好是否與實(shí)際情況相匹配,而不是取決于用什么樣的算法。

第五步. 評(píng)估模型的表現(xiàn)

在項(xiàng)目的最后一節(jié)中绽族,你將構(gòu)建一個(gè)模型姨涡,并使用 fit_model 中的優(yōu)化模型去預(yù)測(cè)客戶特征集。

問(wèn)題 7- 網(wǎng)格搜索(Grid Search)

  • 什么是網(wǎng)格搜索法吧慢?
  • 如何用它來(lái)優(yōu)化模型涛漂?

提示:在解釋網(wǎng)格搜索算法時(shí),首先要理解我們?yōu)槭裁词褂镁W(wǎng)格搜索算法检诗,以及我們使用它的最終目的是什么匈仗。為了使你的回答更具有說(shuō)服力,你還可以給出一個(gè)模型中可以使用此方法進(jìn)行優(yōu)化參數(shù)的示例逢慌。

問(wèn)題 7 - 回答:

  • 有的問(wèn)題很復(fù)雜悠轩,特征很多,使用當(dāng)前算法進(jìn)行訓(xùn)練的時(shí)候要么過(guò)擬合攻泼,要么欠擬合火架,效果往往都不理想。針對(duì)當(dāng)前的算法忙菠,我們不知道到底應(yīng)該去選擇什么樣的參數(shù)何鸡,這個(gè)時(shí)候,最笨的辦法就是把這些參數(shù)所有有可能的組合都去試一遍只搁,這樣就不用不停地手動(dòng)調(diào)參了音比。

  • 網(wǎng)格搜索法就是把當(dāng)前要使用的算法所有參數(shù)的定義域進(jìn)行組合,組合出很多可能氢惋,最后得到一個(gè)網(wǎng)格洞翩。比如某一個(gè)模型需要兩個(gè)參數(shù)分別是,k(k=1or2), a
    (a = 3 or 4), 得到的網(wǎng)格就是[(1,3)(1,4)(2,3)(2,4)];然后把這個(gè)網(wǎng)格里面的每一組參數(shù)拿到模型里面去進(jìn)行訓(xùn)練焰望,最后會(huì)得到一個(gè)最佳的參數(shù)組合骚亿。

  • 要用網(wǎng)格搜索法來(lái)優(yōu)化模型,首先要知道對(duì)應(yīng)的算法使用了哪些參數(shù)熊赖,哪些參數(shù)可以人工確定下來(lái)来屠,哪些參數(shù)和問(wèn)題沒(méi)關(guān)系,那些參數(shù)是不確定的震鹉,然后再去使用網(wǎng)絡(luò)搜索法躲舌,先生成網(wǎng)格,然后使用網(wǎng)格里的參數(shù)組合挨個(gè)進(jìn)行訓(xùn)練(可能需要訓(xùn)練多次)炭臭,這個(gè)時(shí)候還可以去泡杯茶品一品负蚊!比如k近鄰算法在進(jìn)行分類的時(shí)候,k的值就是鄰居的數(shù)量浆兰,到底應(yīng)該選幾個(gè)鄰居來(lái)比較呢磕仅?唯一的辦法好像就是在可能的取值范圍內(nèi)測(cè)試k取值是多少的時(shí)候珊豹,習(xí)得模型的精度最高。

問(wèn)題 8 - 交叉驗(yàn)證

  • 什么是K折交叉驗(yàn)證法(k-fold cross-validation)榕订?
  • GridSearchCV 是如何結(jié)合交叉驗(yàn)證來(lái)完成對(duì)最佳參數(shù)組合的選擇的店茶?
  • GridSearchCV 中的'cv_results_'屬性能告訴我們什么?
  • 網(wǎng)格搜索為什么要使用K折交叉驗(yàn)證劫恒?K折交叉驗(yàn)證能夠避免什么問(wèn)題贩幻?

提示:在解釋k-fold交叉驗(yàn)證時(shí),一定要理解'k'是什么兼贸,和數(shù)據(jù)集是如何分成不同的部分來(lái)進(jìn)行訓(xùn)練和測(cè)試的段直,以及基于'k'值運(yùn)行的次數(shù)。
在考慮k-fold交叉驗(yàn)證如何幫助網(wǎng)格搜索時(shí)溶诞,你可以使用特定的數(shù)據(jù)子集來(lái)進(jìn)行訓(xùn)練與測(cè)試有什么缺點(diǎn)鸯檬,以及K折交叉驗(yàn)證是如何幫助緩解這個(gè)問(wèn)題。

問(wèn)題 8 - 回答:

  • k折較差驗(yàn)證法螺垢,就是把一個(gè)數(shù)據(jù)集分為k份子集喧务,這些子集互斥,每次訓(xùn)練的時(shí)候選擇k-1個(gè)子集的并集作為訓(xùn)練集枉圃,另外一個(gè)作為測(cè)試集功茴,一共進(jìn)行這樣k次訓(xùn)練和測(cè)試,最后返回k個(gè)結(jié)果孽亲,然后取這些結(jié)果的均值坎穿。

  • GridSearchCV有很多參數(shù),其中estimator 參數(shù)是要進(jìn)行調(diào)參的算法返劲,param_grid 就是參數(shù)網(wǎng)格(以列表或者字典的形式輸入玲昧,字典的鍵對(duì)應(yīng)被調(diào)算法的參數(shù)名; scoring參數(shù)對(duì)應(yīng)的被調(diào)算法的返回的評(píng)價(jià)標(biāo)準(zhǔn)篮绿,默認(rèn)是誤差估計(jì)函數(shù))孵延;參數(shù)cv是指定較差驗(yàn)證的k值,默認(rèn)是進(jìn)行3折較差驗(yàn)證亲配。它運(yùn)行的原理就是尘应,把參數(shù)放進(jìn)來(lái),然后把數(shù)據(jù)集分成cv份吼虎,對(duì)每一組參數(shù)進(jìn)行cv次訓(xùn)練和測(cè)試犬钢,最后取均值;如果參數(shù)網(wǎng)格的空間大小是10思灰,我們同時(shí)選擇了進(jìn)行10折較差驗(yàn)證玷犹,那么最終會(huì)進(jìn)行100次訓(xùn)練和測(cè)試,返回10個(gè)結(jié)果官辈。

  • GridSearchCV的cv_cv_results_是一個(gè)字典,在搜索完成之后會(huì)返回最優(yōu)結(jié)果箱舞,這個(gè)最優(yōu)結(jié)果內(nèi)容包含些什么取決于我們指定的評(píng)估函數(shù),通過(guò)指定scoring參數(shù)來(lái)設(shè)定拳亿,概括起來(lái)晴股,他直接返回了最優(yōu)參數(shù)組合,以及使用最優(yōu)參數(shù)組合得到的訓(xùn)練和測(cè)試結(jié)果肺魁。

  • 網(wǎng)格搜索之所以選擇k折較差驗(yàn)證电湘,是因?yàn)閗折較差驗(yàn)證在k次訓(xùn)練之后可以保證數(shù)據(jù)集中的每一個(gè)樣本都參與訓(xùn)練,從而確保每一組參數(shù)在參與訓(xùn)練的時(shí)候面對(duì)的訓(xùn)練集是一致的鹅经,最終保證搜索出來(lái)結(jié)果是可信服的寂呛,但是k折較差驗(yàn)證也有很大的缺點(diǎn),那就是調(diào)參需要進(jìn)行參數(shù)數(shù)目*k次的訓(xùn)練和測(cè)試瘾晃,比較耗費(fèi)性能贷痪,如果參數(shù)較多,參數(shù)的取值范圍較大蹦误,步長(zhǎng)太短劫拢,數(shù)據(jù)量太大,k的取值過(guò)大强胰,任何一種情況都嚴(yán)重影響訓(xùn)練的效率舱沧。要解決這個(gè)問(wèn)題,沒(méi)有通用的法則偶洋,唯一的辦法是根據(jù)具體問(wèn)題和對(duì)被調(diào)算法的深入理解熟吏,排除掉一些不需要進(jìn)入網(wǎng)格的參數(shù),確定或縮小一些參數(shù)的取值范圍玄窝,合理的取k值牵寺。

編程練習(xí) 4:擬合模型

在這個(gè)練習(xí)中,你將需要將所學(xué)到的內(nèi)容整合哆料,使用決策樹(shù)算法訓(xùn)練一個(gè)模型缸剪。為了得出的是一個(gè)最優(yōu)模型,你需要使用網(wǎng)格搜索法訓(xùn)練模型东亦,以找到最佳的 'max_depth' 參數(shù)杏节。你可以把'max_depth' 參數(shù)理解為決策樹(shù)算法在做出預(yù)測(cè)前,允許其對(duì)數(shù)據(jù)提出問(wèn)題的數(shù)量典阵。決策樹(shù)是監(jiān)督學(xué)習(xí)算法中的一種奋渔。

另外,你會(huì)發(fā)現(xiàn)在實(shí)現(xiàn)的過(guò)程中是使用ShuffleSplit()作為交叉驗(yàn)證的另一種形式(參見(jiàn)'cv_sets'變量)壮啊。雖然它不是你在問(wèn)題8中描述的K-fold交叉驗(yàn)證方法嫉鲸,但它同樣非常有用!下面的ShuffleSplit()實(shí)現(xiàn)將創(chuàng)建10個(gè)('n_splits')混洗集合歹啼,并且對(duì)于每個(gè)混洗集玄渗,數(shù)據(jù)的20%('test_size')將被用作驗(yàn)證集合座菠。當(dāng)您在實(shí)現(xiàn)代碼的時(shí)候,請(qǐng)思考一下它與 K-fold cross-validation 的不同與相似之處藤树。

請(qǐng)注意浴滴,ShuffleSplitScikit-Learn 版本0.17和0.18中有不同的參數(shù)。對(duì)于下面代碼單元格中的 fit_model 函數(shù)岁钓,您需要實(shí)現(xiàn)以下內(nèi)容:

  1. 定義 'regressor' 變量: 使用 sklearn.tree 中的 DecisionTreeRegressor 創(chuàng)建一個(gè)決策樹(shù)的回歸函數(shù);
  2. 定義 'params' 變量: 為 'max_depth' 參數(shù)創(chuàng)造一個(gè)字典升略,它的值是從1至10的數(shù)組;
  3. 定義 'scoring_fnc' 變量: 使用 sklearn.metrics 中的 make_scorer 創(chuàng)建一個(gè)評(píng)分函數(shù)。將 ‘performance_metric’ 作為參數(shù)傳至這個(gè)函數(shù)中屡限;
  4. 定義 'grid' 變量: 使用 sklearn.model_selection 中的 GridSearchCV 創(chuàng)建一個(gè)網(wǎng)格搜索對(duì)象品嚣;將變量'regressor', 'params', 'scoring_fnc''cv_sets' 作為參數(shù)傳至這個(gè)對(duì)象構(gòu)造函數(shù)中;

如果你對(duì) Python 函數(shù)的默認(rèn)參數(shù)定義和傳遞不熟悉钧大,可以參考這個(gè)MIT課程的視頻翰撑。

# TODO: Import 'make_scorer', 'DecisionTreeRegressor', and 'GridSearchCV'
from sklearn.metrics import make_scorer
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeRegressor

def fit_model(X, y):
    """ Performs grid search over the 'max_depth' parameter for a 
        decision tree regressor trained on the input data [X, y]. """
    
    # Create cross-validation sets from the training data
    # sklearn version 0.18: ShuffleSplit(n_splits=10, test_size=0.1, train_size=None, random_state=None)
    # sklearn versiin 0.17: ShuffleSplit(n, n_iter=10, test_size=0.1, train_size=None, random_state=None)
    cv_sets = ShuffleSplit(n_splits=10, test_size=0.20, random_state=42)
    
    # TODO: Create a decision tree regressor object
    regressor = DecisionTreeRegressor()

    # TODO: Create a dictionary for the parameter 'max_depth' with a range from 1 to 10
    params = {"max_depth":np.arange(1,11)}

    # TODO: Transform 'performance_metric' into a scoring function using 'make_scorer' 
    scoring_fnc = make_scorer(performance_metric)

    # TODO: Create the grid search cv object --> GridSearchCV()
    # Make sure to include the right parameters in the object:
    # (estimator, param_grid, scoring, cv) which have values 'regressor', 'params', 'scoring_fnc', and 'cv_sets' respectively.
    grid = GridSearchCV(estimator =regressor, param_grid=params, scoring=scoring_fnc, cv=cv_sets)

    # Fit the grid search object to the data to compute the optimal model
    grid = grid.fit(X, y)

    # Return the optimal model after fitting the data
    return grid.best_estimator_

第六步. 做出預(yù)測(cè)

當(dāng)我們用數(shù)據(jù)訓(xùn)練出一個(gè)模型,它現(xiàn)在就可用于對(duì)新的數(shù)據(jù)進(jìn)行預(yù)測(cè)啊央。在決策樹(shù)回歸函數(shù)中额嘿,模型已經(jīng)學(xué)會(huì)對(duì)新輸入的數(shù)據(jù)提問(wèn),并返回對(duì)目標(biāo)變量的預(yù)測(cè)值劣挫。你可以用這個(gè)預(yù)測(cè)來(lái)獲取數(shù)據(jù)未知目標(biāo)變量的信息册养,這些數(shù)據(jù)必須是不包含在訓(xùn)練數(shù)據(jù)之內(nèi)的。

問(wèn)題 9 - 最優(yōu)模型

最優(yōu)模型的最大深度(maximum depth)是多少压固?此答案與你在問(wèn)題 6所做的猜測(cè)是否相同球拦?

運(yùn)行下方區(qū)域內(nèi)的代碼,將決策樹(shù)回歸函數(shù)代入訓(xùn)練數(shù)據(jù)的集合帐我,以得到最優(yōu)化的模型坎炼。

# Fit the training data to the model using grid search
reg = fit_model(X_train, y_train)

# Produce the value for 'max_depth'
print("Parameter 'max_depth' is {} for the optimal model.".format(reg.get_params()['max_depth']))
Parameter 'max_depth' is 4 for the optimal model.

問(wèn)題 9 - 回答:

將決策樹(shù)回歸函數(shù)帶入訓(xùn)練數(shù)據(jù)的集合,得到的最優(yōu)深度是4拦键,和我在問(wèn)題6的猜測(cè)相同谣光,因?yàn)橥ㄟ^(guò)6中的圖中可以觀察到起方差和偏差在深度為4的時(shí)候兩者都接近最小值。

問(wèn)題 10 - 預(yù)測(cè)銷售價(jià)格

想像你是一個(gè)在波士頓地區(qū)的房屋經(jīng)紀(jì)人芬为,并期待使用此模型以幫助你的客戶評(píng)估他們想出售的房屋萄金。你已經(jīng)從你的三個(gè)客戶收集到以下的資訊:

特征 客戶 1 客戶 2 客戶 3
房屋內(nèi)房間總數(shù) 5 間房間 4 間房間 8 間房間
社區(qū)貧困指數(shù)(%被認(rèn)為是貧困階層) 17% 32% 3%
鄰近學(xué)校的學(xué)生-老師比例 15:1 22:1 12:1
  • 你會(huì)建議每位客戶的房屋銷售的價(jià)格為多少?
  • 從房屋特征的數(shù)值判斷媚朦,這樣的價(jià)格合理嗎氧敢?為什么?

提示:用你在分析數(shù)據(jù)部分計(jì)算出來(lái)的統(tǒng)計(jì)信息來(lái)幫助你證明你的答案询张。

運(yùn)行下列的代碼區(qū)域孙乖,使用你優(yōu)化的模型來(lái)為每位客戶的房屋價(jià)值做出預(yù)測(cè)。

# Produce a matrix for client data
client_data = [[5, 17, 15], # Client 1
               [4, 32, 22], # Client 2
               [8, 3, 12]]  # Client 3

# Show predictions
for i, price in enumerate(reg.predict(client_data)):
    print("Predicted selling price for Client {}'s home: ${:,.2f}".format(i+1, price))
Predicted selling price for Client 1's home: $412,440.00
Predicted selling price for Client 2's home: $235,611.76
Predicted selling price for Client 3's home: $928,666.67

問(wèn)題 10 - 回答:

根據(jù)模型預(yù)測(cè)出來(lái)的數(shù)值,我會(huì)推薦客戶1的房屋銷售價(jià)格為:412440.00;客戶2的房屋銷售價(jià)格為:235611.76;客戶3的房屋銷售價(jià)格為: $928,666.67;

我覺(jué)得這個(gè)數(shù)據(jù)還是比較合理的唯袄,排除在校學(xué)生和老師的比例弯屈,房屋的數(shù)量和房屋的價(jià)格成正相關(guān)關(guān)系這里被體現(xiàn),貧困指數(shù)和房屋價(jià)格成負(fù)相關(guān)關(guān)系這個(gè)因素也被體現(xiàn)的比較明顯恋拷,數(shù)據(jù)的趨勢(shì)完全符合數(shù)據(jù)分析中兩個(gè)特征和輸出值之間的關(guān)系季俩,我認(rèn)為這樣的預(yù)測(cè)結(jié)果有一定的可信程度,但是到底可信不可信梅掠,現(xiàn)在還不能確定,因?yàn)檫€沒(méi)有完成對(duì)模型的評(píng)估店归。

編程練習(xí) 5

你剛剛預(yù)測(cè)了三個(gè)客戶的房子的售價(jià)阎抒。在這個(gè)練習(xí)中,你將用你的最優(yōu)模型在整個(gè)測(cè)試數(shù)據(jù)上進(jìn)行預(yù)測(cè), 并計(jì)算相對(duì)于目標(biāo)變量的決定系數(shù) R^2 的值消痛。

提示:

  • 你可能需要用到 X_test, y_test, reg, performance_metric且叁。
  • 參考問(wèn)題10的代碼進(jìn)行預(yù)測(cè)。
  • 參考問(wèn)題2的代碼來(lái)計(jì)算 R^2 的值秩伞。
# TODO Calculate the r2 score between 'y_true' and 'y_predict'

y_predict  = reg.predict(X_test)

r2 = performance_metric(y_predict, y_test)

print("Optimal model has R^2 score {:,.2f} on test data".format(r2))
Optimal model has R^2 score 0.72 on test data

問(wèn)題11 - 分析決定系數(shù)

你剛剛計(jì)算了最優(yōu)模型在測(cè)試集上的決定系數(shù)逞带,你會(huì)如何評(píng)價(jià)這個(gè)結(jié)果?

問(wèn)題11 - 回答

對(duì)于回歸問(wèn)題來(lái)說(shuō)纱新,我們希望得到一個(gè)精確的數(shù)值展氓,而0.72得R^2分?jǐn)?shù)似乎遠(yuǎn)遠(yuǎn)不夠,我覺(jué)得這個(gè)模型預(yù)測(cè)的結(jié)果還不足以讓人信服脸爱,模型還不足以讓人能夠放心的使用遇汞。

模型健壯性

一個(gè)最優(yōu)的模型不一定是一個(gè)健壯模型。有的時(shí)候模型會(huì)過(guò)于復(fù)雜或者過(guò)于簡(jiǎn)單簿废,以致于難以泛化新增添的數(shù)據(jù)空入;有的時(shí)候模型采用的學(xué)習(xí)算法并不適用于特定的數(shù)據(jù)結(jié)構(gòu);有的時(shí)候樣本本身可能有太多噪點(diǎn)或樣本過(guò)少族檬,使得模型無(wú)法準(zhǔn)確地預(yù)測(cè)目標(biāo)變量歪赢。這些情況下我們會(huì)說(shuō)模型是欠擬合的。

問(wèn)題 12 - 模型健壯性

模型是否足夠健壯來(lái)保證預(yù)測(cè)的一致性单料?

提示: 執(zhí)行下方區(qū)域中的代碼埋凯,采用不同的訓(xùn)練和測(cè)試集執(zhí)行 fit_model 函數(shù)10次。注意觀察對(duì)一個(gè)特定的客戶來(lái)說(shuō)扫尖,預(yù)測(cè)是如何隨訓(xùn)練數(shù)據(jù)的變化而變化的递鹉。

vs.PredictTrials(features, prices, fit_model, client_data)
Trial 1: $391,183.33
Trial 2: $411,417.39
Trial 3: $415,800.00
Trial 4: $420,622.22
Trial 5: $413,334.78
Trial 6: $411,931.58
Trial 7: $390,250.00
Trial 8: $407,232.00
Trial 9: $402,531.82
Trial 10: $413,700.00

Range in prices: $30,372.22

問(wèn)題 12 - 回答:

問(wèn)題 13 - 實(shí)用性探討

簡(jiǎn)單地討論一下你建構(gòu)的模型能否在現(xiàn)實(shí)世界中使用?

提示:回答以下幾個(gè)問(wèn)題藏斩,并給出相應(yīng)結(jié)論的理由:

  • 1978年所采集的數(shù)據(jù)躏结,在已考慮通貨膨脹的前提下,在今天是否仍然適用狰域?
  • 數(shù)據(jù)中呈現(xiàn)的特征是否足夠描述一個(gè)房屋媳拴?
  • 在波士頓這樣的大都市采集的數(shù)據(jù)黄橘,能否應(yīng)用在其它鄉(xiāng)鎮(zhèn)地區(qū)?
  • 你覺(jué)得僅僅憑房屋所在社區(qū)的環(huán)境來(lái)判斷房屋價(jià)值合理嗎屈溉?

問(wèn)題 13 - 回答:

  • 我認(rèn)為塞关,1978年的數(shù)據(jù)在考慮通貨膨脹的前提下今天并不能完全適用,通貨膨脹只能解決一部分問(wèn)題子巾,因?yàn)橥ㄘ浥蛎洸徊皇菑?978年到現(xiàn)在帆赢,現(xiàn)金金額越來(lái)越大的唯一原因,類似的很多數(shù)據(jù)都無(wú)法量化线梗,比如時(shí)代的發(fā)展對(duì)人們消費(fèi)觀的改變等椰于,就像一個(gè)模型有很多參數(shù),通貨膨脹只是其中一個(gè)參數(shù)仪搔,可能起了很大的作用瘾婿,但是并不是唯一的決定性因素,也不能完全用通貨膨脹直接換算金錢(qián)數(shù)額烤咧。

  • 數(shù)據(jù)中出現(xiàn)的特征并不能足夠描述一個(gè)房屋偏陪,房屋的價(jià)格還受到很多其他因素的影響,而給出的三個(gè)特征遠(yuǎn)遠(yuǎn)不夠煮嫌,我么還需要更多的特征笛谦,比如房屋面積,房屋周邊的環(huán)境等昌阿。

  • 很明顯大都市采集的房屋數(shù)據(jù)并不能用到鄉(xiāng)鎮(zhèn)地區(qū)揪罕,原因顯而易見(jiàn),從機(jī)器學(xué)習(xí)角度來(lái)講宝泵,很有可能我們習(xí)得的模型根本沒(méi)有學(xué)到任何鄉(xiāng)鎮(zhèn)數(shù)據(jù)應(yīng)有的特征好啰。而且就像沒(méi)有免費(fèi)的午餐定理一樣,不同的模型解決不同的問(wèn)題儿奶,不同的問(wèn)題要區(qū)別對(duì)待框往,很明顯大都市和鄉(xiāng)鎮(zhèn)就是兩個(gè)完全不同的問(wèn)題,根本不能一概而論闯捎。

  • 我覺(jué)得并不合理椰弊,雖然根據(jù)房屋社區(qū)的環(huán)境大致的分出高端房和低端房,但是房屋的價(jià)格不單單受到周邊環(huán)境的影響瓤鼻,周邊環(huán)境這個(gè)特征也并不一定是決定房屋價(jià)格的充分條件秉版。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茬祷,隨后出現(xiàn)的幾起案子清焕,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秸妥,死亡現(xiàn)場(chǎng)離奇詭異滚停,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粥惧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)键畴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人突雪,你說(shuō)我怎么就攤上這事起惕。” “怎么了咏删?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵惹想,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我饵婆,道長(zhǎng),這世上最難降的妖魔是什么戏售? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任侨核,我火速辦了婚禮,結(jié)果婚禮上灌灾,老公的妹妹穿的比我還像新娘搓译。我一直安慰自己,他們只是感情好锋喜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布些己。 她就那樣靜靜地躺著,像睡著了一般嘿般。 火紅的嫁衣襯著肌膚如雪段标。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天炉奴,我揣著相機(jī)與錄音逼庞,去河邊找鬼。 笑死瞻赶,一個(gè)胖子當(dāng)著我的面吹牛赛糟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砸逊,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼璧南,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了师逸?” 一聲冷哼從身側(cè)響起司倚,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后对湃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體崖叫,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年拍柒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了心傀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拆讯,死狀恐怖脂男,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情种呐,我是刑警寧澤宰翅,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爽室,受9級(jí)特大地震影響汁讼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阔墩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一嘿架、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啸箫,春花似錦耸彪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扎唾,卻和暖如春召川,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胸遇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工扮宠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狐榔。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓坛增,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親薄腻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子收捣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容