想了解機器學習?這 3 種算法你必須要知道
假設有一些數據相關的問題亟待你解決。在此之前你聽說過機器學習算法可以幫助解決這些問題,于是你想借此機會嘗試一番,卻苦于在此領域沒有任何經驗或知識。 你開始谷歌一些術語,如“機器學習模型”和“機器學習方法論”,但一段時間后,你發現自己完全迷失在了不同算法之間,于是你準備放棄。
朋友,請堅持下去!
幸運的是,在這篇文章中我將介紹三大類的機器學習算法,針對大范圍的數據科學問題,相信你都能滿懷自信去解決。
在接下來的文章中,我們將討論決策樹、聚類算法和回歸,指出它們之間的差異,并找出如何為你的案例選擇最合適的模型。
有監督的學習 vs. 無監督的學習
理解機器學習的基礎,就是要學會對有監督的學習和無監督的學習進行分類,因為機器學習中的任何一個問題,都屬于這兩大類的范疇。
在有監督學習的情況下,我們有一個數據集,它們將作為輸入提供給一些算法。但前提是,我們已經知道正確輸出的格式應該是什么樣子(假設輸入和輸出之間存在一些關系)。
我們隨后將看到的回歸和分類問題都屬于這個類別。
另一方面,在我們不知道輸出應該是什么樣子的情況下,就應該使用無監督學習。事實上,我們需要從輸入變量的影響未知的數據中推導出正確的結構。聚類問題是這個類別的主要代表。
為了使上面的分類更清晰,我會列舉一些實際的問題,并試著對它們進行相應的分類。
示例一
假設你在經營一家房地產公司。考慮到新房子的特性,你要根據你以前記錄的其他房屋的銷售量來預測它的售價是多少。你輸入的數據集包括多個房子的特性,比如衛生間的數量和大小等,而你想預測的變量(通常稱為“目標變量”)就是價格。預測房屋的售價是一個有監督學習問題,更確切地說,是回歸問題。
示例二
假設一個醫學實驗的目的是預測一個人是否會因為一些體質測量和遺傳導致近視程度加深。在這種情況下,輸入的數據集是這個人的體質特征,而目標變量有兩種:
1 表示可能加深近視,而 0 表示不太可能。預測一個人是否會加深近視也是一個有監督學習問題,更確切地說,是分類問題。
假設你的公司擁有很多客戶。根據他們最近與貴公司的互動情況、他們近期購買的產品以及他們的人口統計數據,你想要形成相似顧客的群體,以便以不同的方式應對他們 - 例如向他們中的一些人提供獨家折扣券。在這種情況下,你將使用上述提及的特征作為算法的輸入,而算法將決定應該形成的組的數量或類別。這顯然是一個無監督學習的例子,因為我們沒有任何關于輸出會如何的線索,完全不知道結果會怎樣。
接下來,我將介紹一些更具體的算法......
首先,回歸不是一個單一的監督學習技術,而是一個很多技術所屬的完整類別。
回歸的主要思想是給定一些輸入變量,我們要預測目標值。在回歸的情況下,目標變量是連續的 - 這意味著它可以在指定的范圍內取任何值。另一方面,輸入變量可以是離散的也可以是連續的。
在回歸技術中,最流行的是線性回歸和邏輯回歸。讓我們仔細研究一下。
線性回歸
在線性回歸中,我們嘗試在輸入變量和目標變量之間構建一段關系,并將這種關系用條直線表示,我們通常將其稱為回歸線。
例如,假設我們有兩個輸入變量 X1 和 X2,還有一個目標變量 Y,它們的關系可以用數學公式表示如下:
Y = a * X1 + b*X2 +c
假設 X1 和 X2 的值已知,我們需要將 a,b 和 c 進行調整,從而使 Y 能盡可能的接近真實值。
舉個例子!
假設我們擁有著名的 Iris 數據集 ,它提供了一些方法,能通過花朵的花萼大小以及花瓣大小判斷花朵的類別,如: Setosa,Versicolor 和 Virginica。
使用 R 軟件,假設 花瓣的寬度和長度已給定, 我們將實施線性回歸來預測萼片的長度。
在數學上,我們會通過以下公式來獲取 a、b 值:
SepalLength = a * PetalWidth + b* PetalLength +c
相應的代碼如下所示:
# Load required packages library(ggplot2) # Load iris dataset data(iris) # Have a look at the first 10 observations of the dataset head(iris) # Fit the regression line fitted_model <- lm(Sepal.Length ~ Petal.Width + Petal.Length, data = iris) # Get details about the parameters of the selected model summary(fitted_model) # Plot the data points along with the regression line ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + geom_point(alpha = 6/10) + stat_smooth(method = "lm", fill="blue", colour="grey50", size=0.5, alpha = 0.1)
線性回歸的結果顯示在下列圖表中,其中黑點表示初始數據點,藍線表示擬合回歸直線,由此得出估算值:a= -0.31955,b = 0.54178 和 c = 4.19058,這個結果可能最接近實際值,即花萼的真實長度。
接下來,只要將花瓣長度和花瓣寬度的值應用到定義的線性關系中,就可以對花萼長度進行預測了。
邏輯回歸
主要思想與線性回歸完全相同。不同點是邏輯回歸的回歸線不再是直的。
我們要建立的數學關系是以下形式的:
Y=g(a*X1+b*X2)
g() 是一個對數函數。
根據該邏輯函數的性質,Y 是連續的,范圍是 [0,1],可以被解釋為一個事件發生的概率。
再舉個例子!
這一次我們研究 mtcars 數據集,包含 1973-1974 年間 32 種汽車制造的汽車設計、十個性能指標以及油耗。
使用 R,我們將在測量 V/S 和每英里油耗的基礎上預測汽車的變速器是自動(AM = 0)還是手動(AM = 1)的概率。
am = g(a * mpg + b* vs +c):
# Load required packages library(ggplot2) # Load data data(mtcars) # Keep a subset of the data features that includes on the measurement we are interested in cars <- subset(mtcars, select=c(mpg, am, vs)) # Fit the logistic regression line fitted_model <- glm(am ~ mpg+vs, data=cars, family=binomial(link="logit")) # Plot the results ggplot(cars, aes(x=mpg, y=vs, colour = am)) + geom_point(alpha = 6/10) + stat_smooth(method="glm",fill="blue", colour="grey50", size=0.5, alpha = 0.1, method.args=list(family="binomial"))
如下圖所示,其中黑點代表數據集的初始點,藍線代表閉合的對數回歸線。估計 a = 0.5359,b = -2.7957,c = - 9.9183
我們可以觀察到,和線性回歸一樣,對數回歸的輸出值回歸線也在區間 [0,1] 內。
對于任何新汽車的測量 V/S 和每英里油耗,我們可以預測這輛汽車將使用自動變速器。這是不是準確得嚇人?
決策樹是我們要研究的第二種機器學習算法。它們被分成回歸樹和分類樹,因此可以用于監督式學習問題。
無可否認,決策樹是最直觀的算法之一,因為它們模仿人們在多數情況下的決策方式。他們基本上做的是在每種情況下繪制所有可能路徑的“地圖”,并給出相應的結果。
圖形表示有助于更好地理解我們正在探討的內容。
基于像上面這樣的樹,該算法可以根據相應標準中的值來決定在每個步驟要采用的路徑。算法所選擇的劃分標準以及每個級別的相應閾值的策略,取決于候選變量對于目標變量的信息量多少,以及哪個設置可以最小化所產生的預測誤差。
來自:https://www.oschina.net/translate/3-machine-learning-algorithms-you-need-to-know