logo
Loading...

Day59 _ 主成分分析(Principal Component Analysis)在手寫數字資料集的應用 - Cupoy

Day59的作業是以 sklearn 的 digits 手寫數字資料為例,讓同學嘗試將圖片資料以 P...

day59,pca,digit recongnition

Day59 _ 主成分分析(Principal Component Analysis)在手寫數字資料集的應用

2020/08/10 下午 11:57
機器學習共學討論版
張天恩
觀看數:71
回答數:3
收藏數:0
day59
pca
digit recongnition

Day59的作業是以 sklearn 的 digits 手寫數字資料為例,讓同學嘗試將圖片資料以 PCA 降維度,藉以找到手寫資料的主成分,方便後續代入進行分析。我對於原始資料的理解是,每一筆資料都是 64 維(像素),每一個像素數字大小代表深淺,因此將資料 reshape 成 8x8 的大小後使用 plt.imshow 繪出就可以重現手寫的樣子(如下圖)

看完原始資料的樣子後,我將所有資料從 64 維降成 2 維,並且繪製散佈圖,觀察到三種數字(0, 1, 2)有明顯的分開,看起來找到的主成分確實有效(如下圖)

然而我還是對於如何辨識手寫數字有點疑惑,人眼可以辨識是因為我們將資料經過排列整理,然而電腦面對的是一整串數字,很難直觀的理解機器能學到的原因。我想到其中一個原因是:可能因為資料集的大小是固定的,就像是都用一樣大小的紙張寫數字,每種數字基本上都在差不多的位置上,0 中間一定是空的;1 中間一排一定有值,所以機器是依照數值出現的位置來判斷是哪個數字。


如果上述推論是對的,那是否代表這樣的方法只適用於相同大小且邊界固定的手寫資料,如果今天是在一張很大的紙上,每次在隨機的位置寫數字且不填滿,可能就沒辦法用這些方法來辨別了?

回答列表

  • 2020/08/11 下午 11:42
    楊人豪
    贊同數:1
    不贊同數:0
    留言數:0

    感覺這個推論是有可能的,不過這個問題可以透過捲積神經網路(CNN)來克服,由於CNN是訓練濾鏡,訓練好的濾鏡用來掃描整張圖案來尋找物體,有一篇有趣的論文可以給你看看CNN學到什麼 Visualizing and Understanding Convolutional Networks

  • 2020/08/13 下午 11:50
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    嗨,張天恩


    我覺得這是一個好問題,也覺得你嘗試跟推論的過程蠻有趣的。我覺得大致上來說是合理的,不過可能還是要看資料的分佈跟數量,還是要看多空白會不會導致資料分佈而無法判斷。


    如果這個回答對你有幫助請主動點選「有幫助」或「最佳解答」的按鈕,也可以追蹤我的GITHUB 帳號。若還有問題的話,也歡迎再開一個新的問題繼續發問,或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃另外我目前有舉辦一個社群活動:學員限定!CUPOY 馬拉松線上小聚 👨🏻‍💻👨🏻‍💻,歡迎一起來玩玩!

  • 2020/08/14 上午 00:17
    Jeffrey
    贊同數:1
    不贊同數:0
    留言數:0

    基本上, 你的推論是合理的, 不過不是絕對位置, 而是相對位置. 所以: 

    1. 每種數字基本上都在差不多的位置上,0 中間一定是空的;1 中間一排一定有值,--> 對

    2.  所以機器是依照數值出現的位置來判斷是哪個數字 -->  錯

    3. 只適用於相同大小且邊界固定的手寫資料 --> 錯

    4. 隨機的位置寫數字且不填滿,可能就沒辦法用這些方法來辨別了 --> 是可以的