在幾年以前,我踏進了數據科學的大門。以前仍是軟件工程師的時候,我是最早開始在網上自學的(在開始個人碩士學位以前)。我記得當我搜集網上資源的時候,我看見的只有玲琅滿目的算法名稱—線性迴歸,支持向量機(SVM),決策樹(DT),隨即森林(RF),神經網絡等。對於剛剛開始學習的我來講,這些算法都是很是有難度的。可是,後來我才發現:要成爲一名數據科學家,最重要的事情就是了解和學習整個的流程,好比,如何獲取和處理數據,如何理解數據,如何搭建模型,如何評估結果(模型和數據處理階段)和優化。爲了達到這個目的,我認爲從邏輯迴歸開始入門是很是不錯的選擇,這樣不但可讓咱們很快熟悉這個流程,並且不被那些高大上的算法所嚇倒。算法
所以,下面將要列出5條緣由來講明爲何最開始學習邏輯迴歸是入門最好的選擇。固然,這只是我我的的見解,對於其餘人可能有更快捷的學習方式。網絡
1. 由於模型算法只是整個流程的一部分機器學習
像我以前提到的同樣,數據科學工做不只僅是建模,它還包括如下的步驟:ide
能夠看到,「建模」 只是這個重複過程的一部分而已。當開展一個數據產品的時候,一個很是好的實踐就是首先創建你的整個流程,讓它越簡單越好,清楚地明白你想要得到什麼,如何進行評估測試,以及你的baseline是什麼。隨後在這基礎上,你就能夠加入一些比較炫酷的機器學習算法,並知道你的效果是否變得更好。函數
順便說下,邏輯迴歸(或者任何ML算法)可能不僅是在建模部分所使用,它們也可能在數據理解和數據準備的階段使用,填補缺失值就是一個例子。工具
2. 由於你將要更好地理解機器學習學習
我想當你們看到本篇的時候,第一個想要問的問題就是:爲何是邏輯迴歸,而不是線性迴歸。真相實際上是都無所謂,理解了機器學習纔是最終目的。說到這個問題,就要引出監督學習的兩個類型了,分類(邏輯迴歸)和迴歸(線性迴歸)。當你使用邏輯迴歸或者線性迴歸創建你整個流程的時候(越簡單越好),你會慢慢地熟悉機器學習裏的一些概念,例如監督學習v.s非監督學習,分類v.s迴歸,線性v.s非線性等,以及更多問題。你也會知道如何準備你的數據,以及這過程當中有什麼挑戰(好比填補缺失值和特徵選擇),如何度量評估模型,是該使用準確率,仍是精準率和召回率,RUC AUC?又或者多是 「均方差」和「皮爾遜相關」?全部的概念都都是數據科學學習過程當中很是重要的知識點。等慢慢熟悉了這些概念之後,你就能夠用更復雜的模型或者技巧(一旦你掌握了以後)來替代你以前的簡單模型了。測試
3. 由於邏輯迴歸有的時候,已經足夠用了優化
邏輯迴歸是一個很是強大的算法,甚至對於一些很是複雜的問題,它均可以作到遊刃有餘。拿MNIST舉例,你可使用邏輯迴歸得到95%的準確率,這個數字可能並非一個很是出色的結果,可是它對於保證你的整個流程工做來講已經足夠好了。實際上,若是說可以選擇正確且有表明性的特徵,邏輯迴歸徹底能夠作的很是好。spa
當處理非線性的問題時,咱們有時候會用可解釋的線性方式來處理原始數據。能夠用一個簡單的例子來講明這種思想:如今咱們想要基於這種思想來作一個簡單的分類任務。
X1 x2 | Y
==================
-2 0 1
2 0 1
-1 0 0
1 0 0
若是咱們將數據可視化,咱們能夠看到沒有一條直線能夠將它們分開。
在這種狀況下,若是不對數據作一些處理的話,邏輯迴歸是沒法幫到咱們的,可是若是咱們不用x2
特徵,而使用x1²來代替,那麼數據將會變成這樣:
X1 x1^2 | Y
==================
-2 4 1
2 4 1
-1 1 0
1 1 0
如今,就存在一條直線能夠將它們分開了。固然,這個簡單的例子只是爲了說明這種思想,對於現實世界來說,很難發現或找到如何改變數據的方法以可使用線性分類器來幫助你。可是,若是你能夠在特徵工程和特徵選擇上多花些時間,那麼極可能你的邏輯迴歸是能夠很好的勝任的。
4. 由於邏輯迴歸是統計中的一個重要工具
線性迴歸不只僅能夠用來預測。若是你有了一個訓練好的線性模型,你能夠經過它學習到因變量和自變量之間的關係,或者用更多的ML語言來講,你能夠學習到特徵變量和目標變量的關係。一個簡單的例子,房價預測,咱們有不少房屋特徵,還有實際的房價。咱們基於這些數據訓練一個線性迴歸模型,而後獲得了很好的結果。經過訓練,咱們能夠發現模型訓練後會給每一個特徵分配相應的權重。若是某個特徵權重很高,咱們就能夠說這個特徵比其它的特徵更重要。好比房屋大小特徵,對於房價的變化會有50%的權重,由於房屋大小每增長一平米房價就會增長10k。線性迴歸是一個瞭解數據以及統計規律的很是強的工具,同理,邏輯迴歸也能夠給每一個特徵分配各自的權重,經過這個權重,咱們就能夠了解特徵的重要性。
5. 由於邏輯迴歸是學習神經元網絡很好的開始
當學習神經元網絡的時候,最開始學習的邏輯迴歸對我幫助很大。你能夠將網絡中的每一個神經元看成一個邏輯迴歸:它有輸入,有權重,和閾值,並能夠經過點乘,而後再應用某個非線性的函數獲得輸出。更多的是,一個神經元網絡的最後一層大多數狀況下是一個簡單的線性模型,看一下最基本的神經元網絡:
若是咱們更深刻地觀察一下output層,能夠看到這是一個簡單的線性(或者邏輯)迴歸,有hidden layer 2做爲輸入,有相應的權重,咱們能夠作一個點乘而後加上一個非線性函數(根據任務而定)。能夠說,對於神經元網絡,一個很是好的思考方式是:將NN劃分爲兩部分,一個是表明部分,一個是分類/迴歸部分。
第一部分(左側)嘗試從數據中學習並具備很好的表明性,而後它會幫助第二個部分(右側)來完成一個線性的分類或者回歸任務。
總結
成爲一個數據科學家你可能須要掌握不少知識,第一眼看上去,好像學習算法纔是最重要的部分。實際的狀況是:學習算法確實是全部狀況中最複雜的部分,須要花費大量的時間和努力來理解,但它也只是數據科學中的一個部分,把握總體更爲關鍵。