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

2020-12-13 和訊

  來源:Medium

  編輯:元子

  【新智元導讀】雖然在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。如圖:

  圖片來源:

  https://www.youtube.com/watch?v=ARfXDSkQf1Y

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

  還有更多模型需要考慮的因素(可能是天氣,也許是首發球員等)!因此,為了使得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。

  參考連結:

  https://towardsdatascience.com/machine-learning-algorithms-in-laymans-terms-part-1-d0368d769a7b

  新智元春季招聘開啟,一起弄潮AI之巔!

  崗位詳情請戳:

  【春招英雄貼】新智元呼召智士主筆,2019勇闖AI之巔!

  【2019新智元 AI 技術峰會倒計時14天】

  2019年的3月27日,新智元再匯AI之力,在北京泰富酒店舉辦AI開年盛典——2019新智元AI技術峰會。峰會以「智能雲?芯世界「為主題,聚焦智能雲和AI晶片的發展,重塑未來AI世界格局。

  同時,新智元將在峰會現場權威發布若干AI白皮書,聚焦產業鏈的創新活躍,評述華人AI學者的影響力,助力中國在世界級的AI競爭中實現超越。

  購票二維碼

  活動行購票連結:http://hdxu.cn/9Lb5U

  點擊文末「閱讀原文」,馬上參會!

本文首發於微信公眾號:新智元。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

(責任編輯: HN666)

相關焦點

  • 機器學習基礎:線性回歸和梯度下降的初學者教程
    這就是使用梯度下降的原因。❝梯度下降是一種找到最佳擬合線的工具❞在深入研究梯度下降之前,讓我們先看看另一種計算最佳擬合線的方法。❝梯度下降法是一種通過多次迭代最小化誤差平方和來逼近最小平方回歸線的算法。❞梯度下降算法在機器學習術語中,誤差平方和稱為「成本」。這個成本公式是:
  • 機器學習——梯度下降、梯度下降的線性回歸算法
    梯度下降背後的思想是:開始時我們隨機選擇一個參數的組合(θo, θ1, ......, θn),計算代價函數,然後我們尋找下一個能讓代價函數值下降最多的參數組合。批量梯度下降(batch gradient descent)算法的公式為:其中α是學習率(learning rate),它決定了我們沿著能讓代價函數下降程度最大的方向向下邁出的步子有多大(或者理解成「步長」),在批量梯度下降中,我們每一次都同時讓所有的參數減去學習速率乘以代價函數的導數。上面的(for j = 0 and j = 1)是指同時對θo和θ1處理。
  • 線性回歸和梯度下降的初學者教程
    方法是用線性回歸。首先找到最佳擬合線,然後用這條直線做預測。線性回歸是尋找數據集的最佳擬合線,這條線可以用來做預測。如何找到最佳擬合線?這就是為什麼我們需要使用梯度下降。梯度下降是一種找到最佳擬合線的工具。在深入研究梯度下降之前,先看看另一種計算最佳擬合線的方法。
  • 教程 從頭開始:如何用 Python 實現帶隨機梯度下降的線性回歸
    優化算法用於在機器學習中為給定訓練集找出合理的模型參數設置。機器學習最常見的優化算法是隨機梯度下降(SGD:stochastic gradient descent)。本教程將指導大家用 Python 實現隨機梯度下降對線性回歸算法的優化。
  • 教程 從頭開始:用Python實現帶隨機梯度下降的線性回歸
    優化算法用於在機器學習中為給定訓練集找出合理的模型參數設置。機器學習最常見的優化算法是隨機梯度下降(SGD:stochastic gradient descent)。本教程將指導大家用 Python 實現隨機梯度下降對線性回歸算法的優化。
  • 理解凸性:為什麼梯度下降適用於線性回歸
    在機器學習中我們總會遇到線性回歸問題,但是為什麼我們可以用梯度下降算法來求解線性回歸成本函數呢?凸性理論可以讓我們更容易理解這個問題。凸性首先,通過凸集和凸函數定義凸度。左邊和右邊的圖形都是凸的。不管你在這些圖上畫什麼線段,這個線段總是在函數圖的上面或者等於函數圖。現在我們對凸集和凸函數有了一些直覺和理解,讓我們轉向線性回歸,看看凸性在哪裡起作用。線性回歸回顧假設在n維空間中有m個數據樣本。每個樣本都有n個映射到單個輸出值的特性。
  • 數據科學&機器學習的筆記1:分類、線性回歸和邏輯回歸
    邏輯回歸是可以輸出概率值的。支持向量機是上世紀的經典,能解決比較複雜的問題;但是巧了,神經網絡也很適合解決這類問題,而且效果更好……好了現在切換到ml頻道,我想整理一下邏輯回歸的算法原理。然而線性回歸是邏輯回歸的基礎,所以我需要先整理一下線性回歸的原理orz。
  • 機器學習之多元線性回歸模型梯度下降公式與代碼實現(篇二)
    上一篇我們介紹了線性回歸的概述和最小二乘的介紹,對簡單的一元線性方程模型手推了公式和python代碼的實現。機器學習之線性回歸模型詳細手推公式與代碼實現(篇一)今天這一篇來介紹多元線性回歸模型多元線性回歸模型介紹在回歸分析中,如果有兩個或兩個以上的自變量,就稱為多元回歸
  • Python機器學習算法入門之梯度下降法實現線性回歸
    在這裡,xi和yi都被視為已知值。從下圖看,最小二乘法所做的是通過數學推導直接計算得到最低點;而梯度下降法所做的是從圖中的任意一點開始,逐步找到圖的最低點。2. 多元線性回歸模型        從機器學習的角度來說,以上的數據只有一個feature,所以用一元線性回歸模型即可。
  • 廣義線性模型與邏輯回歸
    分類問題是機器學習中常見的一種方法,本文將以二分類為切入點,引出邏輯回歸模型。
  • 【機器學習基礎】線性回歸和梯度下降的初學者教程
    這就是使用梯度下降的原因。❝梯度下降是一種找到最佳擬合線的工具❞在深入研究梯度下降之前,讓我們先看看另一種計算最佳擬合線的方法。❝梯度下降法是一種通過多次迭代最小化誤差平方和來逼近最小平方回歸線的算法。❞梯度下降算法在機器學習術語中,誤差平方和稱為「成本」。這個成本公式是:
  • 機器學習套路:線性回歸
    (點擊上方藍字,快速關注我們)轉自:sharkdtuhttp://sharkdtu.com/posts/ml-linear-regression.html好文投稿, 請點擊 → 這裡了解詳情線性回歸可以說是機器學習中最簡單
  • 線性回歸與梯度下降
    Cost Function代價函數是線性回歸中的一個應用,在線性回歸中,要解決的一個問題就是最小化問題。假設在一元線性回歸中,在一個訓練集中,我們需要找到一條直線能和該訓練集中的點最接近。這也是梯度下降的一個特點。它會找到所有的局部最優解出來。梯度下降算法,不斷更新:直到收斂。
  • python機器學習--線性回歸
    python機器學習--線性回歸線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於一個給定的訓練集數據,線性回歸的目的就是找到一個與這些數據最吻合的線性函數。針對線性回歸算法在之前的數模案例也有涉及喔,歡迎去看看上一篇博客數學建模預測模型實例--大學生體測數據模型在這裡插入圖片描述OLS線性回歸Ordinary Least Squares 最小二乘法一般情況下,線性回歸假設模型為下,其中w為模型參數
  • 線性回歸的求解:矩陣方程和梯度下降、數學推導及NumPy實現
    以上就是一元線性回歸的最小二乘法求解過程。很多機器學習模型中都需要經歷上述過程:確定損失函數,求使損失函數最小的參數。求解過程會用到一些簡單的微積分,因此複習一下微積分中偏導數部分,有助於理解機器學習的數學原理。
  • 線性模型(三)邏輯回歸
    「如果將本節開始拋硬幣的例子改為擲骰子(如6面的骰子),拋擲n次,則二項分布泛化為多項分布,此時對應的多分類回歸的模型稱為Softmax回歸,也稱多分類的邏輯回歸,構建該模型需要使用多項分布的連結函數進行轉化後建模,相關詳情,書中不再講述。最大似然估計邏輯回歸參數求解常使用最大似然估計法。
  • 【機器學習基礎】(二):理解線性回歸與梯度下降並做簡單預測
    梯度下降我們把木棒(實線、模型)的表示數學化,我們既然可以用3、4做為x的係數,那我們當然可以嘗試別的數字。我們可以看到,在上圖中我們是可以找到極小值的,大概在5左右,此處是我們損失最小的位置,這時我們的模型最能表示數據的規律。梯度可以完全理解為導數,梯度下降的過程就是我們不斷求導的過程。
  • 教程丨機器學習算法:從頭開始構建邏輯回歸模型
    邏輯回歸是繼線性回歸之後最著名的機器學習算法。在很多方面,線性回歸和邏輯回歸是相似的,不過最大的區別在於它們的用途,線性回歸算法用於預測,但邏輯回歸用於分類任務。分類任務很常見,比如把電子郵件分為垃圾郵件和非垃圾郵件、把腫瘤分為惡性或者良性、把網站分為危險站點或正常站點,機器學習算法就可以完成這些任務。
  • ...實現機器學習之邏輯回歸:邏輯回歸介紹、應用場景、原理、損失...
    作者 | 汪雯琦責編 | Carol來源 | CSDN 博客學習目標知道邏輯回歸的損失函數知道邏輯回歸的優化方法知道sigmoid函數知道邏輯回歸的應用場景應用LogisticRegression實現邏輯回歸預測知道精確率、召回率指標的區別知道如何解決樣本不均衡情況下的評估了解
  • 從線性回歸、邏輯回歸到圖像分類
    今天為大家帶來一份非常詳盡的PyTorch教程。本文共分3大部分:安裝PyTorch和Jupyter Notebook用PyTorch實現線性回歸使用邏輯回歸實現圖像分類文章超長,秉承用代碼搞定一切的原則,內含大量代碼,建議收藏,並分享給你喜歡的人。同時如果有什麼疑問,也歡迎留言告知我們。