數據科學&機器學習的筆記1:分類、線性回歸和邏輯回歸

2021-03-02 三嗨

我想把之前數據科學&機器學習所學系統地整理、融合一下,所以寫了一些筆記。沒想到光是第一部分就還挺長……我其實真正想整理的是神經網絡部分的筆記,不知道還有沒有足夠的意願了。

這學期開了數據科學課,很開心,我校信管還挺跟時代嘛。聽c老師說學院甚至打算把整個專業改名,安上「大數據」,但後來發現如此的話教學內容也要大改而師資不匹配。總之我挺高興的,這是我這學期最感興趣的課之一了。

這課兩周內把前四章基礎的東西講完了,數據導入和簡單數據預處理之類的,比我想像中快,我還比較期待後面能學到新東西。

第五章開了個頭,講的是「選擇和評價模型」,大抵是介紹機器學習中的常用模型,分清遇到不同數據分析需求時適用的模型。令我失望的是,真的真的只是講了一下模型的種類,告訴你模型可以用來做什麼,連一點點原理都沒有涉及。我希望今天把課程所學溫習,把上學期的實踐課學到的機器學習原理整合進知識框架裡,順道把之前的筆記好好整理一下。

不同於Machine Learning角度,把機器學習模型分為監督學習和無監督學習;Data Science是從業務問題的角度出發,把模型分為分類、打分、概率、排名、聚類等。我顯然更喜歡前者的分法,相比較之下後者的分法互相交叉,令人迷惑。

但我今天還是按照ds的分類來整理一下吧。

分類問題 Classification

分類問題決定如何為對象分配(已知的)標籤 。分類問題屬於監督學習,即訓練模型時需要數據已經被分類好了。監督(Supervised)本質上說的就是正確答案已知(right answer given),比如訓練模型去學習貓狗圖片分類時,每張圖片已經事先被打上了「貓貓」或者「狗狗」的標籤。模型拿到一張圖片,給出自己的判斷,再查看標準答案,得知自己答對了沒有;然後不斷修正自己,直到達到令人滿意的準確率。這種數據標籤都是人工打的,說起來l老師還提起過這甚至催生了一個新興職業來著,叫「數據標註員」,還挺賺錢?

分類問題的常用算法,ds課上介紹了樸素貝葉斯、決策樹、邏輯斯諦回歸和支持向量機。我很遺憾的是這裡介紹的幾種算法都比較基礎,並且不知道為什麼似乎甚至不打算提及神經網絡的樣子……樸素貝葉斯、決策樹和邏輯回歸都是比較簡易的模型,支持向量機雖然很深,但l老師說它是上個世紀的經典,現在已經逐漸過時,被很多算法給取代了……不過從應用角度來說,我們本科生處理處理小規模數據,用簡單算法可能比神經網絡效果好多了,學這些先入個門也挺合適把。

(都是適合比較簡單的任務,高級的還是神經網絡給力)

樸素貝葉斯很簡單,所以適合處理比較多的變量;尤其在應用中發現它很適合文本分類。但是現在深度學習領域的自然語言處理不是靠譜多了……另一方面,樸素貝葉斯成立有一個必須的假設:各輸入變量是相互獨立的——這很限制它的靠譜性。

決策樹就比較適合輸入變量之間有相關性的情況,它的分類邏輯是一層一層的。

邏輯回歸是可以輸出概率值的。

支持向量機是上世紀的經典,能解決比較複雜的問題;但是巧了,神經網絡也很適合解決這類問題,而且效果更好……

好了現在切換到ml頻道,我想整理一下邏輯回歸的算法原理。

然而線性回歸是邏輯回歸的基礎,所以我需要先整理一下線性回歸的原理orz。

線性回歸Linear Regression

線性回歸很好理解,輸入的是對象的一系列特徵值x1、x2、x3……,輸出則是需要預測的變量y。比如經典的房價預測問題,輸入某地的一些特徵值(比如犯罪率啊、住宅數啊、人均收入啊等等),輸出預測的該地房價。公式表示起來是這樣:

剛開始非常迷惑我的是已知量未知量的問題。在訓練的時候,輸入值x1、x2和輸出值y都是已知量,而參數θ0、θ1、θ2…才是未知量,機器的根本任務就是擬合出合適的θ值;而在模型投入使用的時候,θ的值已經敲定了,我們拿輸入的一堆x來預測未知的y。

接下來精彩的來了:模型怎樣才能有方向地優化它的參數θ呢?這裡所發生的事情實在很巧妙。

要實現模型優化,需要依次解決兩個問題:

建模誤差:反映模型所預測的值與訓練集中實際值之間的差距

自動優化:自動找出讓誤差更小的參數取值

1. 用代價函數來建模誤差Cost Function

這個其實很容易想到。預測值和真實值之間的差即為誤差,那所有的這些差的平均值就能表示整個模型的誤差水平了。

假如圖中黑色直線就是我們擬合出來的線,直線上的每一個點,意味著在x取相應值時,y即為預測值;而同一橫坐標的紅色叉叉對應的y表示真實值。那麼每一條藍色線段即為一次預測的誤差,所有藍色線段長度加起來再除以總數就可以表示整個線的誤差程度了。

當然,預測值與真實值的差可正可負,要全部加起來需要取絕對值;為了方便後續的計算,這裡在定義代價函數的時候取了平方。代價函數的定義出來了:

(呃……本來除以訓練個數m就夠了,前面這個2是哪冒出來的?現在只好說是未卜先知,這個2是為了方便下一步的計算。)

好!有了代價函數來表示誤差水平,那麼模型接下來要做的事情就可以量化了:選取合適的參數θ,使代價函數值最小。

2. 用梯度下降算法來優化參數Gradient Descent

怎麼說呢,在我對機器學習膚淺的掌握中,我認為最精妙在於神經網絡;其次就在於這裡的梯度下降算法了。誰能想到一個不怎麼起眼的數學原理,可以應用於這麼巧妙的地方,促進回歸乃至神經網絡的實現,奠定如今一整個蓬勃發展的ml領域的基礎。(……我可能太扯了)

說回我們的目標,要取代價函數的最小值。函數的最值問題,這很容易讓人聯想到——導數。

假如代價函數是如圖所示的拋物線形狀(事實上單變量線性回歸的代價函數確實總會是這樣的形狀),橫坐標代表不同的θ取值,縱坐標是代價函數J(θ)。曲線的底部正是J(θ)的最小值,在這一點導數為0。

一個容易被忽視的現象來了:在最低點右邊,導數值總為正(導數的幾何意義就是切線斜率);在最低點左邊,導數值總為負。而且更仔細想一想,越接近低谷,曲線越平緩,斜率的絕對值越小,導數值也越小;反之越遠則導數值越大。

那麼,如果對θ進行迭代,總是讓當前的θ值減去它對應點的導數值,會發生什麼?答案是θ值會越來越接近最優值!在最低點右邊的θ會減去一個正數,從而向左移動;在左邊的θ會減去一個負數,從而向右移動。離得遠的點會減去一個更大的數,從而蹭蹭靠近;離得近的點會減去一個很小的數,從而緩緩趨近。如下圖:

那麼梯度下降的迭代公式即是:

其中的即為代價函數對的偏導數,α則是學習率,用來調節每次下降的步伐。

至此,我們已經搞明白了線性回歸時,參數自動優化的原理。真正實現線性回歸,只需要利用梯度下降算法,不斷優化參數θ。具體一點來講,只需要將代價函數的偏導數求解出來,代入梯度下降公式,所得即是最終的算法。如下:

Repeat{

}

邏輯回歸Logistic Regression

邏輯回歸跟線性回歸的輸入是一樣的,即對象的一系列特徵值;而輸出的是0或1,代表將對象分為兩種類型。比如經典的垃圾郵件分類問題,可以將垃圾郵件的特徵值(比如文本長短啊、發件郵箱地址啊之類的,我也不知道具體是啥)輸入,模型就會給出預測,1代表是垃圾郵件,0代表不是。

邏輯回歸看起來比線性回歸簡單,只能預測出0、1兩個分類,而後者能預測出一整個連續型數值,很厲害的樣子。然而事實上,邏輯回歸只是在線性回歸的結果上加了一個sigmoid函數,暴力讓結果涇渭分明。sigmoid函數是這個:

它長這樣:

其中自變量z是線性回歸的輸出結果,值的大小表明對象跟某類的相似程度。比如說,想預測一封郵件是否垃圾郵件,z=999,就是說:這也太太太太太像一封垃圾郵件了;反之z=-999,就是說:這一點點點點也不像垃圾郵件。這麼說的話,sigmoid函數的作用仿佛就顯現了:它就是把取值範圍很跳脫的z值,轉換成一個(0,1)間的值,正好可以表示概率。極小的z值對應的概率趨於0,極大的z值對應的概率趨於1。

那麼,邏輯回歸的公式可以這麼表示:

其中前一個式子中,e的指數即是線性回歸的輸出,也就是上面說的自變量z。後一個式子是指在參數為θ,輸入為x時,y=1的概率。

這樣的話輸出的值仍然是一些諸如0.2、0.4、0.8這樣的概率,為了讓結果更明確,這裡只需要再進行一個簡單的判決,大於0.5的判為1,小於0.5的判為0。(這裡我理解了很久為什麼如此粗暴且似乎沒有必要,後來想明白經手sigmoid函數的值往往不是很趨近0就是很趨近1,直接判定為0、1是可以比較篤定的。)

相關焦點

  • 機器學習 | 線性回歸大家族Part1
    今天推出機器學習系列筆記第20期,本期分享內容為:機器學習之線性回歸大家族Part1。(筆者使用的是Windows系統)sklearn中的線性回歸大家族1 概述1.1 線性回歸大家族 回歸是一種應用廣泛的預測建模技術,這種技術的核心在於預測的結果是連續型變量。
  • 文科生都能看懂的機器學習教程:梯度下降、線性回歸、邏輯回歸
    於是一名叫Audrey Lorberfeld的畢業生,試圖將大眾與機器學習之間的鴻溝,親手填補上。於是有了這個系列文章。  本系列第一講:梯度下降、線性回歸和邏輯回歸。  算法 vs 模型  在理解開始了解機器學習之前,我們需要先搞懂兩個基礎概念:算法和模型。  我們可以把模型看做是一個自動售貨機,輸入(錢),輸出(可樂)。
  • 機器學習開放課程(四)線性分類與線性回歸
    編者按:機器學習開放課程第四課,Mail.Ru數據科學家Yury Kashnitsky深入講解線性分類和線性回歸的理論與實踐。
  • 數據科學筆記(三)——線性回歸
    1. 機器學習眼中的線性回歸  左圖是原始建模數據,目的是用來尋找玩偶數量和成本的某種關係。右圖將數據可視化得到散點圖。
  • 廣義線性模型與邏輯回歸
    分類問題是機器學習中常見的一種方法,本文將以二分類為切入點,引出邏輯回歸模型。
  • 多分類邏輯回歸(Multinomial Logistic Regression)
    在多類別邏輯回歸中,因變量是根據一系列自變量(就是我們所說的特徵、觀測變量)來預測得到的。具體來說,就是通過將自變量和相應參數進行線性組合之後,使用某種概率模型來計算預測因變量中得到某個結果的概率,而自變量對應的參數是通過訓練數據計算得到的,有時我們將這些參數成為回歸係數。
  • Python數據科學:線性回歸
    本次介紹:線性回歸:多個連續變量與一個連續變量間的關係。其中線性回歸分為簡單線性回歸和多元線性回歸。/ 01 / 數據分析與數據挖掘資料庫:一個存儲數據的工具。因為Python是內存計算,難以處理幾十G的數據,所以有時數據清洗需在資料庫中進行。統計學:針對小數據的數據分析方法,比如對數據抽樣、描述性分析、結果檢驗。人工智慧/機器學習/模式識別:神經網絡算法,模仿人類神經系統運作,不僅可以通過訓練數據進行學習,而且還能根據學習的結果對未知的數據進行預測。
  • 入門機器學習之線性回歸
    回歸分析按照涉及的變量的多少,分為一元回歸和多元回歸分析;按照因變量的多少,可分為簡單回歸分析和多重回歸分析;按照自變量和因變量之間的關係類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變量,且自變量之間存在線性相關,則稱為多重線性回歸分析。
  • 多元線性回歸、逐步回歸、邏輯回歸的總結
    在這個高級語言層出不窮的年代,這樣做顯然不明智,所以我考慮用優秀的數據分析工具——R語言(不敢說最優秀,雖然心裡是這麼想的,我怕有人要罵我!)做回歸分析。包括簡單多變量回歸、逐步回歸、邏輯回歸!需要的用到的知識儲備:下面分別從普通多元線性回歸、逐步回歸、邏輯回歸進行介紹。前面用Python實現的只是一元回歸,由於R語言實現線性回歸很方便,所以我會著重介紹原理。多元線性回歸不論是單變量還是多元線性回歸分析,他們都是直接或間接(有時候需要通過變量代換)程線性的關係。
  • 機器學習入門3 ——感知器和邏輯回歸
    此外,我們將討論感知器算法的兄弟,邏輯回歸。有監督和無監督算法在機器學習中,有兩種通用的算法。在上一篇文章中我們討論了回歸和分類。這兩種方法均屬於有監督學習算法的大範圍之內,監督學習算法是兩類機器學習算法之一。 另一類算法稱為無監督算法。
  • 線性模型(三)邏輯回歸
    邏輯回歸用戶是否會點擊廣告、貸款是否會逾期等這種二分因變量取值一般定義為0和1(一般把關注的事件編碼為1)或+1和-1,對於這類問題可以使用邏輯回歸建模模型原理拋硬幣的隨機事件中,拋一次硬幣的結果可能是正面或反面,設正面表示為1,概率為p,則該隨機事件屬於
  • ...實現機器學習之邏輯回歸:邏輯回歸介紹、應用場景、原理、損失...
    ROC曲線的意義說明AUC指標大小應用classification_report實現精確率、召回率計算應用roc_auc_score實現指標計算邏輯回歸介紹邏輯回歸(Logistic Regression)是機器學習中的一種分類模型,邏輯回歸是一種分類算法,雖然名字中帶有回歸,但是它與回歸之間有一定的聯繫。
  • 簡單粗暴理解與實現機器學習之邏輯回歸:邏輯回歸介紹、應用場景...
    邏輯回歸(Logistic Regression)是機器學習中的一種分類模型,邏輯回歸是一種分類算法,雖然名字中帶有回歸,但是它與回歸之間有一定的聯繫。由於算法的簡單和高效,在實際中應用非常廣泛。邏輯回歸就是解決二分類問題的利器。
  • R數據分析:一般線性回歸的做法和解釋
    在R語言中我們可以非常方便地用基礎包中的lm方法做出線性回歸。參數的書寫也和數學方程一樣一樣的Y~X+X2,只不過將等號換成了~。我們用summary+回歸對象就可以得到回歸結果,如果要看模型的殘差直接$resid就可以。還是給大家寫一個活生生的例子吧:實例描述:我們有如圖的數據集,我想要用回歸分析做month, spend對sales的關係。
  • python機器學習--線性回歸
    python機器學習--線性回歸線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於一個給定的訓練集數據,線性回歸的目的就是找到一個與這些數據最吻合的線性函數。針對線性回歸算法在之前的數模案例也有涉及喔,歡迎去看看上一篇博客數學建模預測模型實例--大學生體測數據模型在這裡插入圖片描述OLS線性回歸Ordinary Least Squares 最小二乘法一般情況下,線性回歸假設模型為下,其中w為模型參數
  • 機器學習基本概念-維度災難和線性回歸
    KNN分類器結構簡單,只要有良好的距離度量和足夠的標記訓練數據,就可以很好地工作,然而,KNN分類器的主要問題是它們不能很好地處理高維輸入。為了解釋維度災難,我們給出了一些來自(Hastie et al. 2009, p22)的例子。考慮將KNN分類器應用於輸入為均勻分布在d維單位立方體中的數據。
  • 機器學習套路:線性回歸
    ,最基礎的機器學習算法,它是一種監督學習方法,可以被用來解決回歸問題。它用一條直線(或者高維空間中的平面)來擬合訓練數據,進而對未知數據進行預測。基本套路機器學習方法,無外乎三點:模型,代價函數,優化算法。
  • 從線性回歸、邏輯回歸到圖像分類
    本文共分3大部分:安裝PyTorch和Jupyter Notebook用PyTorch實現線性回歸使用邏輯回歸實現圖像分類文章超長,秉承用代碼搞定一切的原則,內含大量代碼,建議收藏,並分享給你喜歡的人。同時如果有什麼疑問,也歡迎留言告知我們。Tips:為了方便演示,文中代碼和返回結果是用截圖形式給出。
  • 用邏輯回歸來進行分類
    邏輯回歸是機器學習中經常用到的一種方法,其屬於有監督機器學習,邏輯回歸的名字雖然帶有「回歸」二字,但實際上它卻屬於一種分類方法,本文就介紹一下如何用邏輯回歸進行分類。首先還是介紹一下邏輯回歸的基本原理。
  • sklearn機器學習心得—線性回歸|粉絲投稿1
    >    線性回歸是數據挖掘中的基礎算法之一,也是重要的算法之一,基本上第一次接觸的機器學習算法就是線性回歸了。因為相對其他算法而言,我覺得線性回歸是相對比較容易的算法,從某種意義上來說,在學習函數的時候已經開始接觸線性回歸了,只不過那個時候並沒有涉及到誤差項,其實在中學的時候就有接觸了,學習的最小二乘法就是啦~~1).對於坐標系中給定的點,我們希望用一條線或是一個類似於:f(x)=θ0+θ1*x1+θ2*x2_...θn*xn 方程來擬合這寫數據點,這就是我們說的回歸了2).這次我們要用的是