自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

人工智能 機(jī)器學(xué)習(xí)
本文通過“金錢能讓人更快樂嗎?”等實操案例帶你了解基于實例的學(xué)習(xí)和基于模型的學(xué)習(xí)。

 一種對機(jī)器學(xué)習(xí)系統(tǒng)進(jìn)行分類的方法是看它們?nèi)绾畏夯?。大多?shù)機(jī)器學(xué)習(xí)任務(wù)是要做出預(yù)測。這意味著系統(tǒng)需要通過給定的訓(xùn)練示例,在它此前并未見過的示例上進(jìn)行預(yù)測(泛化)。在訓(xùn)練數(shù)據(jù)上實現(xiàn)良好的性能指標(biāo)固然重要,但是還不夠充分。真正的目的是要在新的對象實例上表現(xiàn)出色。

[[348092]]

泛化的主要方法有兩種:基于實例的學(xué)習(xí)和基于模型的學(xué)習(xí)。

01 基于實例的學(xué)習(xí)

我們最司空見慣的學(xué)習(xí)方法就是簡單地死記硬背。如果以這種方式創(chuàng)建一個垃圾郵件過濾器,那么它可能只會標(biāo)記那些與已被用戶標(biāo)記為垃圾郵件完全相同的郵件—這雖然不是最差的解決方案,但肯定也不是最好的。

除了完全相同的,你還可以通過編程讓系統(tǒng)標(biāo)記與已知的垃圾郵件非常相似的郵件。這里需要兩封郵件之間的相似度度量。一種(基本的)相似度度量方式是計算它們之間相同的單詞數(shù)目。如果一封新郵件與一封已知的垃圾郵件有許多單詞相同,系統(tǒng)就可以將其標(biāo)記為垃圾郵件。

這被稱為基于實例的學(xué)習(xí):系統(tǒng)用心學(xué)習(xí)這些示例,然后通過使用相似度度量來比較新實例和已經(jīng)學(xué)習(xí)的實例(或它們的子集),從而泛化新實例。例如,圖1-15中的新實例會歸為三角形,因為大多數(shù)最相似的實例屬于那一類。

 

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

 

▲圖1-15:基于實例的學(xué)習(xí)

02 基于模型的學(xué)習(xí)

從一組示例集中實現(xiàn)泛化的另一種方法是構(gòu)建這些示例的模型,然后使用該模型進(jìn)行預(yù)測。這稱為基于模型的學(xué)習(xí)(見圖1-16)。

 

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

 

▲圖1-16:基于模型的學(xué)習(xí)

舉例來說,假設(shè)你想知道金錢是否讓人感到快樂,你可以從經(jīng)合組織(OECD)的網(wǎng)站上下載“幸福指數(shù)”的數(shù)據(jù),再從國際貨幣基金組織(IMF)的網(wǎng)站上找到人均GDP的統(tǒng)計數(shù)據(jù),將數(shù)據(jù)并入表格,按照人均GDP排序,你會得到如表1-1所示的摘要。

 

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

 

表1-1:金錢能讓人更快樂嗎?

讓我們繪制這些國家的數(shù)據(jù)(見圖1-17)。

 

 

▲圖1-17:趨勢圖

這里似乎有一個趨勢!雖然數(shù)據(jù)包含噪聲(即部分隨機(jī)),但是仍然可以看出隨著該國人均GDP的增加,生活滿意度或多或少呈線性上升的趨勢。所以你可以把生活滿意度建模成一個關(guān)于人均GDP的線性函數(shù)。這個過程叫作模型選擇。你為生活滿意度選擇了一個線性模型,該模型只有一個屬性,就是人均GDP(見公式1-1)。

公式1-1:一個簡單的線性模型

生活滿意度= θ0 + θ1×人均GDP

這個模型有兩個模型參數(shù):θ0和θ1。通過調(diào)整這兩個參數(shù),可以用這個模型來代表任意線性函數(shù),如圖1-18所示。

 

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

 

▲圖1-18:一些可能的線性模型

在使用模型之前,需要先定義參數(shù)θ0和θ1的值。怎么才能知道什么值可以使模型表現(xiàn)最佳呢?要回答這個問題,需要先確定怎么衡量模型的性能表現(xiàn)。要么定義一個效用函數(shù)(或適應(yīng)度函數(shù))來衡量模型有多好,要么定義一個成本函數(shù)來衡量模型有多差。

對于線性回歸問題,通常的選擇是使用成本函數(shù)來衡量線性模型的預(yù)測與訓(xùn)練實例之間的差距,目的在于盡量使這個差距最小化。

這正是線性回歸算法的意義所在:通過你提供的訓(xùn)練樣本,找出最符合提供數(shù)據(jù)的線性模型的參數(shù),這稱為訓(xùn)練模型。在這個案例中,算法找到的最優(yōu)參數(shù)值為θ0 = 4.85和θ1 = 4.91×10^(-5)。

注意:令人困惑的是,同一個詞“模型”可以指模型的一種類型(例如,線性回歸),到一個完全特定的模型架構(gòu)(例如,有一個輸入和一個輸出的線性回歸),或者到最后可用于預(yù)測的訓(xùn)練模型(例如,有一個輸入和一個輸出的線性回歸,使用參數(shù)θ0 = 4.85和θ1 = 4.91×10^(-5))。模型選擇包括選擇模型的類型和完全指定它的架構(gòu)。訓(xùn)練一個模型意味著運行一種尋找模型參數(shù)的算法,使其最適合訓(xùn)練數(shù)據(jù)(希望能對新的數(shù)據(jù)做出好的預(yù)測)。

現(xiàn)在,(對于線性模型而言)模型基本接近訓(xùn)練數(shù)據(jù),如圖1-19所示。

 

金錢能讓人更快樂嗎?手把手教你用機(jī)器學(xué)習(xí)找到答案

 

▲圖1-19:最擬合訓(xùn)練數(shù)據(jù)的線性模型

現(xiàn)在終于可以運行模型來進(jìn)行預(yù)測了。例如,你想知道塞浦路斯人有多幸福,但是經(jīng)合組織的數(shù)據(jù)沒有提供答案。幸好你有這個模型可以做出預(yù)測:先查查塞浦路斯的人均GDP是多少,發(fā)現(xiàn)是22 587美元,然后應(yīng)用到模型中,發(fā)現(xiàn)生活滿意度大約是4.85 + 22 587×4.91×10^(-5) = 5.96。

為了激發(fā)你的興趣,示例1-1是一段加載數(shù)據(jù)的Python代碼,包括準(zhǔn)備數(shù)據(jù),創(chuàng)建一個可視化的散點圖,然后訓(xùn)練線性模型并做出預(yù)測。

  • 示例1-1:使用Scikit-Learn訓(xùn)練并運行一個線性模型

 

  1. import matplotlib.pyplot as plt 
  2. import numpy as np 
  3. import pandas as pd 
  4. import sklearn.linear_model 
  5.  
  6. Load the data 
  7. oecd_bli = pd.read_csv("oecd_bli_2015.csv", thousands=','
  8. gdp_per_capita = pd.read_csv("gdp_per_capita.csv",thousands=',',delimiter='\t'
  9.                           encoding='latin1', na_values="n/a"
  10.  
  11. Prepare the data 
  12. country_stats = prepare_country_stats(oecd_bli, gdp_per_capita) 
  13. X = np.c_[country_stats["GDP per capita"]] 
  14. y = np.c_[country_stats["Life satisfaction"]] 
  15.  
  16. # Visualize the data 
  17. country_stats.plot(kind='scatter', x="GDP per capita", y='Life satisfaction'
  18. plt.show() 
  19.  
  20. Select a linear model 
  21. model = sklearn.linear_model.LinearRegression() 
  22. # Train the model 
  23. model.fit(X, y) 
  24.  
  25. # Make a prediction for Cyprus 
  26. X_new = [[22587]]  # Cyprus's GDP per capita 
  27. print(model.predict(X_new)) # outputs [[ 5.96242338]] 

 

如果使用基于實例的學(xué)習(xí)算法,你會發(fā)現(xiàn)斯洛文尼亞的人均GDP最接近塞浦路斯(20 732美元),而經(jīng)合組織的數(shù)據(jù)告訴我們,斯洛文尼亞人的生活滿意度是5.7,因此你很可能會預(yù)測塞浦路斯的生活滿意度為5.7。

如果稍微拉遠(yuǎn)一些,看看兩個與之最接近的國家——葡萄牙和西班牙的生活滿意度分別為5.1和6.5。取這三個數(shù)值的平均值,得到5.77,這也非常接近基于模型預(yù)測所得的值。這個簡單的算法被稱為k-近鄰回歸(在本例中,k = 3)。

要將前面代碼中的線性回歸模型替換為k-近鄰回歸模型非常簡單,只需要將下面這行代碼:

 

  1. import sklearn.linear_model 
  2. model = sklearn.linear_model.LinearRegression() 

 

替換為:

 

  1. import sklearn.neighbors 
  2. model = sklearn.neighbors.KNeighborsRegressor( 
  3.     n_neighbors=3) 

 

如果一切順利,你的模型將會做出很棒的預(yù)測。如果不行,則需要使用更多的屬性(例如就業(yè)率、健康、空氣污染等),獲得更多或更高質(zhì)量的訓(xùn)練數(shù)據(jù),或者選擇一個更強(qiáng)大的模型(例如,多項式回歸模型)。

簡而言之:

  • 研究數(shù)據(jù)。
  • 選擇模型。
  • 使用訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練(即前面學(xué)習(xí)算法搜索模型參數(shù)值,從而使成本函數(shù)最小化的過程)。
  • 最后,應(yīng)用模型對新示例進(jìn)行預(yù)測(稱為推斷),希望模型的泛化結(jié)果不錯。

以上就是一個典型的機(jī)器學(xué)習(xí)項目。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-10-23 06:42:16

機(jī)器學(xué)習(xí)開發(fā)人工智能

2021-08-09 13:31:25

PythonExcel代碼

2022-10-19 14:30:59

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2022-08-04 10:39:23

Jenkins集成CD

2009-04-22 09:17:19

LINQSQL基礎(chǔ)

2021-05-10 06:48:11

Python騰訊招聘

2021-01-21 09:10:29

ECharts柱狀圖大數(shù)據(jù)

2021-01-08 10:32:24

Charts折線圖數(shù)據(jù)可視化

2021-02-02 13:31:35

Pycharm系統(tǒng)技巧Python

2020-03-08 22:06:16

Python數(shù)據(jù)IP

2012-01-11 13:40:35

移動應(yīng)用云服務(wù)

2021-08-02 23:15:20

Pandas數(shù)據(jù)采集

2021-12-11 20:20:19

Python算法線性

2017-10-18 09:48:13

深度學(xué)習(xí)TensorFlow入門篇

2017-10-27 10:29:35

人臉識別UbuntuPython

2021-06-05 23:51:21

ECharts氣泡圖散點圖

2021-05-17 21:30:06

Python求均值中值
點贊
收藏

51CTO技術(shù)棧公眾號