iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
  • 在前面兩天我們已經說完基礎的 Regression 跟 Classification 了,為什麼在這裡還要提到一個什麼 Logistic Regression?
  • Logistic Regression(羅吉斯回歸,這中文實在是太神奇了,我們後面都將用英文稱呼),是一個大家在學習機器學習的路途上,一定會接觸到的,理由是什麼?就筆者自己認為,他是一個披著 Regression 外皮的 Classification ,因為等等就會發現他的公式竟然長得跟 Linear Regression 一模一樣,因此 Logistic Regression 確實有我們必須額外了解的原因,我們等等看下去就知道了

什麼是 Logistic Regression?

  • Logistic Regression 是一種分類模型,利用現有的資料點,盡可能的找出能將所有資料點分離的那條線
  • 我們來看看一張圖,


    from: Tommy Huang

  • 原本 Regression 是用來預測一個連續的數值,但是在這邊,我們利用 Logistic Regression 來分類資料,且我們從上圖可以發現 Linear Regrssion 跟 Logistic Regression 的公式都是一樣的
  • 那我們回顧 Classification 那邊如何判斷資料的二分類?就是找一個機率 https://chart.googleapis.com/chart?cht=tx&chl=%24P_%7Bw%2C%20b%7D(C_1%7Cx)%24 有沒有大於 50% 來做個分辨,只要他對於判斷區塊有超過 50% 的機率,那我們就說我們可以判定他屬於第一類或是其他類
  • 那 Logistic Regression 也是一樣的概念,只是我們就直接帶入數值之後,他是大於零還是小於零


    from: Tommy Huang

  • 等於我們就是利用一個 unit-step function 去直接做判斷 https://chart.googleapis.com/chart?cht=tx&chl=%24%24%5Csigma(f(x))%20%3D%20%5Cleft%5C%7B%20%5Cbegin%7Barray%7D%7Br%7D%200%2C%20f(x)%20%5Clt%200%20%5C%5C%201%2C%20f(x)%20%5Cge%200%20%5Cend%7Barray%7D%20%5Cright.%24%24
  • 那這邊我們的 https://chart.googleapis.com/chart?cht=tx&chl=%24%5Csigma(f(x))%24 的判斷有點太過絕對生硬,也就是他並沒有考慮到資料判斷上會遇到的問題,什麼意思
  • 我們繪製看看一下如果 https://chart.googleapis.com/chart?cht=tx&chl=%24%24%5Csigma(f(x))%20%3D%20%5Cleft%5C%7B%20%5Cbegin%7Barray%7D%7Br%7D%200%2C%20f(x)%20%5Clt%200%20%5C%5C%201%2C%20f(x)%20%5Cge%200%20%5Cend%7Barray%7D%20%5Cright.%24%24 的話,他的判斷曲線會長怎樣

  • 這個判斷曲線的意思是什麼,是代表了就算資料是 https://chart.googleapis.com/chart?cht=tx&chl=%240.0001%24 或是 https://chart.googleapis.com/chart?cht=tx&chl=%24-0.0001%24 這種我們自己都知道是介於邊緣的資料,有極高機率誤判,但判斷公式仍然會毫不猶豫的給予分辨,這就代表著我們的判斷太過武斷,且毫無彈性
  • 因此 Logistic Regression 利用對數函數 Sigmoid 來達到更有彈性的輸出,我們來看看圖片

  • 橘色的線線就是利用對數函數來做輸出的,可以發現對於判斷界線還有資料判斷的狀況,更加的平滑,因此判斷會更加彈性,例如 https://chart.googleapis.com/chart?cht=tx&chl=%24%5Csigma(0.2)%20%5Csimeq%200.55%24
  • 而 Sigmoid 的公式是什麼呢? https://chart.googleapis.com/chart?cht=tx&chl=%24y%20%3D%20%5Csigma(f(x))%3D%7B1%20%5Cover%201%2Be%5E%7B-f(x)%7D%7D%24 這邊不多贅述這個對數函數了,有興趣的自己去查都可以看到很清楚的解釋

Logistic Regression V.S. Linear Regression

  • 在最前面我們有提到過,Linear Regression 跟 Logistic Regression 的公式是一樣的,但是判斷卻是不一樣的
  • 我們一樣拉到三步驟去做比較

Model

  • Linear Regression 的公式很簡單,就是 https://chart.googleapis.com/chart?cht=tx&chl=%24f_%7Bw%2C%20b%7D(x)%20%3D%20%5Csum%5Climits_i%20w_ix_i%20%2B%20b%24
  • 但是 Logistic Regression 前面有提到,是要分類的,因此公式上多了一個部分,就是 https://chart.googleapis.com/chart?cht=tx&chl=%24%5Csigma%24https://chart.googleapis.com/chart?cht=tx&chl=%24f_%7Bw%2C%20b%7D(x)%20%3D%20%5Csigma(%5Csum%5Climits_i%20w_ix_i%20%2B%20b)%24 ,那個 Output 會是 0 or 1
  • 所以這邊可以發現公式真的一模一樣,唯一差異就是 Logistic Regression 多了一個 Sigmoid,去幫忙分類 0,1

Goodness of function

  • Linear Regression 就是一個很簡單的 Loss function,就是 Mean Square Error,https://chart.googleapis.com/chart?cht=tx&chl=%24L(f)%20%3D%20%7B1%20%5Cover%20n%7D%20%5Csum%5Climits_n(f(x%5En)%20-%20y%5En)%5E2%24 也就是去看答案的差異
  • 那 Logistic Regression 呢?是不是也就直接用 Mean Square Error 呢?
  • 其實不能,至於原因我強烈推薦去聽 李弘毅老師 的開放式課程,那邊有詳細的解釋
  • 那這邊要怎麼辦呢?
  • 我們回到 Classification 那邊機率的想法,假設我們去計算 https://chart.googleapis.com/chart?cht=tx&chl=%24data_1%24 被分類成 https://chart.googleapis.com/chart?cht=tx&chl=%24class_1%24 機率是 https://chart.googleapis.com/chart?cht=tx&chl=%24P_%7Bw%2C%20b%7D(C_1%7Cx)%24 那我們 w, b 這個參數好不好就是我們前面提過的 https://chart.googleapis.com/chart?cht=tx&chl=%24L(w%2Cb)%20%3D%20f_%7Bw%2C%20b%7D(x%5E1)f_%7Bw%2C%20b%7D(x%5E2)f_%7Bw%2C%20b%7D(x%5E3)...f_%7Bw%2C%20b%7D(x%5EN)%24
  • 那我們假設最好的 https://chart.googleapis.com/chart?cht=tx&chl=%24w%2C%20b%24 這個參數是 https://chart.googleapis.com/chart?cht=tx&chl=%24w%5E*%2C%20b%5E*%24 ,那最佳的那個機率也會是 https://chart.googleapis.com/chart?cht=tx&chl=%24w%5E*%2C%20b%5E*%20%3D%20%5Carg%20%5Cmax%5Climits_%7Bw%2C%20b%7D%20L(w%2C%20b)%24 ,也就是最大的 https://chart.googleapis.com/chart?cht=tx&chl=%24L(w%2C%20b)%24
  • 那最佳的 https://chart.googleapis.com/chart?cht=tx&chl=%24w%5E*%2C%20b%5E*%20%3D%20%5Carg%20%5Cmax%5Climits_%7Bw%2C%20b%7D%20L(w%2C%20b)%24 其實等同於 https://chart.googleapis.com/chart?cht=tx&chl=%24w%5E*%2C%20b%5E*%20%3D%20%5Carg%20%5Cmin%5Climits_%7Bw%2C%20b%7D%20-%20lnL(w%2C%20b)%24,然後每一項 https://chart.googleapis.com/chart?cht=tx&chl=%24-%20lnL(w%2C%20b)(x)%24 可以寫成 https://chart.googleapis.com/chart?cht=tx&chl=%24-%5Cbegin%7Bbmatrix%7D%5Chat%20y%5C%20lnf(x)%20%2B%20(1%20-%20%5Chat%20y)ln(1%20-%20f(x))%5Cend%7Bbmatrix%7D%24 ,這行式子就是 Cross-entropy loss function
  • 所以到這裡,我們也有 Logistic Regression 的 Loss Function 了,在機器學習三步驟我們只差了一步了,就是 Best Function 了

Find the best function

  • 我們開始微分我們的 cross-entropy loss function,詳細的數學運算我們一樣跳過,結論就是我們一樣用 Gradient Descent 得到了 https://chart.googleapis.com/chart?cht=tx&chl=%24%24w_i%20%5Cleftarrow%20w_i%20-%20%5Ceta%20%5Csum%5Climits_n%20-%20(%5Chat%20y%20-%20f_%7Bw%2C%20b%7D(x%5En))%20x_i%5En%24%24
  • 這邊我們趕緊來看當初 Linear Regression 的 Gradient Descent https://chart.googleapis.com/chart?cht=tx&chl=%24%24w_i%20%5Cleftarrow%20w_i%20-%20%5Ceta%20%5Csum%5Climits_n%20-%20(%5Chat%20y%20-%20f_%7Bw%2C%20b%7D(x%5En))%20x_i%5En%24%24
  • 竟然長的一毛毛一樣樣,唯一的差別就是 Linear Regression 的 https://chart.googleapis.com/chart?cht=tx&chl=%24%5Chat%20y%24https://chart.googleapis.com/chart?cht=tx&chl=%24f_%7Bw%2C%20b%7D(x)%24 是任意實數,而 Logistic Regression 則是介於 0~1 之間的數值
  • 所以到這裡我們就可以發現 Logistic Regression 真的就是基於 Linear Regression 的概念,成功達到 Classification 的方法

每日小結

  • Logistic Regression 真的就是披著 Regression 外皮的分類間諜 XDD,他披著預測知名行分類之實
  • Logistic Regression 和 Linear Regression 最大的差異在於多了一個 Sigmoid Function 去做資料的分類,而選擇 Sigmoid Function 的原因是因為希望資料的判定能夠更有彈性,信心更足
  • 那既然我們發現我們也可以用類 Regression 的概念達到 Classification,那我們明天就來實作 Logistic Regression 試試看...嗎?先賣個關子,明天我們要先處裡一個我們提過的機器學習大前題

上一篇
Day-06 Classification
下一篇
Day-08 比訓練更重要的事情,Dataset
系列文
Deep Learning 從零開始到放棄的 30 天 PyTorch 數字辨識模型31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言