機器學習與人工智能基礎:價值估算(第二章-機器學習和價值預測)

什么是機器學習和價值預測?

What Is Machine Learning and value Prediction?

前言叨B叨

沒有叨B叨直接入主題

1. 什么是機器學習

作為一個碼農,你的工作就是寫出各種規則來告訴計算機如何解決某個特定問題。機器學習走的卻是另一種途徑。機器學習是計算機自己學習事物的規則來解決問題,而不是靠編寫特定的規則。讓我們從一個大家都熟悉的例子開始,垃圾郵件。想象一下,你正在編寫一個程序,用傳統的程序來過濾收件箱中的垃圾郵件。首先,你必須編寫一個復雜的程序,它包含所有的規則來決定一個特定的電子郵件是垃圾還是真實有用的信息。例如,程序可能會尋找某些你認為只出現在垃圾郵件中的關鍵詞,或者你可能會檢查發件人是不是你曾經發送過郵件給他。

然后,通過跑一些測試電子郵件來調試程序。最后,你檢查程序的結果,看看它是否正確地從垃圾郵件中分離出真實的電子郵件。在這個過程中,最難的部分是找出哪些規則有助于識別電子郵件為垃圾郵件還是真實郵件。要找出正確的規則,準確地識別垃圾郵件,而不會有任何誤報,這需要大量的嘗試。更鬧心的是,當垃圾郵件發送者改變自己的戰術,你又得相應更新你的過濾規則來應對。所以這是一個無止境的體力活。

如果計算機能自己想出過濾電子郵件的邏輯,那該多好哇,所以這個就是我們可以用機器學習來實現的東西。機器學習來搞定這個事情大概有以下幾個步驟: 首先,我們收集數千封電子郵件,把它們分成兩組。一組是正兒八經的郵件。另一組則是垃圾郵件。接下來,我們將這些電子郵件放入機器學習算法中。機器學習算法是一個現成的系統。我們不必編寫任何自定義代碼便能使其工作。機器學習算法將檢查兩組電子郵件,并創建它自己的規則,告訴他們如何區分它們。這個過程叫做訓練。

我們正在給機器學習算法輸入原始的電子郵件和預期的輸出數據,每一封電子郵件應該被分類為真實的或垃圾郵件,它創建了自己的規則來確定輸入什么樣的數據會產生什么樣的輸出。訓練過程中使用的數據越多,就越有可能學習到如何準確地做到這一點。一旦模型被訓練出來,我們現在就可以用它來以前從未見過的電子郵件了。當我們輸入一個未知的電子郵件,它將使用訓練過程中所學到的規則,正確地區分垃圾郵件和正常郵件。有了機器學習,我們就不必自己做苦逼的體力活了。也就是說我們不用寫任何郵件過濾規則。

計算機根據自己所看到的訓練數據提出了自己的建議。機器學習最酷的部分是我們用電子郵件分類的算法可以通過改變我們輸入的數據來解決很多其他的問題,而這不需要改變任何一行代碼。例如,輸入的時候我們不輸入電子郵件, 而是輸入一張照片或者手寫數字。該算法可以決定每個圖片所代表的數字,無論是0還是1,或者在本例中為8。同樣的算法,即可用于電子郵件過濾,也可以用來做手寫識別。

用傳統的編程方法,你可以給計算機精確地說明如何解決問題。計算機只能做它以前做過的事情。與機器學習不同,計算機不需要顯式地編程便會學習如何解決未解決過的事情。取而代之的是,你給計算機輸入數據,計算機從數據中學習到那些類似的邏輯來替代你的手工編程。

機器學習是解決傳統編程難以解決的復雜問題的一種有效方法。

2. 有監督的機器學習 價值預測

在本課程中,我們將使用有監督的機器學習來預測價值。有監督學習是機器學習的一個分支,計算機通過在標記的訓練數據上學習如何執行函數。機器學習還有其他分支,如無監督學習和強化學習,但監督學習是最常用的,也是我們入門的最佳選擇。這里我們將使用監督學習做價值預測。

我們通過輸入數據并告訴機器正確的值輸出應該是什么樣的數據,然后來訓練有監督的學習模型,我們的機器學習算法使用這些數據來生成規則來重現相同的結果。

例如,如果我們顯示數字2和2,并且告訴它答案是4,然后我們顯示數字3和5,并且告訴它答案是8,它將開始決定如何做加法。

只要看了足夠多的例子,它就會發現,每當看到兩個數時,我們就希望結果是這些數之和。總和是系統預測的值。我們稱這種過程為訓練(training)。一旦對模型進行訓練,我們就可以使用它來查找新的數據,并告訴我們它對新輸入數據應該值多少的估計。如果我們展示它7和2,現在它依據對它已有的訓練, 可以告訴我們答案是9。該系統能夠通過從訓練數據中學到的知識來預測新數據的值。讓我們來看一個更復雜的例子。

假設你是一個有多年房產銷售經驗的房地產經紀人。因為你已經賣了很長時間的房子了,所以你可以隨便瞄一眼任意一套房子,便可估計這房子大概多少錢。你幾乎可以在不知不覺中做到這一點。例如,這個房子很寬敞,它位于一個很好的社區,它有一個很大的前院,從街上看起來很吸引人。基于這些因素,你可能會估計在當地市場價值450000美元。但現在你的房地產業務不斷增長,你不能自己管理所有的客戶。你決定招幾個小弟來幫你。

但是有一個問題,你的小弟沒有你的經驗,所以他們不知道如何給房子定價。為了幫助你的小弟,你想寫一個程序,可以根據你的房子的大小,是否學區房和最近類似房型成交價等等來估計房子的價值。我們可以用有監督的機器學習來做到這一點。首先,記錄下來三個月內這個地區成交的房子。對于每一棟房子,我們都會寫下房子的基本特征,比如臥室的數目,房子的大小和平方英尺,房子所在的社區,等等。但最重要的是,我們將把房子的最終銷售價格寫下來。

這是我們的訓練數據。為了構建我們的程序,我們將把訓練數據輸入到機器學習算法中,該算法將找出如何為每一個房子找到正確的估值。這就是有監督的機器學習。我們之所以稱之為學習,因為計算機正在學習如何根據我們所提供的價值來對房子的價格進行建模。我們說這是有監督的,因為我們給計算機正確的回答每個房子的價值。計算機所要做的就是計算輸入數據和最終價格之間的關系。

3. 建立一個簡單的房價估值程序

在深入研究更復雜的機器學習算法之前,讓我們構建一個最簡單的程序,根據它的屬性來估計一個房子的價值。打開simple_value_estimator.py。在這里我們有一個功能叫做estimate_home_value。這個函數的目的是根據屬性來估計一個房子的價格。這個函數包含兩個屬性來描述一個房子的大小,房子的平方英尺和臥室的數量。在函數的結尾處返回該房屋的預測值。要預測房子的價值,我們所要做的就是決定房子的大小和臥室的數量對房子的最終價值有多大的影響。

def estimate_home_value(size_in_sqft, number_of_bedrooms):# Assume all homes are worth at least $50,000value = 50000# Adjust the value estimate based on the size of the housevalue = value + (size_in_sqft * 92)# Adjust the value estimate based on the number of bedroomsvalue = value + (number_of_bedrooms * 10000)return value# Estimate the value of our house:# - 5 bedrooms# - 3800 sq ft# Actual value: $450,000value = estimate_home_value(3800, 5)print("Estimated valued:")print(value)

讓我們先假設任何一個房子,不管多么小,至少值50000美元,所以我們可以從初始值估計50000美元開始。下一步,我們必須決定房子的大小對最終價值有多大影響。我猜每平方英尺值92美元,所以我們可以說現在的值是平方英尺乘以92。接下來,讓我們看看臥室。似乎有理由認為擁有更多臥室的房子比臥室少的房子更有價值。

對于每一個臥室,我要加上,比如說,10000美元的附加值。我們會說這個值是現在的值加上臥室的10000倍。最后,讓我們試試這個函數,在真正的房子上試試,我們知道它的價格是450000美元。我們將在這里走過3800平方英尺和五個臥室。我們可以通過右擊和選擇運行來運行這個文件。值得一提的是,還有一個用于運行文件的鍵盤快捷方式,但在系統上可能會有所不同。對mac來說是 control+ Shift + F10。

它將打開控制臺,并顯示我們程序的輸出。我們的計劃預測這房子價值449000美元。這真的接近我們預期的450000美元的價值。我們的估計工作得很好。在這個例子中,我們所做的就是取每一個輸入值并乘以一個固定的權值。平方英尺的權重是92,臥室的權重是10000。

換句話說,我們說房子的真正價值是它的大小和臥室的數量的組合。權重告訴我們這些因素在最終計算中有多少。用一組固定的權值建模某物價值的過程稱為線性回歸。它是最簡單的機器學習算法之一,但隨著機器學習的發展,計算機通過查找訓練數據自動生成權值。接下來,我們將學習讓計算機如何能自己找到最佳的權重。

4. 自動找到最佳權重

上一節我們寫了一個程序,通過將每一個屬性乘以一個固定的權值來估計一個房子的價值,然后把它們加起來得到總的價值。我們寫的函數和這個等式的數學完全相同。房子的價值=50000+(總平方英尺X第一個權重)+(臥室個數X第二個權重)。

但是我們如何知道每一個權值使用什么值,這樣函數所產生的預測是不是準確的呢?訣竅在于將權重轉換成計算機可以自己解決的優化問題。當我們訓練機器學習算法時,我們要求它在訓練數據集中找到最接近答案的最佳權重。

首先,我們需要一些訓練數據。這是我們三個房子的數據,我們可以用它來訓練我們的算法。

對于每一個房子,我們有臥室的數目,面積平方英尺,和家庭的實際價值。讓我們為這三所已知的房子寫出我們的房價等式。我只是從訓練數據中替換了所有已知的值。每個方程中唯一未知的值是兩個權值。我們的目標盡可能在所有這些方程里找到兩個權重值。我們必須從某處開始。首先,讓我們為每個權重選擇完全隨機猜測。

我們將兩者定為10。現在我們將通過評估每一個方程來看看效果如何。讓我們用10代替每一個重量,然后評估每一個方程來得到我們的初始價格估計。看看每一棟房子的實際價格,與我們計算的相比,我們可以看到我們的估算與這些權重相當遙遠。讓我們量化一下目前的估計是多么糟糕。讓我們從房子的實際價格中減去對每個房子的預測,然后把它們全部加起來。現在,讓我們把方程中的每個項平方。每個房子的誤差平方值較大。

我們寧愿每個房子的估計都有一點小的誤差,而不是某個房子誤差太大。最后,讓我們將整個數據與數據集中的房屋數分開。我們有三所房子,所以我們分三套。它給我們數據集中單個房子的平均平方誤差。按照慣例,我們將把這個錯誤計算稱為成本函數。它告訴我們當前的權重是錯的多離譜,換句話說,就是當前模型的總成本。我們的目標是找到在我們的數據集中最小化所有房屋成本的權重。如果我們可以使成本等于零,那么我們的預測算法就是完美的。

成本函數的價值越高,我們的預測就錯的越離譜。讓我們以更一般的方式重寫完全相同的成本等式。

這個等式是說總成本是每一個猜測和每個房子的實際值之間的平方差之和。然后整以房子的數目。現在我們有一個優化的成本函數,我們可以使用一個標準的數學優化算法來尋找函數的最小值。一個非常常見的優化算法可以用來解決這個問題:梯度下降(Gradient descent )。

梯度下降(Gradient descent )是一種迭代優化算法,我們可以用它來找到最佳的權重。它的工作原理是在一個方向上微調每一個重量,使成本下降。以下是它的工作原理。首先,我們通過成本函數和隨機起始權值來進行梯度下降。然后,通過反復調整權重,將權重值梯度下降成千上萬次直到0,從而使成本函數盡可能接近零。最后,當梯度下降到成本無法下降時,將返回它找到的最佳權重。

在我們的例子中,它會返回92.1和10001。讓我們用梯度下降的權重再重新計算房價。分92.1和10001作為我們的權重。現在讓我們計算一下我們的系統對每個房子價格的預測。我們可以看到這三個預測看起來都很好。

它們都不是完美的,它們都非常接近各自房子的實際價值。讓我們回顧一下我們如何為簡單房價估值找到最佳的權重。

首先,我們創建了一個方程來模擬問題,估算一套房子的價值。

第二,我們創建了成本函數來量化模型中的錯誤。最后,我們使用梯度下降優化算法找到模型參數,盡量減少成本函數。

我們將在本課程中使用的機器學習庫將為我們處理所有這些計算,包括運行梯度下降。但是對幕后發生的事情有個基本的想法是很重要的,這樣你就可以更好地理解什么樣的問題可以用機器學習來解決

5. 使用酷酷滴價值預測程序

價值預測是一個非常有用的技術,因為我們可以用它來解決很多不同種類的問題。在這個過程中,我們的項目是建立一個系統,可以預測房子的價值,根據它的屬性。但是只要你有訓練數據,你就可以用完全相同的技術來評估任何產品。例如,我們可以建立一個系統,可以根據它的屬性,比如它的年份,它的狀況,顏色和里程來估計二手車的價值。或者我們可以建立一個系統,根據手機的特點和類似手機的過去銷售情況來評估我們想轉售的二手手機的價值。還有就是可以預測詐騙。

當你在網上買東西或使用信用卡時,你支付的時候很可能要經過欺詐檢測算法的檢測。在這種情況下,該模型使用您購買的細節來決定您的這次支付是不是可能是欺詐的。如果該模型返回高欺詐的可能性,支付將被阻止。同樣,價值預測被用來模擬控制發放住房貸款的風險。在這種情況下,輸入是關于借款人的詳細信息,輸出是貸款償還的可能性。這有助于銀行決定哪些貸款值得冒風險。但價值預測并不局限于金融交易。

例如,你可以建立一個模型,其中輸入是電影評論中出現的詞,輸出是評論的正或負。這叫做情緒檢測。它允許計算機查看一個人寫的一段文字,并猜測人類是否正在寫一個正面或負面的評論。

醫學領域的價值預測也有許多用途。機器學習模型經常被用來幫助醫生閱讀X射線和其他類型的醫學圖像。這些模型有時比磚家更可靠。人工智能研究人員甚至預測在五年內,計算機解析x光片將比放射科醫師更牛逼可靠。

值預測算法非常有用,因為很多問題可以被建模為價值預測問題。如果輸入的算法是一張帶攝像機的圖片,輸出是轉動方向盤的角度和按下油門踏板的量---- 吶, 你小子剛剛創建了一個簡單的自動駕駛模型!

學習如何將問題建模為一個價值預測問題是一項非常有用的技能。一旦你確定了輸入和輸出,你通常可以用機器學習來建立一個解決方案。

今天內容有點多哈, 但全是知識點啊朋友們, 認真點哦. 我先洗洗睡了

如有錯誤請高手指正.

你的 關注-收藏-轉發 是我繼續分享的動力!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容