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初學者筆記EP. 8_函式庫介紹-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初學者筆記EP. 7_套件介紹-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
Podcast 系列初學程式小白學程式程式新手

Podcast JS 特輯 #1|魔鬼藏在細節裡 — 你真的了解變數嗎?

https://open.spotify.com/episode/6qzhzsD65TWVHNc10jbNhC 變數的概念好簡單? 的確,真的不難,但有非常多概念關乎到 Javascript 基本功的扎實度,這也是身為初學者必須注意和掌握的地方 這集 Podcast 會和大家聊的是 JS 變數的基本邏輯,包括定義、指派等等,更會討論到雙重指派和 hoisting 的情況下會產生哪些奇特的狀況,當然我們不免會提到的是 JS 身為動態型別語言的特性&原理和 hoisting 的背後隱藏邏輯~    其他針對變數定義上的建議上相對而言與定義上的規定同等重要,譬如說怎麼樣才是好的變數命名法和怎麼樣才符合 JS 中變數的定義標準等等都是直得留意的地方。另外,最後也和大家提到 ES 6 中 let 和…
iris
November 9, 2020
Podcast 系列初學程式小白學程式科技新知

Podcast #15|全美最狂資料研究公司 Gartner 的 2021 科技宣言

https://open.firstory.me/embed/story/ckh7803sd7yz10878y12dtifi 萬眾矚目的 Gartner 預測又出來了!不知道大家有沒有第一時間接收到這個科技消息,如果沒有也沒關係~ 小白和小白學長用一集的時間把 2025 之前需要用到的核心技術全部轉交給你   本集 Podcast 會粗略分為 4 個部分分享,分別是「以人為本 (People Centricity)」、「雲端化」、「安全問題」和「自動化」,其中我們也會針對 IoB (行為聯網)、TX 全面體驗、分佈式雲 (distributed cloud)、隨處運營、網路安全 (cypersecurity)、隱私增強運、超自動化 (hyperautomation) 和 AI 工程做分別簡單但實用&白話的探討,自詡身為站在時代和科技尖峰的朋友們必須要理解並熟悉這些看似生硬的專有名詞,這些知識一定會在你意想不到時派上用場(和朋友炫一下也是不錯啦~)…
iris
November 8, 2020
Podcast 系列初學程式小白學程式科技新知

Podcast #14: 每個程式語言都受用的神邏輯

https://open.firstory.me/embed/story/ckh4wenwe10eq08915tvzb4pr 如果你問我,邏輯可以用來做什麼? 我會毫不猶豫地和你說,邏輯可以征服全世界。掌握邏輯不僅可以清楚表達、免於被政治人物與新聞媒體誤導、方便與人辯論挑人語病(誤😝),還可以拿來寫程式呢😎  那就話不多說進入我們的 Podcast 節目聽聽吧!   本集的程式超級白將圍繞在「邏輯」和大家分享和討論 🤩,在此和大家預告節目中會提及的內容,「基本邏輯:若 P 則 Q ;若非 Q 則非 P」、「充分&必要條件之別」、「所有程式誒言共通 syntax:條件式 (if-else-elseif)、迴圈」、「淺談語法糖」🤩   Food for Thought: 大家不妨思考看看你正在學習的程式語言有哪些核心概念,而那些概念與生活中邏輯的加插點在哪?🙂 (也許多層面的思考會激盪出你的程式腦和暢通思路)  …
iris
November 8, 2020