文科生都能看懂的機器學習教程:梯度下降、線性回歸、邏輯回歸

2021-01-11 新智元

【新智元導讀】雖然在Coursera、MIT、UC伯克利上有很多機器學習的課程,包括吳恩達等專家課程已非常經典,但都是面向有一定理科背景的專業人士。本文試圖將機器學習這本深奧的課程,以更加淺顯易懂的方式講出來,讓沒有理科背景的讀者都能看懂。

把複雜的東西簡單化,讓非專業人士也能短時間內理解,並露出恍然大悟的表情,是一項非常厲害的技能。

舉個例子。你正在應聘機器學習工程師,面對的是文科出身的HR,如果能在最短時間內讓她了解你的專業能力,就能極大地提升面試成功率。

現在,機器學習這麼火,想入行的人越來越多,然而被搞糊塗的人也越來越多。因為大眾很難理解機器學習是幹嗎的?那些神秘拗口的概念,比如邏輯回歸、梯度下降到底是什麼?j

一個23歲的藥物學專業的學生說,當他去參加機器學習培訓課程的時候,感覺自己就家裡那位不懂現代科技的奶奶。

於是一名叫Audrey Lorberfeld的畢業生,試圖將大眾與機器學習之間的鴻溝,親手填補上。於是有了這個系列文章。

本系列第一講:梯度下降、線性回歸和邏輯回歸。

算法 vs 模型

在理解開始了解機器學習之前,我們需要先搞懂兩個基礎概念:算法和模型。

我們可以把模型看做是一個自動售貨機,輸入(錢),輸出(可樂)。算法是用來訓練這個模型的,

模型根據給定的輸入,做出對應的決策獲得預期輸出。例如,一個算法根據投入的金額,可樂的單價,判斷錢夠不夠,如果多了該找多少錢。

總而言之,算法是模型背後的數學生命力。沒有模型,算法只是一個數學方程式。模型的不同,取決於用的算法的不同。

梯度下降/最佳擬合線

(雖然這個傳統上並不被認為是一種機器學習算法,但理解梯度對於了解有多少機器學習算法可用,及如何優化至關重要。)梯度下降幫助我們根據一些數據,獲得最準確的預測。

舉個例子。你有一個大的清單,列出每個你認識的人身高體重。然後做成下面這種分布圖:

圖上面的數字比較奇怪?不用在意這些細節。

現在,小區居委會要舉辦一個根據身高猜體重的比賽,贏的人發紅包。就用這張圖。你怎麼辦?

你可能會想在圖上畫一根線,這個線非常完美的給出了身高和體重的對應關係。

比如,根據這條完美線,身高1.5米的人體重基本在60斤左右。啊那麼,這根完美線是怎麼找出來呢?答:梯度下降。

我們先提一個概念叫RSS(the residual sum of squares)。RSS是點和線之間差異的平方和,這個值代表了點和線的距離有多遠。梯度下降就是找出RSS的最小值。

我們把每次為這根線找的不同參數進行可視化,就得到了一個叫做成本曲線的東西。這個曲線的地步,就是我們的RSS最小值。

Gradient Descent可視化(使用MatplotLib)

來自不可思議的數據科學家Bhavesh Bhatt

梯度下降還有其他的一些細分領域,比如「步長」和「學習率」(即我們想要採取什麼方向到底部的底部)。

總之,:我們通過梯度下降找到數據點和最佳擬合線之間最小的空間;而最佳你和線是我們做預測的直接依據。

線性回歸

線性回歸是分析一個變量與另外一個或多個變量(自變量)之間,關係強度的方法。

線性回歸的標誌,如名稱所暗示的那樣,即自變量與結果變量之間的關係是線性的,也就是說變量關係可以連城一條直線。

這看起來像我們上面做的!這是因為線性回歸中我們的「回歸線」之前的最佳實踐線。最佳擬合線顯示了我們的點之間最佳的線性關係。反過來,這使我們能夠做出預測。

關於線性回歸的另一個重點是,結果變量或「根據其他變量而變化的」變量(有點繞哈)總是連續的。但這意味著什麼?

假設我們想測量一下紐約州影響降雨的因素:結果變量就是降雨量,就是我們最關係的東西,而影響降水的自變量是海拔。

如果結果變量不是連續的,就可能出現在某個海拔,沒有結果變量,導致我們沒辦法做出預測。

反之,任意給定的海拔,我們都可以做出預測。這就是線性回歸最酷的地方!

嶺回歸與LASSO回歸

現在我們知道什麼是線性回歸,接下來還有更酷的,比如嶺回歸。在開始理解嶺回歸之前,我們先來了解正則化。

簡單地說,數據科學家使用正則化,確保模型只關注能夠對結果變量產生顯著影響的自變量。

但是那些對結果影響不顯著的自變量會被正則忽略嗎?當然不會!原因我們後面再展開細講。

原則上,我們創建這些模型,投餵數據,然後測試我們的模型是否足夠好。

如果不管自變量相關也好不相關都投餵進去,最後我們會發現模型在處理訓練數據的時候超棒;但是處理我們的測試數據就超爛。

這是因為我們的模型不夠靈活,面對新數據的時候就顯得有點不知所措了。這個時候我們稱之為「Overfit」過擬合。

接下來我們通過一個過長的例子,來體會一下過擬合。

比方說,你是一個新媽媽,你的寶寶喜歡吃麵條。幾個月來,你養成了一個在廚房餵食並開窗的習慣,因為你喜歡新鮮空氣。接著你的侄子給寶寶一個圍裙,這樣他吃東西就不會弄得滿身都是,然後你又養成了一個新的習慣:餵寶寶吃麵條的時候,必須穿上圍裙。隨後你又收養了一隻流浪狗,每次寶寶吃飯的時候狗就蹲在嬰兒椅旁邊,等著吃寶寶掉下來的麵條。作為一個新媽媽,你很自然的會認為,開著的窗戶+圍裙+嬰兒椅下面的狗,是讓你的寶寶能夠開心吃麵條的必備條件。直到有一天你回娘家過周末。當你發現廚房裡沒有窗戶你有點慌;然後你突然想起來走的匆忙圍裙也沒帶;最要命的是狗也交給鄰居照看了,天哪!你驚慌到手足無措以至於忘記給寶寶餵食,就直接把他放床上了。看,當你面對一個完全新的場景時你表現的很糟糕。而在家則完全是另外一種畫風了。經過重新設計模型,過濾掉所有的噪音(不相關的數據)後你發現,其實寶寶僅僅是喜歡你親手做的麵條。第二天,你就能坦然的在一個沒有窗戶的廚房裡,沒給寶寶穿圍裙,也沒有狗旁邊,開開心心的餵寶寶吃麵條了。

這就是機器學習的正則化所幹的事情:讓你的模型只關注有用的數據,忽略幹擾項。

在左邊:LASSO回歸(你可以看到紅色梯級表示的係數在穿過y軸時可以等於零)

在右邊:嶺回歸(你可以看到係數接近,但從不等於零,因為它們從不穿過y軸)

圖片來源:Prashant Gupta的「機器學習中的正規化」

在各種正規化的,有一些所謂的懲罰因子(希臘字母拉姆達:λ)。這個懲罰因子的作用是在數學計算中,縮小數據中的噪聲。

在嶺回歸中,有時稱為「L2回歸」,懲罰因子是變量係數的平方值之和。懲罰因子縮小了自變量的係數,但從來沒有完全消除它們。這意味著通過嶺回歸,您的模型中的噪聲將始終被您的模型考慮在內。

另一種正則化是LASSO或「L1」正則化。在LASSO正則化中,只需懲罰高係數特徵,而不是懲罰數據中的每個特徵。

此外,LASSO能夠將係數一直縮小到零。這基本上會從數據集中刪除這些特徵,因為它們的「權重」現在為零(即它們實際上是乘以零)。

通過LASSO回歸,模型有可能消除大部分噪聲在數據集中。這在某些情況下非常有用!

邏輯回歸

現在我們知道,線性回歸=某些變量對另一個變量的影響,並且有2個假設:結果變量是連續的;變量和結果變量之間的關係是線性的。

但如果結果變量不是連續的而是分類的呢?這個時候就用到邏輯回歸了。

分類變量只是屬於單個類別的變量。比如每一周都是周一到周日7個日子,那麼這個時候你就不能按照天數去做預測了。

每周的第一天都是星期一,周一發生的事情,就是發生在周一。沒毛病。

邏輯回歸模型只輸出數據點在一個或另一個類別中的概率,而不是常規數值。這也是邏輯回歸模型主要用於分類的原因。

在邏輯回歸的世界中,結果變量與自變量的對數概率(log-odds)具有線性關係。

比率(odds)

邏輯回歸的核心就是odds。舉個例子:

一個班裡有19個學生,其中女生6個,男生13個。假設女性通過考試的機率是5:1,而男性通過考試的機率是3:10。這意味著,在6名女性中,有5名可能通過測試,而13名男性中有3名可能通過測試。

那麼,odds和概率(probability)不一樣嗎?並不。

概率測量的是事件發生的次數與所有事情發生的總次數的比率,例如,投擲40次投幣10次是正面的概率是25%;odds測量事件發生的次數與事件的次數的比率,例如拋擲30次有10次是正面,odds指的是10次正面:30次反面。

這意味著雖然概率總是被限制在0-1的範圍內,但是odds可以從0連續增長到正無窮大!

這給我們的邏輯回歸模型帶來了問題,因為我們知道我們的預期輸出是概率(即0-1的數字)。

那麼,我們如何從odds到概率?

讓我們想一個分類問題,比如你最喜歡的足球隊和另一隻球隊比賽,贏了6場。你可能會說你的球隊失利的機率是1:6,或0.17。

而你的團隊獲勝的機率,因為他們是一支偉大的球隊,是6:1或6。如圖:

現在,你不希望你的模型預測你的球隊將在未來的比賽中取勝,只是因為他們過去獲勝的機率遠遠超過他們過去失敗的機率,對吧?

還有更多模型需要考慮的因素(可能是天氣,也許是首發球員等)!因此,為了使得odds的大小均勻分布或對稱,我們計算出一些稱為對數比率(log-odds)的東西。

log-odds

我們所謂的「正態分布」:經典的鐘形曲線!

Log-odds是自然對數odds的簡寫方式。當你採用某種東西的自然對數時,你基本上可以使它更正常分布。當我們製作更正常分布的東西時,我們基本上把它放在一個非常容易使用的尺度上。

當我們採用log-odds時,我們將odds的範圍從0正無窮大轉換為負無窮正無窮大。可以在上面的鐘形曲線上看到這一點。

即使我們仍然需要輸出在0-1之間,我們通過獲取log-odds實現的對稱性使我們比以前更接近我們想要的輸出!

Logit函數

「logit函數」只是我們為了得到log-odds而做的數學運算!

恐怖的不可描述的數學。呃,我的意思是logit函數。

logit函數,用圖表繪製

正如您在上面所看到的,logit函數通過取其自然對數將我們的odds設置為負無窮大到正無窮大。

Sigmoid函數

好的,但我們還沒有達到模型給我們概率的程度。現在,我們所有的數字都是負無窮大到正無窮大的數字。名叫:sigmoid函數。

sigmoid函數,以其繪製時呈現的s形狀命名,只是log-odds的倒數。通過得到log-odds的倒數,我們將我們的值從負無窮大正無窮大映射到0-1。反過來,讓我們得到概率,這正是我們想要的!

與logit函數的圖形相反,其中我們的y值範圍從負無窮大到正無窮大,我們的sigmoid函數的圖形具有0-1的y值。好極了!

有了這個,我們現在可以插入任何x值並將其追溯到預測的y值。該y值將是該x值在一個類別或另一個類別中的概率。

最大似然估計

你還記得我們是如何通過最小化RSS(有時被稱為「普通最小二乘法」或OLS法)的方法在線性回歸中找到最佳擬合線的嗎?

在這裡,我們使用稱為最大似然估計(MLE)的東西來獲得最準確的預測。

MLE通過確定最能描述我們數據的概率分布參數,為我們提供最準確的預測。

我們為什麼要關心如何確定數據的分布?因為它很酷!(並不是)

它只是使我們的數據更容易使用,並使我們的模型可以推廣到許多不同的數據。

一般來說,為了獲得我們數據的MLE,我們將數據點放在s曲線上並加上它們的對數似然。

基本上,我們希望找到最大化數據對數似然性的s曲線。我們只是繼續計算每個log-odds行的對數似然(類似於我們對每個線性回歸中最佳擬合線的RSS所做的那樣),直到我們得到最大數量。

好了,到此為止我們知道了什麼是梯度下降、線性回歸和邏輯回顧,下一講,由Audrey妹子來講解決策樹、隨機森林和SVM。

相關焦點

  • 線性回歸和梯度下降的初學者教程
    方法是用線性回歸。首先找到最佳擬合線,然後用這條直線做預測。線性回歸是尋找數據集的最佳擬合線,這條線可以用來做預測。如何找到最佳擬合線?這就是梯度下降的工作原理:從一條隨機線開始,比如說直線a,我們計算這條線的誤差平方和,然後調整斜率和y軸截距,重新計算新行的誤差平方和。繼續調整,直到達到局部最小值,其中平方誤差之和最小。梯度下降法是一種通過多次迭代最小化誤差平方和來逼近最小平方回歸線的算法。
  • 【Python機器學習】系列之線性回歸篇【深度詳細】
    不過現在至少可以認為,匹薩價格預測問題,多元回歸確實比一元回歸效果更好。假如解釋變量和響應變量的關係不是線性的呢?下面來研究一個特別的多元線性回歸的情況,可以用來構建非線性關係模型。下面用多項式回歸,一種特殊的多元線性回歸方法,增加了指數項( 的次數大於1)。現實世界中的曲線關係都是通過增加多項式實現的,其實現方式和多元線性回歸類似。本例還用一個解釋變量,匹薩直徑。
  • 95後哈佛小哥撰寫《從零開始的機器學習》,入門必備,書籍資源已開放
    書中的每一章都對應一種機器學習方法。作者 Danny Friedman 介紹說,學習一種方法的最佳方式就是從零開始(無論是從理論上還是代碼上),因此本書的宗旨也是提供這些推導過程。判別分類(Discriminative Classification)邏輯回歸(Logistic Regression)感知器算法(The Perceptron Algorithm)Fisher 線性判別(Fisher’s Linear Discriminant)4.
  • 線性回歸假設檢驗 - CSDN
    機器學習眼中的線性回歸左圖是原始建模數據,目的是用來尋找玩偶數量和成本的某種關係。右圖將數據可視化得到散點圖。第一步 進行場景確定第二步 定義損失函數建模的目的:模型預測值與真實值之間的差距越小越好。下面有兩種定義損失函數的方法。
  • 通過分析梯度下降的軌跡
    該論文研究了深度線性神經網絡上梯度下降的情況,能保證以線性速率收斂到全局最小值。圖景(landscape)方法及其局限性很多有關深度學習優化的論文都隱含地假設:在建立了損失圖景(尤其是臨界點的損失圖景,臨界點是指梯度消失的點)的幾何性質之後,就會得到對其的嚴格理解。
  • 回歸系列(一)|怎樣正確地理解線性回歸
    作者:丁點helper 來源:丁點幫你線性回歸,可能是統計學上運用最廣泛的一類方法了,之所以說它是一類方法,是因為它包括了我們熟知的各種模型:簡單線性回歸、多重線性回歸、Logistic回歸等等。線性回歸運用這麼廣泛很大程度在於它的內在邏輯十分簡單。一般情況下,就是找Y的影響因素或者說是衡量自變量(X)對因變量(Y)的影響程度,即便不理解其中的數學計算也可以很容易地憑藉各種軟體找到我們想要的結果。
  • 深度學習和機器學習的線性代數入門
    在機器學習和深度學習中,我們涉及到線性代數的這些知識:向量與矩陣線性方程組向量空間偏差通過線性代數,我們可以實現以下機器學習或深度學習方法:推導回歸方程通過線性方程預測目標值支持向量機SVM降維均方差或損失函數正則化協方差矩陣
  • Python數據分析|線性回歸
    壹 數據導入Python下載及環境配置這裡就不贅述了哈,網上教程非常多,我們直接一開始就進入乾貨,打它一個開門見山。①導入Python常用數據分析庫:常用的numpy、pandas、matplotlib先導入。
  • 原理+代碼|Python實戰多元線性回歸模型
    文章來源: 早起Python作者:蘿蔔前言「多元線性回歸模型」非常常見,是大多數人入門機器學習的第一個案例,儘管如此,裡面還是有許多值得學習和注意的地方。其中多元共線性這個問題將貫穿所有的機器學習模型,所以本文會「將原理知識穿插於代碼段中」,爭取以不一樣的視角來敘述和講解「如何更好的構建和優化多元線性回歸模型」。
  • spss線性回歸 回歸方程 - CSDN
    ,用到的分析方法就是線性回歸,決定猛學習一下,再來評判視頻裡的結論。>線性回歸,首先應用於定距變量之間,本質上是分析一個因變量和一組自變量之間的相關關係,既可以解釋,也可以做預測。就是一個用線性回歸解釋相關性的問題。
  • 7種執行簡單的線性回歸的分析與討論!
    【IT168 資訊】對於無數的數據科學家來說,線性回歸是許多統計建模和預測分析項目的起點。擬合的重要性,無論是準確的還是快速的,對於大數據集的線性模型都不能被誇大。隨著Python迅速成為實際的程式語言的一大選擇,關鍵是數據科學家必須意識到他或她可以使用的各種方法來快速將線性模型擬合到一個相當大的數據集,並評估每個特徵在過程、結果中的重要性。
  • 一文輕鬆看懂線性回歸分析的交互作用!
    含交互項的回歸方程多重線性回歸,一般是指有多個自變量X,只有一個因變量Y。前面我們主要是以簡單線性回歸為例在介紹,兩者的差距主要在於自變量X的數量,在只有一個X時,就稱簡單線性回歸。我們想通過線性回歸研究教育程度、性別對個人收入的影響,首先,不納入交互項的回歸方程為:其中,Y表示收入,X1表示「教育年限」(定量變量),X2表示「性別」(分類變量,用」0「為女性;「1「表示男性)。
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    今天,讓我們來談談線性回歸。沒錯,作為數據科學界元老級的模型,線性回歸幾乎是所有數據科學家的入門必修課。拋開涉及大量數統的模型分析和檢驗不說,你真的就能熟練應用線性回歸了麼?未必!  在這篇文章中,文摘菌將介紹8種用Python實現線性回歸的方法。  了解了這8種方法,就能夠根據不同需求,靈活選取最為高效的方法實現線性回歸。
  • 簡單線性回歸模型
    2 基礎回顧回歸的概念來源於實際問題,那麼現在我們所說的線性回歸分析問題具體指的是什麼呢?「注意,線性回歸問題的確定並不是通過自變量的形式,而是問題中待估計的未知參數最高次都為一次且關於未知參數呈線性關係。
  • 10個梯度下降優化算法+備忘單
    在一個線性回歸問題中,我已經用梯度下降實現了SGD, momentum, Nesterov, RMSprop 以及Adam,獲取代碼(JavaScript)通過梯度下降,優化算法可以在如下三個主要方面起作用:1、修改學習率成分,α, 或2、修改梯度成分 ∂L/∂w3、或二者兼有且看如下方程1:
  • 一文教你全面掌握用Python實現線性回歸
    全文共4968字,預計學習時長15分鐘或更長本文旨在為讀者理解和應用線性回歸時提供參考。雖然線性回歸算法很簡單,但是只有少數人能真正理解其基本原則。本文首先會深入挖掘線性回歸理論,理解其內在的工作機制,然後利用Python實現該算法,為商業問題建模。理論線性回歸或許是學習統計學最簡單的方法。
  • 的方法 線性回歸方程檢驗專題及常見問題 - CSDN
    回歸方程建立及回歸參數的區間估計,但是它們都是建立在假定因變量和自變量線性相關的基礎上。利用回歸平方和與總離差平方和的比值來說明X與Y的相關性,稱為決定係數,即有:決定係數的開方被稱為相關係數,前面介紹過相關係數r(Excel數據分析工具:協方差與相關係數),計算公式為:兩者的計算結果是完全一致的。相關係數與決定係數都能表示變量之間的線性相關程度,但是相關係數計算更簡便且能表示相關關係的方向。
  • Python環境下的8種簡單線性回歸算法
    GitHub 地址:對於大多數數據科學家而言,線性回歸方法是他們進行統計學建模和預測分析任務的起點。但我們不可誇大線性模型(快速且準確地)擬合大型數據集的重要性。如本文所示,在線性回歸模型中,「線性」一詞指的是回歸係數,而不是特徵的 degree。
  • 從Bengio演講發散開來:探討邏輯推理與機器學習
    許多其他邏輯系統建立並擴展了一階邏輯(例如,二階邏輯、三階邏輯、高階邏輯和模態邏輯)。每一種邏輯都增加了一個新的維度或特性,以便更容易對世界的某些方面進行建模。例如,被稱為時態邏輯的邏輯被用來對時間和變化進行建模。
  • python多重線性回歸分析
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:MultivariateLinear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')df根據預測目標,確定自變量和因變量#多重線性回歸