fbpx
Python初學程式機器學習

Python機器學習EP. 5 訓練跟測試的過程

哈囉,大家好,我是Teresa,上週的筆記提到機器學習似乎不可行,但當統計上的資料還有演算法的選擇是「有限」個時,機器學習還是可行的。 那到底為什麼機器學習可以學到東西?當假說函式集合是無限大的時候,到底會發生什麼事情? 複習機器學習的流程圖,一開始從資料出發,有一個機器學習的演算法,透過資料和它所看到的假說集合,從裡面選擇一個最終的假說函式。 上次加了一個假設是:我們訓練的資料跟最後測試假說的方法都來自同一個分配。 Ein是指在資料上假說的表現;Eout是指未來我們還沒有看過的資料在假說上的表現,我們用同一個分配來描述。 一、假說函數不多的情況 假如假說函式集合不多、資料量又夠多,不管演算法怎麼選擇假說,Ein跟Eout兩者的表現都會長得很像。如果都長得很像,那我們當然要選擇一個Ein最低的,很接近0。因為如果Ein很接近0,那個Eout很大概率機率會很接近0,這樣就達到了學習的效果。 從上述的說明中,機器學習可以分成兩個步驟: 第一個步驟是訓練,訓練是指演算法在跑的時候,我們要確保資料上的表現(Ein)很接近0。 但訓練還不夠,我們要確保這個假說函式在測試未來未知的資料上,Ein跟Eout也很接近。 二、回顧一下,前四集筆記中我們學到的概念: Ep. 1:提到機器學習想做的事情是有個未知的目標函式,希望演算法能找到假說函式,能和目標函式非常接近,錯誤率要越小越好,(也就是Eout要很接近0)。 Ep. 2:希望機器學習在我們已知的資料上做的盡量好就好,(也就是Ein要很接近0)。 Ep. 3:機器學習是在很特定的設定下做,像是批次的資料、監督式學習、二元分類。 Ep. 4:在假說函式有限個的狀況下,Ein跟Eout會很接近。 機器學習實際上拆成兩個問題: 第一個問題是Ein跟Eout會不會很接近? 第二個問題是如果第一個問題成立,怎麼讓Ein越小越好。 三、假說函式集合有限的數量 那在假說函式集合有限的情況下,這個有限的數量(M)是多少,跟這兩個問題有什麼關係? 這個數量M有兩種可能性,一種是相對小的數字,另一種是相對大的數字。…
Teresa
January 13, 2021
Python初學程式機器學習

Python機器學習EP. 4 機器學習是不是可行的呢?

前言 大家好,我是Teresa,這集的學習筆記是要讓大家思考機器學習到底可不可行?那就讓我們開始吧! 先來做個小測驗吧!若給你以下六張圖,它們分別被歸類為-1或+1,若再給你第七張圖,請你觀察前六張圖片來給定一個規則,你會將第七張圖歸類為+1或-1呢? 若你的答案是+1,其實答案是+1,因為前三張圖片的最左上角都是黑色的,後三張圖片的左上角是白色的,因此這題的規則是左上角的格子若是黑色就是-1,若是白色就是+1。回到第七張圖,它左上角是黑色的,因此答案是-1。 若你的答案是 -1,其實答案是+1,因為前三張圖片沒有對稱,後三張圖都是對稱的,因此這題的規則是有對稱的為+1,沒有對稱的為-1。回到第七張圖,它是有對稱的圖形,因此答案是+1。 其實還有更多隱藏的規則。發現了嗎?不同人所看到的規則都不同,因此不管你說的答案是哪個,都可能是錯誤的。這樣看起來機器學習是不是不可行呢? 如果從數學的角度來看另一個例子,若有3個位置而每個位置都只能有0或1,給定五筆資料,那你會怎麼決定這題的函式g呢? 輸入 輸出 0, 0, 0 +1 0, 0, 1 -1 0, 1, 0 -1 0, 1, 1…
Teresa
January 9, 2021
AlgorithmPython初學程式機器學習

Python機器學習EP. 2 感知器perceptron learning algorithm

哈囉,各位好,我是Teresa,本集的重點是二元分類問題,會說明感知器以及PLA演算法。以下先讓我們回顧上集說了什麼吧~ EP.1回顧 在機器學習中,為了找到一個最適合的假說,存在著演算法(Learning Algorithm A)和假說集合(Hypothesis Set H)。演算法A 從大量資料集合D 進行觀察,接著從假說集合H 中挑選一個最符合我們期望的函式g。 上集提到的例子是如果銀行想要做出一個機器學習來判斷:當客戶申請核發信用卡時,銀行應不應該發卡給該客戶。由這個例子我們可以清楚的知道此機器學習需要提供的答案只有兩種:發卡或是不發卡。這類型的問題我們可以稱為二元分類問題。從客戶提交的申請資料x中經過函式g,來得到y(發卡)或是n(不發卡)的結果。 完整筆記可點此連結 感知器假設集(Perceptron Hypothesis Set) 銀行從過往的經驗中掌握了客戶的屬性資料,如:性別、年齡、職業、薪資、信用狀況......。這些資料都可以轉換成以下式子。 銀行也能針對這些屬性資料進行重要性的排序,給予權重,例如:薪資權重給2,信用狀況如是負債權重給-1等等。 銀行會設立一個門檻值T(threshold),當上述條件的總分大於門檻值,才會發卡給客戶,反之,則不發卡。雖然有機率總分會剛好等於門檻值,但機率非常小,可忽略不管。 為了方便識別,我們將輸出的結果y(發卡、不發卡、忽略不計)轉為符號表示,這樣的符號在機器學習裡被稱為label。 從算式中,我們很難直接知道畫面看起來是什麼樣子,如果應用在二維平面上,會如下圖,有一條直線將畫面切割成兩個平面,而資料中的點會落在線的兩側,一側為正;一側為負。而機器學習所期望的目標便是找出一條直線,能將不同的label正確劃分在兩個平面上。這樣的感知器便被稱作二元線性分類器(Linear Binary Classifiers)。 (圖片來源:課程截圖) 感知器學習演算法(PLA) 感知器中的所有集合H,代表了平面上許多不同條的直線。…
Teresa
December 29, 2020
Python初學程式機器學習

Python機器學習EP. 3 機器學習的不同問題

哈囉,大家好,我是Teresa,這集的重點會在機器學習所要解決的問題依照不同的面向分類有哪些種類。如下圖,依照機器學習的不同問題,大致可以區分成四種面向:輸出的空間、資料的標記種類、輸入的資料、給電腦資料的方式,依照四種面向來一一詳述吧! 一、根據輸出的空間不同 二元分類 Binary Classification: 二元分類的問題其實就像是非題,我們餵給機器的資料,經過假說的函式後僅會輸出是或否的兩種結果,以圖來表示的話便是將平面區分為兩個平面以表示是或否。 二元分類在機器學習當中是很基本、很核心的問題。是非題的應用相當廣泛,之後理論推導與實際的演算法都會由二元分類出發。 二元分類的應用如下: 信用卡核發(回顧上集) 垃圾郵件分類->是垃圾郵件或不是垃圾郵件 醫療上的診斷->生病或未生病 預算的投入->獲益或不獲益 答題->正確或不正確 多元分類 Multi-class classification: 輸出從原本二元分類中的是或否兩種結果,變為有多種結果,近似於單選題。多個選項經過假說的函式後會輸出其中的一種結果,常用在視覺或聽覺辨識。 多元分類的應用如下: 銅板分類(1元、5元、10元、50元) 數字辨識->郵遞區號辨識(0-9) 圖片辨識->動物、水果分類 郵件分類->垃圾郵件、促銷活動、重要的郵件等 迴歸分析 Regression: 輸出的標籤不同於其它分類問題為零散的值,迴歸問題的輸出值會是一個連續的範圍。…
Teresa
December 28, 2020
Python初學程式機器學習

Python機器學習EP. 1 初步認識機器學習

前言 大家好,我是Teresa,前陣子因為一場線上小聚,讓我開始正式接觸機器學習,參與前和參與後都順手寫了一篇文章,連結在此附上,在開始閱讀此篇之前,可以先看看你有沒有理解文章中提到的概念。 機器學習從零開始-簡單認識基礎概念 | Teresa初學者筆記 機器學習的介紹與應用-Python主題小聚直播回顧 總之,在這場線上小聚過後,Teresa就決定要更深入的接觸機器學習,於是在Coursera上找了一堂基礎的機器學習線上課程,之後的筆記都會環繞在這堂課上,那就讓我們開始吧! 每一個機器學習的使用者應該要知道什麼? 哲學上機器學習的思想 數學上的工具 演算法的設計 它們的使用:包含什麼時候可以使用、為什麼可以使用、如何使用、如何會變得更好 什麼時候可以使用機器學習? 在了解什麼時候可以使用機器學習之前,不妨先思考看看什麼是「學習」? 以人類的角度,學習會從「觀察」出發(通過我們的五感)進而學習「轉化」成一項技巧 因此機器學習便是用電腦做為「學習主體」來「模擬」人類學習的過程 Note:觀察(資料)->機器學習(演算法)->技巧 技巧指的是「增進」某一方面的表現。 結論:機器學習的過程是從資料出發經過電腦的計算最終得到某種表現的增進。 若你想達成上述的目的,便可以使用機器學習。 為什麼要使用機器學習? 當我們遇到一個問題想要用程式解決的時候,有些問題單靠人力試圖將規則一項一項的條列出來是非常困難的。 舉例來說:如何辨識一棵樹?我們很難用語句完整地把每一項樹的特徵描述出來。 因此,我們讓機器透過「觀察」來分析辨識。 機器學習的應用…
Teresa
December 2, 2020
Python

機器學習的介紹與應用-Python主題小聚直播回顧

哈囉,大家好,我是Teresa,10/29的晚上參加了機器學習的主題小聚,可真是收穫滿滿,講師說話非常有邏輯架構,在此感謝蝦皮的兩位工程師 Kevin和Vincent 蒞臨快樂學程式的主題小聚直播活動來和各位觀眾互動,更感謝有熱情的觀眾支持,讓這次的直播能圓滿落幕。 此篇會做主題小聚的重點摘要與回顧,如果喜歡、想追蹤我更多筆記,可以加入程式小白的 JS Python 學習群的社團。社團中也會有其他學習夥伴和你一起討論、交流、互動哦! 什麼是Machine Learning? 給機器或電腦資料並搭配相對應的看法,它能從過去人類給的資料中學習模式甚至預測,以做出比人類更好的行為或是技術。它的趨勢從2014年開始飆升,都要歸功於硬體技術的發展,讓過去沒辦法計算的部分都可以開始計算。 資料分析師:整理需求端的需求,並從資料庫中抓資料來分析 資料科學:用數學模型把分析完的結果做預測或自動化 ML:作資料的安排或API給後端或前端工程師取用 Machine Learning跟Deep Learning的差異: Machine Learning:人工智慧的一種方法 Deep Learning:指的是ML中的一種類型,如:人類神經元的模型 Machine Learning的三大主角 所有的機器學習都有共同目標:找一個對的 Y =…
Teresa
November 11, 2020
Python初學程式程式新手

Python初學總整理 第9講:Numpy函式庫

嗨,大家好,我是Teresa,這集想來和大家介紹在資料分析、機器學習領域中很經典、必定會用到的函式庫-Numpy,目的主要是做數據的處理,但內容不會涉及統計的理論和延伸,只會做一些基礎的功能介紹和簡易的實作程式碼提供給大家。 什麼是Numpy? Numpy是一個免費且開源的Python函式庫,專門用來處理陣列,由Travis Oliphant於2005年創建,但Numpy的前身是Numeric,是由Jim Hugunin和其他協作者共同開發,Numpy結合另一個同性質程式庫Numarray的特色,並加入了其他擴充功能。原始碼在這個網站中:https://github.com/numpy/numpy 為什麼使用Numpy? 在Python中,我們也有list來存放清單,但其實處理速度很慢,Numpy處理陣列的速度比list快50倍。原因是Numpy會將資料儲存在記憶體中的一個連續位置,可以高效率的找到他們的位置、並使用資料。 安裝Numpy pip install numpy import numpy #測試程式碼 arr = numpy.array() print(arr) #如果覺得每次都要輸入numpy很麻煩,在匯入的時候可以輸入: import numpy as np arr =…
Teresa
November 11, 2020
Python初學程式程式新手

Python初學總整理 第8講:Matplotlib套件

嗨~各位好,我是Teresa,這集想要和大家介紹Python中實用的套件-Matplotlib,原因是如果心中有個想法想要去實踐,雖然有資料,但需要說服夥伴的話,將你手中擁有的數據轉為圖表是很重要的,這樣一來,你說的話有說服力,觀看者也能簡單易懂。那我們就開始吧! 什麼是Matplotlib? Matplotllib是Python的視覺化套件,可將資料視覺化,也可以稱做繪圖庫,可以和NumPy一起使用。它是由約翰.亨利所創造的,不但開源,且各個平台間也具相容性。Matplotllib的代碼庫在此 github。 如何使用Matplotlib? 要開始使用Matplotlib,就如同其他模組和套件一般,要先安裝並匯入。 pip install matplotlib #安裝 Matplotlib import matplotlib import matplotlib.pyplot as plt #匯入Pyplot 套件並命名為plt 安裝成功後就可以畫圖囉! 繪製 x 和 y點 import…
Teresa
November 11, 2020
Python初學程式程式新手

Python初學總整理 第6講:爬蟲應用(下)

前言 哈囉,大家好,我是Teresa~爬蟲小專題的進度是上一集成功將Facebook的貼文載入,這集主軸就在蒐集貼文中有關於成效的資訊了。 其實在Google上搜尋相同的爬蟲目標,在各個網站中有很多程式碼可以參考,但Teresa真的是各種嘗試,卡了很多bug,挫折重重😰,還好後來隊友有幫助我修改程式碼,但還是希望總有一天能自己成功完成一個小專題。 上集回顧...... 爬蟲目標 抓取Facebook的貼文,展開貼文中所有留言與分享、表情符號數量,了解貼文的成效 達成方法 一、策略拆解 假設我想要手動取得這些資訊的話,會做出的行為有: 打開 Chrome 瀏覽器 開啟 Facebook 頁面並登入 點擊想分析的 Facebook 社團或粉絲專頁 將該社團或粉絲專頁的貼文載入 將貼文的留言展開 蒐集貼文的資訊(按讚數、分享次數以及留言數) 統整資訊 如何開啟Chrome瀏覽器、登入Facebook頁面、將貼文載入等前四步驟請參見Python初學者筆記EP. 5_爬蟲應用(上) 本集開始!…
Teresa
October 21, 2020
Python初學程式成長日誌機器學習

機器學習從零開始-簡單認識基礎概念 | Teresa初學者筆記

前言 嗨~我是Teresa,會有這篇筆記的產出是因為 10/29 會有一場蝦皮直播的線上小聚,主題是機器學習,這是 Teresa在正式開始學習Python前不斷重複聽到的應用領域之一,雖然印象很深,但對於這個熱門詞彙可以說是非常陌生,因此在聽蝦皮專家的分享前,想先對機器學習等相關知識架構先做一點基本功課。 活動資訊:https://pse.is/vk4jv 常見三大詞彙之間的關係 圖片來源:技術論壇 機器學習一詞常和人工智慧、深度學習一同出現甚至是混為一談,那三者之間的關係是什麼呢? 如果用一句話來解釋我想會是:「藉由深度學習等演算法技術可以建構出機器學習的手段以達到人工智慧的目的。」 什麼是機器學習Machine Learning? 機器學習通常可以這樣定義:「透過從過往的資料和經驗中學習並找到其運行規則,最後達到人工智慧的方法。」 白話來說機器學習是一種達到人工智慧的手段。透過程式讓電腦能夠從大量資料中學習到一個模式並讓它能對未接收過的資料做預判。 機器學習的根據? 從定義來看,機器學習需要很多過往的資料和經驗,大量資料也就是現在很熱門的話題之一:大數據。 很多時候光靠人力是看不出數據之間有什麼關聯性,數據中可能包含各種現象、事實與數字,但這些事實與數字是不需要提前被整理好的。而這些數據如果被輕易放掉是很可惜的,因此必須將數據轉為資料。 資料是能夠被「客觀」運算的最小單位,可用來作推論與計算。將資料有系統、有邏輯的整理過後就成為資訊,而資訊最後會被轉化成知識。這樣的過程可以被簡單分為五個階段:擷取資料、分析資料、洞察資訊、理解資訊、做決策(知識)。 大數據有4V的特性: 大量Volume:數據量越大,經過轉換所得出的模式越有根據,就如同做實驗時,樣本數越大,在相同的信賴區間下,可信度越高。 快速Variety:數據量大,且蒐集的資訊不斷的被更新,如果處理資料的速度不夠快,所得出的知識也會是過時的。 多樣Velocity:資料的種類是多樣的,可能包含基本資料、數據格式等等。 真實Veracity:不論你所用的技術多先進、過程做得再嚴謹,如果一開始的數據本身就不可信,那做出來的機器學習與得到的人工智慧都是空談,因此資料的真實(確)性是至關重要的。 從大數據演進到人工智慧,可以套用到狀況覺察理論 該理論的五大階段是:察覺→理解→預測→決策→行動(執行)…
Teresa
October 20, 2020