Machine learning學習記錄(二)

2021-09-11 13:05:54 字數 2138 閱讀 3308

經過二十天不到的業餘時間學習,終於完成了ng的machine learning課程。 所以這一篇記錄是ml課程的結束,後面我會繼續參加深度學習課程的學習。

第六周的課程是機器學習實用建議和系統設計,

實用建議:劃分訓練集、驗證集和測試集,務必要注意不要在測試集上驗證。這樣測試集測試出來的指標才有參考意義,否則相當於作弊。另外需要通過這樣的劃分驗證,可以嘗試不同的引數和技術選擇,幫助我們做決定。

系統設計:ng介紹了設計乙個系統的一般性方法,主要內容有:先從乙個最簡單的系統開始-> 通過learning curve的繪製來分析系統需要從哪個方面來改進->引入了precision和recall以及f measure來評定效能(對於skewed class,accuracy不能作為指標,只需要簡單的全部**乙個大部分的場景即可獲得很高的accuracy)。這幾點雖然說是比較基礎但對乙個ml系統的設計來說有很重要的指導意義。

第七周介紹了乙個重要的演算法svm(支援向量機).也稱為large margin演算法,核心思想是讓不同的class之間的margin最大化,其計算是通過向量的距離來做。svm可以應用不同的kernel(核函式),常見的是高斯函式和線性(可以認為沒有)。高斯核函式計算代價較高,適合比如幾千個樣本,小於1000個feature的情況,會有比較好的效能。svm演算法在資料量不是特別大的情況下就可以取得不錯的效果,且訓練較快。神經網路雖然好,但計算代價一般都比較大。

第八周介紹了非監督學習。主要是k-means聚類演算法和pca(主成分分析法)。其中k-means的演算法描述起來非常簡單和優雅,實現也比較容易。但它的主要問題在於比較隨機,不一定可以收斂到乙個比較好的效果。比如實用k-means壓縮,我提供了乙個幾種顏色的圖,聚類出來的效果比較差。 pca的實用性在於它可以用來減少feature的個數且保留大多數的資訊量,主要用在降維(可以到2維或者3維從而實現視覺化)和資料壓縮。pca的實現是通過矩陣svd函式的計算(特徵值和特徵向量),都是呼叫現成的庫來做,編碼比較簡單。

第九周介紹了乙個比較special的case,異常檢測。這是一種介於監督學習和非監督學習之間的一種比較特殊的task,其用來訓練的資料集可以認為是unlabeled,但評價用的驗證集和測試集需要有labeled data。其思想是通過假設所有的feature都符合高斯分布(或者多維高斯分布,這樣可以利用維度的關聯資訊),通過訓練集的資料獲取到對乙個資料概率的評價。從而最終實現了對新資料的評估(是否是異常的)。這種場景是我們只能獲取到有限的positive樣例的情況,我們無法從有限的例子中學到所有可能的異常的特徵,但我們可以通過分布的概率來推斷新的樣例可能大概率是有問題的。它和監督學習的區分在於我們的正例樣本是否足夠,新出現的例子是否有可能從歷史中習得。

第十周介紹了工業的大資料場景下,我們的方法如何改進。比如梯度下降法,在實際操作中如果一下子批量幾百萬的資料,那麼記憶體都扛不住。我們改進的演算法是隨機梯度下降和小批量梯度下降。這很容易理解,批量梯度的n=1然後不停的迭代就是隨機梯度下降;n=m就是我們原始的演算法。我們總可以先把資料隨機化,然後再進行梯度下降的操作,我認為是乙個比較好的實踐方法。此外,ng還介紹了map reduce.利用map reduce可以進行分布式的任務,對於任何大資料場景來說這都是乙個非常普遍和重要的需求。另外有一種流式的場景,比如taobao這樣的公司,每天都會產生大量的資料。我們需要不停的用新資料去餵養我們的模型,一次訓練以後就丟棄資料。模型慢慢的被改變,並且從新資料中學習到新的特徵,因此理論上你的model也變的流行,你利用了大量的新資料。

第十一週是最後一周,ng介紹了乙個ocr的例子。從這個例子中,我們學到的是把任務分解成一系列有順序的子任務,組成了pipeline。 ng介紹了乙個天花板分析方法,非常的有用和有啟發性。在我們構建乙個簡單的pipeline之後我們需要決定如何分配接下來的工作重心。這樣,ceiling analyze方法可以幫助我們。具體是這樣的:我們從pipeline的前面到後面分別用100/100成功率的輸入去對實際結果進行替代,這樣我們就可以得到每一步的誤差。通過分析誤差所佔的比重,我們可以做出很明智的決策,而不是只靠拍腦袋了。此外,ng還介紹了人工造資料(在現有資料上加工)、眾包資料、自己計算時間然後標記資料的方法。如果能把資料量大10倍,很多時候結果會有大的提公升。的ocr例子中,文字的識別是通過一種叫做 sliding windows的技術來實現。就是乙個小窗在大中不停的移動,對每一次識別都進行評估。從這個方法我認識到相關的任務是非常expensive的,哪怕僅僅是識別,因為可能一張大圖同樣的操作會迭代幾千次。我們當然可以利用gpu,但代價同樣不菲。

Machine Learning 梯度下降

對於lost function利用梯度下降的方法實現引數調整,梯度下降在每一次迭代的過程中需要全部樣本參與,而隨機梯度法或增量梯度法在迭代中利用樣本中的乙個樣本更新引數。梯度下降達到全域性最優 include include using namespace std define maxiter 22...

安裝Machine Learning環境

公升級python版本到3.5以上。詳情參考linux公升級python版本 步驟1中也包含了安裝pip 第一批ml環境 pip install tensorflow pip install keras pip install beautifulsoup4 pip install lxml pip ...

機器學習(Machine Learning)

最近開始接觸機器學習,簡稱ml。ml 可以這樣理解,從一堆資料中提煉出特徵值。首先,我們需要在計算機中儲存歷史的資料。接著,我們將這些 資料通過機器學習演算法進行處理,這個過程在機器學習中叫做 訓練 處理的結果可以被我們用來對新的資料進行 這個結果一般稱之為 模型 對新資料 的 過程在機器學習中叫做...