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

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

人工智能 機(jī)器學(xué)習(xí) 算法
假設(shè)有一些跟數(shù)據(jù)相關(guān)的難題需要你去解決。之前你已經(jīng)聽過機(jī)器學(xué)習(xí)算法的厲害之處了,因此你自己也想借此機(jī)會(huì)嘗試一番,但是你在這個(gè)領(lǐng)域并沒有經(jīng)驗(yàn)或知識(shí)。于是你開始用谷歌搜索一些術(shù)語,比如“機(jī)器學(xué)習(xí)模型”和“機(jī)器學(xué)習(xí)方法”,但一段時(shí)間后,你發(fā)現(xiàn)自己在不同算法之間已經(jīng)完全迷失了......

假設(shè)有一些跟數(shù)據(jù)相關(guān)的難題需要你去解決。之前你已經(jīng)聽過機(jī)器學(xué)習(xí)算法的厲害之處了,因此你自己也想借此機(jī)會(huì)嘗試一番——但是你在這個(gè)領(lǐng)域并沒有經(jīng)驗(yàn)或知識(shí)。于是你開始用谷歌搜索一些術(shù)語,比如“機(jī)器學(xué)習(xí)模型”和“機(jī)器學(xué)習(xí)方法”,但一段時(shí)間后,你發(fā)現(xiàn)自己在不同算法之間已經(jīng)完全迷失了,所以便開始放棄了。

堅(jiān)持才能勝利!

幸運(yùn)的是,我將在本文介紹三個(gè)主要的機(jī)器學(xué)習(xí)算法,了解了這些內(nèi)容后,我相信針對(duì)于大多數(shù)的數(shù)據(jù)科學(xué)難題,你都可以滿懷自信去解決。

在下面的文章中,我們將討論決策樹、聚類算法和回歸,指出它們之間的差異,并找出如何根據(jù)不同的案例選擇最合適的模型。

有監(jiān)督學(xué)習(xí) VS 無監(jiān)督學(xué)習(xí)

理解機(jī)器學(xué)習(xí)的基礎(chǔ)就是如何對(duì)有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)這兩個(gè)大類進(jìn)行分類的問題,因?yàn)闄C(jī)器學(xué)習(xí)問題中的任何一個(gè)問題最終都是這兩個(gè)大類中的某一個(gè)。

在有監(jiān)督學(xué)習(xí)的情況下,我們有數(shù)據(jù)集,某些算法會(huì)將這些數(shù)據(jù)集作為輸入。前提是我們已經(jīng)知道正確的輸出格式應(yīng)該是什么樣子(假設(shè)輸入和輸出之間存在某種關(guān)系)。

稍后我們看到的回歸和分類問題都是屬于這一類。

另一方面,無監(jiān)督學(xué)習(xí)適用于我們不確定或者不知道正確的輸出應(yīng)該是什么樣子的情況。事實(shí)上,我們需要根據(jù)數(shù)據(jù)推導(dǎo)出正確的結(jié)構(gòu)應(yīng)該是什么樣。聚類問題是該類的主要代表。

為了使上述分類更加清晰,我將列舉一些現(xiàn)實(shí)世界的問題,并嘗試對(duì)它們進(jìn)行相應(yīng)的分類。

實(shí)例1

假設(shè)你在經(jīng)營一家房地產(chǎn)公司??紤]到新房子的特點(diǎn),你想基于之前記錄的其他房子的銷售情況,從而預(yù)測這間房屋的銷售價(jià)格應(yīng)該在什么價(jià)位。輸入的數(shù)據(jù)集包含多個(gè)房子的特征,比如浴室的數(shù)量和大小,而你想要預(yù)測的變量,通常稱為目標(biāo)變量,在本例子中也就是價(jià)格。因?yàn)橐呀?jīng)知道了數(shù)據(jù)集中房子的出售價(jià)格,因此這是一個(gè)有監(jiān)督學(xué)習(xí)的問題,說的更具體一點(diǎn),這是一個(gè)關(guān)于回歸的問題。

實(shí)例2

假設(shè)你做了一項(xiàng)實(shí)驗(yàn),根據(jù)某些物理測量結(jié)果以及遺傳因素,來推斷某人是否會(huì)發(fā)展成為近視眼。在這種情況下,輸入的數(shù)據(jù)集是由人體醫(yī)學(xué)特征組成的,目標(biāo)變量是雙重的:1表示那些可能發(fā)展近視的人,0表示沒有成為近視眼的人。由于已經(jīng)提前知道了參與實(shí)驗(yàn)者的目標(biāo)變量的值(即你已經(jīng)知道如果他們是否是近視),這又是一個(gè)有監(jiān)督學(xué)習(xí)的問題——更具體地說,這是一個(gè)分類的問題。

實(shí)例3

假設(shè)你負(fù)責(zé)的公司有很多的客戶。根據(jù)他們最近與公司的互動(dòng)結(jié)果,最近購買的產(chǎn)品,以及他們的人口統(tǒng)計(jì)資料,你想要把相似的客戶組成一個(gè)群體,以不同的方式來對(duì)待他們——比如給他們提供獨(dú)家折扣券。在這種情況下,將會(huì)使用上面提到的某些特性作為算法的輸入,而算法將決定應(yīng)該客戶群的數(shù)量或類型。這是無監(jiān)督學(xué)習(xí)最典型的一個(gè)例子,因?yàn)槲覀兪孪雀揪筒恢垒敵鼋Y(jié)果應(yīng)該是怎樣的。

話雖如此,現(xiàn)在是實(shí)現(xiàn)我的承諾的時(shí)候了,來介紹一些更具體的算法……

回歸

首先,回歸不是單一的有監(jiān)督學(xué)習(xí)的技術(shù),而是許多技術(shù)所屬的整個(gè)類別。

回歸的主要思想是給定一些輸入變量,我們想要預(yù)測目標(biāo)變量的值是什么樣的。在回歸的情況下,目標(biāo)變量是連續(xù)的——這意味著它可以在指定范圍內(nèi)取任意的值。另一方面,輸入變量既可以是離散的,也可以是連續(xù)的。

在回歸技術(shù)中,最廣為人知的就是線性回歸和邏輯回歸了。讓我們仔細(xì)研究研究。

線性回歸

在線性回歸中,我們?cè)噲D建立輸入變量與目標(biāo)變量之間的關(guān)系,這種關(guān)系是由一條直線表示的,通常稱為回歸線。

例如,假設(shè)我們有兩個(gè)輸入變量X1和X2以及一個(gè)目標(biāo)變量Y,這種關(guān)系可以用數(shù)學(xué)形式表示:

  1. Y = a * X1 + b*X2 +c 

假設(shè)已經(jīng)提供了X1和X2的值,我們的目標(biāo)是對(duì)a、b、c三個(gè)參數(shù)進(jìn)行調(diào)整,從而使Y盡可能接近實(shí)際值。

花點(diǎn)時(shí)間講個(gè)例子吧!

假設(shè)我們已經(jīng)有了Iris數(shù)據(jù)集,它已經(jīng)包含了不同類型的花朵的萼片和花瓣的大小數(shù)據(jù),例如:Setosa,Versicolor和Virginica。

使用R軟件,假設(shè)已經(jīng)提供了花瓣的寬度和長度,我們需要實(shí)現(xiàn)一個(gè)線性回歸來預(yù)測萼片的長度。

在數(shù)學(xué)上,我們將通過如下關(guān)系是獲取a、b的值:

  1. SepalLength = a * PetalWidth + b* PetalLength +c 

相應(yīng)的代碼如下:

 

  1. Load required packages 
  2. library(ggplot2) 
  3. Load iris dataset 
  4. data(iris) 
  5. # Have a look at the first 10 observations of the dataset 
  6. head(iris) 
  7. # Fit the regression line 
  8. fitted_model <- lm(Sepal.Length ~ Petal.Width + Petal.Length, data = iris) 
  9. # Get details about the parameters of the selected model 
  10. summary(fitted_model) 
  11. # Plot the data points along with the regression line 
  12. ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + 
  13. geom_point(alpha = 6/10) + 
  14. stat_smooth(method = "lm", fill="blue", colour="grey50"size=0.5, alpha = 0.1) 

線性回歸的結(jié)果如下圖所示,黑點(diǎn)表示初始數(shù)據(jù)點(diǎn)在藍(lán)線擬合回歸直線,于是便有了估算結(jié)果,a= -0.31955,b = 0.54178,和c = 4.19058,這個(gè)結(jié)果可能最接近實(shí)際情況,即花萼的長度。

從現(xiàn)在開始,通過將花瓣長度和花瓣寬度的值應(yīng)用到定義的線性關(guān)系中來,新出現(xiàn)的數(shù)據(jù)點(diǎn)我們也可以預(yù)測它的長度了。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

邏輯回歸

這里的主要思想和線性回歸完全一樣。最大的不同就是回歸線不再是直的的。

相反,我們?cè)噲D建立的數(shù)學(xué)關(guān)系是類似于以下形式:

  1. Y=g(a*X1+b*X2) 

這里的g()就是邏輯函數(shù)。

由于logistic函數(shù)的性質(zhì),Y是連續(xù)的,在[0,1]范圍內(nèi),可以理解為事件發(fā)生的概率。

我知道你喜歡例子,所以我再給你看一個(gè)!

這次,我們將對(duì)mtcars數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),該數(shù)據(jù)集包括燃料消耗和汽車設(shè)計(jì)的10個(gè)方面,以及1973 - 1974年生產(chǎn)的32輛汽車的性能。

使用R,我們將根據(jù)V/S和Miles/(US)加侖的測量值,預(yù)測自動(dòng)變速器(am = 0)或手動(dòng)(am = 1)汽車的概率。

am = g(a * mpg + b* vs +c):

 

  1. Load required packages 
  2. library(ggplot2) 
  3. Load data 
  4. data(mtcars) 
  5. # Keep a subset of the data features that includes on the measurement we are interested in 
  6. cars <- subset(mtcars, select=c(mpg, am, vs)) 
  7. # Fit the logistic regression line 
  8. fitted_model <- glm(am ~ mpg+vs, data=cars, family=binomial(link="logit")) 
  9. # Plot the results 
  10. ggplot(cars, aes(x=mpg, y=vs, colour = am)) + geom_point(alpha = 6/10) + 
  11. stat_smooth(method="glm",fill="blue", colour="grey50"size=0.5, alpha = 0.1, method.args=list(family="binomial")) 

結(jié)果如下圖所示,其中黑點(diǎn)代表數(shù)據(jù)集的初始點(diǎn),藍(lán)色線代表a = 0.5359,b = - 2.7957,c = - 9.9183的擬合邏輯回歸線。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

正如前面所提到的,我們可以觀察到由于回歸線的形式,logistic回歸輸出值只在范圍[0,1]中。

對(duì)于任何以V/S和Miles/(US)加侖為標(biāo)準(zhǔn)的新車,我們現(xiàn)在可以預(yù)測這輛車自動(dòng)變速器的概率。

決策樹

決策樹是我們將要研究的第二種機(jī)器學(xué)習(xí)算法。決策樹最終分裂成了回歸和分類樹,因此可以用于有監(jiān)督學(xué)習(xí)問題。

誠然,決策樹是最直觀的算法之一,它們可以模仿人們?cè)诖蠖鄶?shù)情況下的決定方式。他們所做的基本上就是繪制出所有可能路徑的“地圖”,并在每種情況下畫出相應(yīng)的結(jié)果。

圖形表示將有助于更好地理解我們正在討論的內(nèi)容。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

基于這樣一棵樹,算法可以根據(jù)相應(yīng)的標(biāo)準(zhǔn)值決定在每個(gè)步驟中遵循哪條路徑。算法選擇分割標(biāo)準(zhǔn)的方式和每個(gè)級(jí)別的相應(yīng)閾值,取決于候選變量對(duì)目標(biāo)變量的信息量,以及哪個(gè)設(shè)置最小化了所產(chǎn)生的預(yù)測錯(cuò)誤。

這里還有一個(gè)例子!

這一次討論的數(shù)據(jù)集是readingSkills。它包括了學(xué)生的考試成績和分?jǐn)?shù)。

我們將基于多種指標(biāo)把學(xué)生分為母語為英語的人(nativeSpeaker = 1)或外國人(nativeSpeaker = 0),包括他們?cè)跍y試中的得分,他們的鞋碼,以及他們的年齡。

對(duì)于R中的實(shí)現(xiàn),我們首先需要安裝party包。

 

  1. # Include required packages 
  2. library(party) 
  3. library(partykit) 
  4. # Have a look at the first ten observations of the dataset 
  5. print(head(readingSkills)) 
  6. input.dat <- readingSkills[c(1:105),] 
  7. # Grow the decision tree 
  8. output.tree <- ctree( 
  9. nativeSpeaker ~ age + shoeSize + score, 
  10. data = input.dat) 
  11. # Plot the results 
  12. plot(as.simpleparty(output.tree)) 

我們可以看到,使用的第一個(gè)分裂標(biāo)準(zhǔn)是分?jǐn)?shù),因?yàn)樗陬A(yù)測目標(biāo)變量時(shí)非常重要,而鞋子的大小并沒有被考慮在內(nèi),因?yàn)樗鼪]有提供任何關(guān)于語言的有用信息。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

現(xiàn)在,如果我們有了一個(gè)新學(xué)生,知道他們的年齡和分?jǐn)?shù),我們就可以預(yù)測他們是不是一個(gè)以英語為母語的人!

聚類算法

到目前為止,我們只討論了一些關(guān)于有監(jiān)督學(xué)習(xí)的問題?,F(xiàn)在,我們繼續(xù)研究聚類算法,而它則是無監(jiān)督學(xué)習(xí)方法的子集。

所以,只是稍微修改了一點(diǎn)…

對(duì)于集群,如果有一些初始數(shù)據(jù)進(jìn)行支配,我們想要形成一個(gè)組,這樣一些組的數(shù)據(jù)點(diǎn)是相似的,并且不同于其他組的數(shù)據(jù)點(diǎn)。

我們將要學(xué)習(xí)的算法叫做k-means,k表示產(chǎn)生的簇的數(shù)量,這是最流行的聚類方法之一。

還記得我們之前用過的Iris數(shù)據(jù)集嗎?我們將再次使用它。

為了研究,我們用他們的花瓣測量方法繪制了數(shù)據(jù)集的所有數(shù)據(jù)點(diǎn),如下圖所示:

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

基于花瓣的度量值,我們將使用3-means clustering方法將數(shù)據(jù)點(diǎn)聚集成3組。

那么3-means,或者說是k-means算法是如何工作的呢?整個(gè)過程可以用幾個(gè)簡單的步驟來概括:

  1. 初始化步驟:對(duì)于k = 3簇,算法隨機(jī)選取3個(gè)點(diǎn)作為每個(gè)集群的中心點(diǎn)。
  2. 集群分配步驟:算法通過其余的數(shù)據(jù)點(diǎn),并將每個(gè)數(shù)據(jù)點(diǎn)分配給最近的集群。
  3. Centroid移動(dòng)步驟:在集群分配之后,每個(gè)集群的中心點(diǎn)移動(dòng)到屬于集群的所有點(diǎn)的平均值。

步驟2和步驟3重復(fù)多次,直到對(duì)集群分配沒有更改。R中k-means算法的實(shí)現(xiàn)很簡單,可以用以下代碼實(shí)現(xiàn):

 

  1. Load required packages 
  2. library(ggplot2) 
  3. library(datasets) 
  4. Load data 
  5. data(iris) 
  6. Set seed to make results reproducible 
  7. set.seed(20) 
  8. # Implement k-means with 3 clusters 
  9. iris_cl <- kmeans(iris[, 3:4], 3, nstart = 20) 
  10. iris_cl$cluster <- as.factor(iris_cl$cluster) 
  11. # Plot points colored by predicted cluster 
  12. ggplot(iris, aes(Petal.Length, Petal.Width, color = iris_cl$cluster)) + geom_point() 

從結(jié)果中可以看出,該算法將數(shù)據(jù)分成三組,分別用三種不同的顏色表示。我們也可以觀察到這些簇是根據(jù)花瓣的大小形成的。更具體地說,紅色表示花瓣小的花,綠色表示花瓣相對(duì)較大的蝴蝶花,而藍(lán)色則表示中等大小的花瓣。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

值得注意的是,在任何聚類中,對(duì)形成群體的解釋都需要在該領(lǐng)域有一些專家知識(shí)。在我們的例子中,如果你不是一個(gè)植物學(xué)家,你可能不會(huì)意識(shí)到k - means所做的是把iris聚集到他們不同的類型,例如Setosa,Versicolor和Virginica,而沒有任何關(guān)于它們的知識(shí)!

因此,如果我們?cè)俅卫L制數(shù)據(jù),這個(gè)時(shí)間被它們的物種著色,我們將看到集群中的相似性。

每個(gè)人都應(yīng)該知道的3種機(jī)器學(xué)習(xí)算法

總結(jié)

我們從一開始就走了很長一段路。我們討論了回歸(線性和邏輯)和決策樹,最后討論了k - means集群。我們還在R中實(shí)現(xiàn)了一些簡單但強(qiáng)大的方法。

那么,每種算法的優(yōu)點(diǎn)是什么呢?在現(xiàn)實(shí)生活中,你應(yīng)該選擇哪一個(gè)?

  • 首先,所呈現(xiàn)的方法并不是一些不適用的算法——它們?cè)谑澜绺鞯氐纳a(chǎn)系統(tǒng)中被廣泛使用,因此需要根據(jù)不同的任務(wù)進(jìn)行選擇,選擇恰當(dāng)?shù)脑捒梢宰兊孟喈?dāng)強(qiáng)大。
  • 其次,為了回答上述問題,你必須清楚你所說的優(yōu)點(diǎn)究竟是什么意思,因?yàn)槊糠N方法在不同環(huán)境中展現(xiàn)出來的優(yōu)點(diǎn)是不同的,例如解釋性、穩(wěn)健性、計(jì)算時(shí)間等。

現(xiàn)在,我們終于可以自信地將這些知識(shí)應(yīng)用于一些實(shí)際的問題了!

責(zé)任編輯:未麗燕 來源: 網(wǎng)絡(luò)大數(shù)據(jù)
相關(guān)推薦

2023-03-21 18:46:53

2017-10-24 14:21:30

機(jī)器學(xué)習(xí)人工智能算法

2018-01-23 08:42:34

2020-07-10 13:59:52

Kaggle代碼數(shù)據(jù)

2017-07-20 01:59:19

大數(shù)據(jù)算法數(shù)據(jù)

2021-05-20 13:38:36

Linux 系統(tǒng) 數(shù)據(jù)

2015-09-01 09:55:47

函數(shù)式編程

2018-03-27 23:15:11

2023-08-08 07:00:24

大數(shù)據(jù)業(yè)務(wù)流程

2023-01-16 19:07:56

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

2023-11-02 14:21:06

2012-05-25 09:48:01

編程程序員

2017-04-05 12:04:17

python函數(shù)

2020-01-14 08:28:50

Linux命令程序

2014-03-07 14:20:30

2012-02-28 10:52:13

2018-03-07 12:57:53

2023-01-31 15:43:47

2022-11-25 08:16:07

2018-05-03 08:45:58

Linux命令
點(diǎn)贊
收藏

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