Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
learning511 authored May 22, 2019
1 parent 9443391 commit fc8b688
Showing 1 changed file with 17 additions and 28 deletions.
45 changes: 17 additions & 28 deletions 李宏毅机器学习-作业/week4/README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,42 @@

# Homework 2
# Homework 4


## Purpose: Binary Classification

本次作業是需要從給定的個人資訊,預測此人的年收入是否大於50K
本次作业是需要从给定的个人资讯,预测此人的年收入是否大于50K

## Data 簡介
## Data 简介

* 本次作業使用 [ADULT dataset](https://archive.ics.uci.edu/ml/datasets/Adult)
* 本次作业使用 [ADULT dataset](https://archive.ics.uci.edu/ml/datasets/Adult)

Barry Becker從1994年的人口普查數據庫中進行了提取
((AGE> 16)&&(AGI> 100)&&(AFNLWGT> 1)&&(HRSWK> 0))提取了一組合理清潔的記錄
Barry Becker从1994年的人口普查数据库中进行了提取
((AGE> 16)&&(AGI> 100)&&(AFNLWGT> 1)&&(HRSWK> 0))提取了一组合理清洁的记录

* 共有32561筆訓練資料,16281筆測試資料,其中資料維度為106
* 共有32561笔训练资料,16281笔测试资料,其中资料维度为106


## Summary 總結
## Summary 总结

本次作業執行 generative model 和 discriminative model。
本次作业执行 generative model 和 discriminative model。

- generative model 的困難點在於要假設資料的分配和變數之間的關係,如果資料越符假設的分配效果也就越好
- discriminative model 的難點則是在於如何選擇超參數
- generative model 的困难点在于要假设资料的分配和变量之间的关系,如果资料越符合假设的分配效果也就越好
- discriminative model 的难点则是在于如何选择超参数

### Logistic Regression

一般對於二元分類最常用的方法為邏輯式回歸(Logistic Regression),其背後有一些統計的推導過程,在此就不多做說明,簡單說邏輯式回歸跟一般線性回歸差別只在於計算線性回歸之後再利用sigmoid函數將數值轉換到0~1之間,另外將轉換過的的數值透過門檻值來區分類別,而門檻值得設置可以根據資料的不同來做設計,常用門檻值為0.5。
一般对于二元分类最常用的方法为逻辑式回归(Logistic Regression),其背后有一些统计的推导过程,在此就不多做说明,简单说逻辑式回归跟一般线性回归差别只在于计算线性回归之后再利用sigmoid函数将数值转换到0~1之间,另外将转换过的的数值透过门槛值来区分类别,而门槛值得设置可以根据资料的不同来做设计,常用门槛值为0.5。

在這作業我們將所有的訓練資料中的20%當成驗證集,藉由另外80%的資料集來訓練參數。並使用 Mini-batch Gradient Descent 演算法來訓練邏輯式回歸的參數W和B,門檻值則用最一般的方式設置0.5。由下圖可以清楚的看出隨著疊代次數越來越多,不論是訓練集或是驗證集的 Cross entropy 都越來越小,且趨近於一致。這也就說明了模型參數學習得不錯。最後在測試集的預測精準度為85%。
在这作业我们将所有的训练资料中的20%当成验证集,由另外80%的资料集来训练参数。并使用 Mini-batch Gradient Descent 演算法来训练逻辑式回归的参数W和B,门槛值则用最一般的方式设置0.5。由下图可以清楚的看出随著叠代次数越来越多,不论是训练集或是验证集的 Cross entropy 都越来越小,且趋近于一致。这也就说明了模型参数学习得不错。最后在测试集的预测精准度为85%。

![](02-Output/TrainProcess.png)

### Probabilstic Generative Model

由於我們的目標是將資料進行二元分類,可以假設年收入大於50(y=1)<img src="https://latex.codecogs.com/gif.latex?C_{1}" title="C_{1}" />類別和年收入小於50(y=0)<img src="https://latex.codecogs.com/gif.latex?C_{2}" title="C_{2}" />類別且各為106維的常態分配,且每個特徵是獨立的,其中變異數矩陣共用,最後藉由最大估計法直接計算參數<img src="https://latex.codecogs.com/gif.latex?\mu&space;_{1},&space;\mu&space;_{2},&space;\Sigma" title="\mu _{1}, \mu _{2}, \Sigma" />的最佳解。
由于我们的目标是将资料进行二元分类,可以假设年收入大于50(y=1)<img src="https://latex.codecogs.com/gif.latex?C_{1}" title="C_{1}" />类别和年收入小于50(y=0)<img src="https://latex.codecogs.com/gif.latex?C_{2}" title="C_{2}" />类别且各为106维的常态分配,且每个特征是独立的,其中变异数矩阵共用,最后由最大估计法直接计算参数<img src="https://latex.codecogs.com/gif.latex?\mu&space;_{1},&space;\mu&space;_{2},&space;\Sigma" title="\mu _{1}, \mu _{2}, \Sigma" />的最佳解。

擁有了模型的參數,我們藉由機率的方式來決定資料是屬於哪個類別,也就是說,分別計算資料來自於第一類的機率<img src="https://latex.codecogs.com/gif.latex?P(C_{1})" title="P(C_{1})" />和第二類的機率<img src="https://latex.codecogs.com/gif.latex?P\left&space;(C_{2}&space;\right&space;)" title="P\left (C_{2} \right )" />以及資料在第一類的機率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{1})" title="P(x\mid C_{1})" />和第二類的機率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{2})" title="P(x\mid C_{2})" />,最後藉由上述這些機率去計算資料屬於第一類的機率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{1})=&space;\frac{P(x\mid&space;C_{1})P(C_{1})}{P(x\mid&space;C_{1})P(C_{1})&plus;P(x\mid&space;C_{2})P(C_{2})}" title="P(x\mid C_{1})= \frac{P(x\mid C_{1})P(C_{1})}{P(x\mid C_{1})P(C_{1})+P(x\mid C_{2})P(C_{2})}" />和第二類的機率<img src="https://latex.codecogs.com/gif.latex?1-P(x\mid&space;C_{1})" title="1-P(x\mid C_{1})" />,最後藉此機率決定資料類別
拥有了模型的参数,我们藉由机率的方式来决定资料是属于哪个类别,也就是说,分别计算资料来自于第一类的机率<img src="https://latex.codecogs.com/gif.latex?P(C_{1})" title="P(C_{1})" />和第二类的机率<img src="https://latex.codecogs.com/gif.latex?P\left&space;(C_{2}&space;\right&space;)" title="P\left (C_{2} \right )" />以及资料在第一类的机率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{1})" title="P(x\mid C_{1})" />和第二类的机率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{2})" title="P(x\mid C_{2})" />,最后藉由上述这些机率去计算资料属于第一类的机率<img src="https://latex.codecogs.com/gif.latex?P(x\mid&space;C_{1})=&space;\frac{P(x\mid&space;C_{1})P(C_{1})}{P(x\mid&space;C_{1})P(C_{1})&plus;P(x\mid&space;C_{2})P(C_{2})}" title="P(x\mid C_{1})= \frac{P(x\mid C_{1})P(C_{1})}{P(x\mid C_{1})P(C_{1})+P(x\mid C_{2})P(C_{2})}" />和第二类的机率<img src="https://latex.codecogs.com/gif.latex?1-P(x\mid&space;C_{1})" title="1-P(x\mid C_{1})" />,最后藉此机率决定资料类别

在此作業我們假設資料來自於常態分配,主要的原因還是因為數學推導相對而言比較簡單加上常態分配相對而言比較直觀,當然要假設其他機率分配也是可行的,例如像是0和1的類別資料,假設百努力分配相對於常態分配就會比較合理,另外假設每個特徵是獨立的也就是使用 Naive Bayes Classifier。
在此作业我们假设资料来自于常态分配,主要的原因还是因为数学推导相对而言比较简单加上常态分配相对而言比较直观,当然要假设其他机率分配也是可行的,例如像是0和1的类别资料,假设百努力分配相对于常态分配就会比较合理,另外假设每个特徵是独立的也就是使用 Naive Bayes Classifier。

在這 case 底下我們的預測精準度大約76%,相對於 discriminative model 的 Logistic Regression 略差一些。另外我們做了很多的假設,像是資料來自於兩個常態分配且變異數矩陣使用相同的參數,以及特徵之間是獨立,但可能這些資料並不符合這些假設,這也是這個模型的預測率相對於 Logistic Regression 差的原因。


## Reference

* [原始課程作業說明](https://docs.google.com/presentation/d/12wP13zwBWSmmYq4DufsxiMjmXociERW7VnjPWscXZO8/edit#slide=id.g1ef9a0916d_0_0)

* [Naive Bayes Classifier](https://en.wikipedia.org/wiki/Naive_Bayes_classifier)

* [Probabilistic Generative Model](http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Classification.mp4)

* [Logistic Regression](http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/LR.mp4)
在这 case 底下我们的预测精准度大约76%,相对于 discriminative model 的 Logistic Regression 略差一些。另外我们做了很多的假设,像是资料来自于两个常态分配且变异数矩阵使用相同的参数,以及特徵之间是独立,但可能这些资料并不符合这些假设,这也是这个模型的预测率相对于 Logistic Regression 差的原因。

0 comments on commit fc8b688

Please sign in to comment.