Why
- 說到機器學習彬向,前段時間的AlphaGo把它推向了輿論的高峰,這項技術也是一直被看好的未來趨勢所在攻冷。各項領域也是在摩拳擦掌娃胆,想通過與AI的結合提升自己的核心競爭力。
- 互聯(lián)網(wǎng)金融領域也毫不例外等曼,對于金融的本質——風控更是如此缕棵。當然目前也有很多標榜自己為FinTech的公司也在借機炒概念,也有很多機器學習的負面消息涉兽,比如理想和現(xiàn)實還存在很大的差距等等招驴。不過技術無所謂利弊,問題在于人的使用枷畏,如何將AI與風控相結合并發(fā)揮出其積極作用也一直是在探索的問題别厘。
- 目前自己正在負責風控技術這塊,一直在學習拥诡、實踐和探索如何通過技術手段來提高風控效率触趴,畢竟作為技術人來說,只是支撐好業(yè)務并沒有什么成就感而言渴肉,能驅動并且引領業(yè)務提升整個業(yè)務效率才是make a diffrence冗懦,才能對得起FinTech這個詞。當然在沒有特別大的數(shù)據(jù)支撐的前提下仇祭,機器學習可能并不會很好的發(fā)揮其作用披蕉。在這之前有很多要做的事情,不過既然對此領域已經(jīng)產(chǎn)生了興趣乌奇,自己還會在閑暇時間趁熱打鐵一直堅持學習下去没讲。
How
- 初識機器學習,相信很多人都是推薦Andrew在Coursera上的《機器學習》課程礁苗。我也毫不例外的加入了此陣營爬凑。吳老師(Andrew中文吳恩達,這里尊稱吳老師)是人工智能領域公認的大師试伙,大師就是能把一個非常復雜的概念深入淺出的描述的非常清晰嘁信,所以這里我也非常推薦這門課程作為入門首選于样。
- 當然選這門課要有兩個基本前提:一是英語要過關,這里的一切都是英文潘靖,雖然有中文字幕百宇,但是也不建議用中文字幕,因為這里會涉及到很多專有名詞秘豹,長期看中文字幕對于課件或者作業(yè)中的詞會比較吃力携御。二是線性代數(shù)、微積分和概率統(tǒng)計既绕,機器學習中涉及到的基本都是各種數(shù)據(jù)模型和公式啄刹,如果沒有好的數(shù)學基礎也會比較吃力。
- 個人認為掌握一項技能凄贩,只是聽懂或看懂了理論知識只能說達到了十分(滿分一百分的話)誓军,因為這些理論還是閑散的存儲在你的大腦里,并沒有形成一種知識體系疲扎。還好吳老師的這門《機器學習》每章都會有個測試昵时,并且還有動手編程完成的作業(yè)。我覺得當你把這些測試通過椒丧,把這些編程作業(yè)完成之后壹甥,這些閑散的知識點就會拼接在一起,這個程度之后就可以拿到五十分壶熏。那么如何把這些知識轉換為自己的技能句柠,就需要總結或者把它講述給別人,這時候這些知識才屬于你自己棒假,才可以拿到及格分六十分溯职。之后你就可以帶著這些技能來解決實際問題。在這之后六十分到一百分的過程中帽哑,每增加一分都是比較困難的谜酒。就像田教授(我研究生時的一位摯Ji友You,外號在他本科時由于某種特征得名)目前從事機器學習領域說的那樣妻枕,一個機器學習模型在準確率從60%提升到70%的時候很容易僻族,但是再往上每提高一個百分點誊涯,都是件特別困難的事情蒲列。說了這么多,寫本文的核心目的就是在總結已經(jīng)掌握的知識點,把這些知識點變?yōu)樽约旱募寄堋?/li>
What
吳老師的這門《機器學習》分為11周康嘉,本想學完一半或者全部學完之后再來總結,不過第三周結束的時候吳老師說了這么一段話:
When I walk around Silicon Valley, I live here in Silicon Valley, there are a lot of engineers that are frankly, making a ton of money for their companies using machine learning algorithms. And I know we've only been, you know, studying this stuff for a little while. But if you understand linear regression, the advanced optimization algorithms and regularization, by now, frankly, you probably know quite a lot more machine learning than many, certainly now, but you probably know quite a lot more machine learning right now than frankly, many of the Silicon Valley engineers out there having very successful careers. You know, making tons of money for the companies. Or building products using machine learning algorithms. So, congratulations. You've actually come a long ways. And you can actually, you actually know enough to apply this stuff and get to work for many problems. So congratulations for that.
總結下來就是前三周的學習已經(jīng)算個基本入門籽前,可以用現(xiàn)有的模型和算法去解決很多實際問題了亭珍。
好了敷钾,廢話了這么多,開始進入正題肄梨。
Lecture1 概述
引言
機器學習:來源于人工智能領域阻荒,計算機的一項新能力。
目前的應用比較廣泛:
- 數(shù)據(jù)挖掘領域:從目前爆炸性增長的信息中提取有價值的信息用于用戶推薦众羡、醫(yī)療記錄以及生物技術中侨赡。
- 不能手動編程的應用程序:自動直升機、手寫識別粱侣、自然語言處理及計算機視覺羊壹。
- 定制化的程序:Amazon、Netflix等用戶定制化的產(chǎn)品推薦齐婴。
- 理解人腦學習油猫。(美國的科幻電影讓我們領略到了人工智能未來的無限遐想)
Marching Learning Definition 什么是機器學習
Tom Mitchell 提供一個現(xiàn)代化的定義(也有些啰嗦):
"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
一個程序被認為是能從經(jīng)驗E中學習,解決任務T柠偶,達到性能度量值P情妖,當且僅當有了經(jīng)驗E后,經(jīng)過P判斷诱担,程序在處理T時性能有所提升毡证。
我們拿下棋舉例:
- E為下了多盤棋的經(jīng)驗。
- T為下棋的任務蔫仙。
- P為贏得下場棋的概率情竹。
機器學習的算法大概分為兩類:
- 監(jiān)督學習
- 非監(jiān)督學習
Supervised Learning
監(jiān)督學習
在監(jiān)督學習中,已經(jīng)提供給我們一批數(shù)據(jù)集匀哄,并且知道正確數(shù)據(jù)長什么樣子秦效,只需要找出輸入和輸出存在什么樣的關系。監(jiān)督學習也可以分為兩類:
回歸問題是我們可以在一個連續(xù)性輸出中預測結果涎嚼,意味著通過一個聯(lián)系函數(shù)可以關聯(lián)輸入和輸出值阱州。比如通過一張照片的各種特征值來預測這個人的年齡。
分類問題是我們要預測出來的值分散在各個結果的集合中法梯。比如通過看一個病人的腫瘤來預測這個腫瘤是良性還是惡性苔货。
Unsupervised Learning
非監(jiān)督學習
在非監(jiān)督學習中,我們解決的問題通常不知道結果長什么樣子立哑,我們要從一些我們并不知道變量效果的數(shù)據(jù)中抽取出結構夜惭。通常做法是通過這些變量的關系來聚類。
比如有一百多萬種基因铛绰,找到一種方法可以通過各種類似有關聯(lián)的變量把他們自動分類诈茧,這些變量包括生命周期、位置捂掰、角色等敢会。
Lecture2 Linear Regression with One Variable
Model Representation
我們的目標就是給到一組訓練集曾沈,通過一個函數(shù)h:X->Y,使得h(x)是一個“好的”預言家給出相應的Y值鸥昏。我們把h稱作hypothesis假設函數(shù)塞俱。
直觀一點我們用波特蘭的房屋價格舉例,圖中的紅叉為具體的訓練集吏垮,X為房屋面積障涯,Y為價格,得出h(x) = θ0 + θ1*x膳汪,之后我們通過一個具體的面積就能推斷出它的大概價格了唯蝶。
Cost Function
從上面的例子可以看出,怎么算出θ0和θ1的值是關鍵旅敷。這里就引入了Cost Function消耗函數(shù)的概念生棍。
這里就涉及到具體的數(shù)學公式了,大概的意思就是我們的目標就是使得通過h推導出來的值和真正的y值越接近越好媳谁,這里引入了方差涂滴,通過計算我們所有的訓練集,得出來使得J(θ0,θ1)最小的θ0和θ1晴音。
線性回歸力最重要的幾個公式如上圖所示柔纵,具體的推導就不在這里贅述了。為了更形象的展示其中的關系锤躁,這里也通過大量的訓練集畫出了θ0和θ1及J(θ0,θ1)的具體關系:
Gradient descent
現(xiàn)在我們已經(jīng)有了假設函數(shù)搁料,我們也有方法來評估它到底有多合適。現(xiàn)在我們需要估算假設函數(shù)中的具體參數(shù)值了系羞,這里我們就要引入Gradient descent梯度下降算法了郭计。
因為θ0和θ1我們可以隨意取值,所以你不可能窮舉所有的值來得出最小的消耗函數(shù)椒振,所以我們就要從一個初始值入手昭伸,那么如何從一個初始值找到那個最優(yōu)解,我們就要用到gradient descent算法澎迎。
這個算法用一個公式來表達就是:
后面的部分其實就是求J的偏導數(shù)庐杨,導數(shù)的目的就是要找到向下的方向的下一個值,通過不斷的迭代夹供,到達最小的值灵份。其中的α為學習速率,如果值太小哮洽,會迭代很多次才能找到最小值填渠;如果值太大,有可能跳過最小值,最后找不到最小值揭蜒。
最后把前面的J公式套入的話横浑,得出最終的Gradient Descent算法:
Lecture3 Linear Algebra Review
本章主要復習下線性代數(shù)的基礎剔桨,這里不做贅述屉更。
Lecture4 Linear Regression with Multiple Variables
Gradient descent for multiple variables
這章開始進入多元變量的線性回歸,前面的一元線性回歸更多在于讓我們更好的理解洒缀,到了這章才比較接近事實瑰谜。因為每一種模型都要經(jīng)過更多維度的分析才有好的效果。
多元意味著有多個θ树绩,這里就要同時迭代多個維度萨脑。
Feature Scaling
前面我們說到了α學習速率的問題,在實際應用中饺饭,不僅學習速率會影響迭代速度渤早,變量的范圍也會影響。這里就引入了特征縮放的概念:
其中的μi為特征X中的平均值瘫俊,Si為特種X中的最大值減去最小值鹊杖。
Features and Polynomial Regression
在實際應用中通過觀察數(shù)據(jù)集的規(guī)律,并不一定得出線性的假設函數(shù)扛芽,這時我們就有可能通過引入特征及多項式回歸來盡可能擬合數(shù)據(jù)集骂蓖。例如下圖:
Lecture5 Octave Tutorial
這章開始我們要通過編程手段來解決實際問題了,這里推薦使用Octave川尖,它可以說是一個輕量級的MATLAB登下,支持各種數(shù)據(jù)運算。本章主要講述如何使用叮喳,個人認為這章可以快速略過被芳,這章我就走個過場,在實際編程中馍悟,不熟悉的語法直接Google畔濒。
第一次的編程作業(yè)比較簡單,主要是熟悉Octave工具赋朦,以及用它來實現(xiàn)CostFunction和Gradient Descent篓冲。通過完整的事例來展現(xiàn)如果通過Octave來解決實際問題。
Lecture6 Logistic Regression
Classification
邏輯回歸主要是解決分類的問題宠哄,這類的問題在第一章已經(jīng)介紹過壹将,這里不再贅述。
Hypothesis Representation
我們可以先忽略y是離散值的事實毛嫉,用老的線性回歸算法來預測y诽俯。但是這個方法表現(xiàn)的并不好,為了修正我們改變下假設函數(shù)的形式,這里用我們用到Sigmoid Function S型函數(shù)也就是Logistic Function 邏輯函數(shù)
S型函數(shù)如下所示:
這里假設函數(shù)得出的值不再反應的是具體值暴区,而是結果為1或者0的概率闯团。如下公式:
hθ(x) = P(y=1|x;θ) = 1?P(y=0|x;θ)
P(y=0|x;θ) + P(y=1|x;θ) = 1
Decision Boundary
Decision Boundary 決策邊界就是來分割y=0和y=1的分割線,由假設函數(shù)得來仙粱。下面兩個圖分別為線性和非線性的決策邊界房交。
Cost Function
如果繼續(xù)沿用線性回歸的消耗函數(shù),邏輯回歸的問題會展現(xiàn)出很多小的波浪伐割,導致許多部分最優(yōu)解候味,而拿不到最優(yōu)解。這里消耗函數(shù)換了一種表現(xiàn)方式:
為什么取這樣的消耗函數(shù)主要是為了表達這樣的概念:
Cost(hθ(x),y)=0 if hθ(x)=y
Cost(hθ(x),y)→∞ if y=0andhθ(x)→1
Cost(hθ(x),y)→∞ if y=1andhθ(x)→0
Simplified Cost Function and Gradient Descent
上面的消耗函數(shù)最終可以壓縮成一句公式:
Cost(hθ(x),y) = ?ylog(hθ(x)) ? (1?y)log(1?hθ(x))
完整的公式如下:
Gradient Descent公式與線性回歸是一樣的隔心。
Advanced optimization
這里又介紹了幾個其他算法:
- Conjugate gradient
- BFGS
- L-BFGS
這幾個算法的優(yōu)點就是不用手動的設置學習速率白群,而且更快。缺點就是太復雜硬霍,大師建議不要用帜慢。。
同時Octave工具又封裝好了一些函數(shù)提供更方便的計算唯卖,比如你只要寫如下一個簡單的函數(shù):
function [jVal, gradient] = costFunction(theta)
jVal = [...code to compute J(theta)...];
gradient = [...code to compute derivative of J(theta)...];
end
然后我們就能用Octave的fminunc()優(yōu)化算法和optimset()函數(shù)來創(chuàng)建一個object包含我們想要給fminunc()的options
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);
Lecture7 Regularization
The Problem of Overfitting
實際應用中常常會出現(xiàn)過度擬合的問題粱玲。
如第三幅圖所示,我們用過多特征來完全擬合當前現(xiàn)有的數(shù)據(jù)集耐床,得出來的假設函數(shù)并不能準確的預測出之后的趨勢密幔。這就是過度擬合的問題。那么如何解決呢:
減少特征的數(shù)量:
- 手工選取保留哪些特征撩轰。
- 用模型選擇算法胯甩。
正則化
- 保留所有的特征,但是減少θj的量級堪嫂。
- 當我們有許多不是很有用的特征時偎箫,正則化會表現(xiàn)的很好。
Cost Function
我們可以減少一些參數(shù)的權重通過增加他們的消耗皆串,總結出來的消耗函數(shù)公式為:
λ正則化參數(shù)淹办,它決定參數(shù)需要擴充多少消耗。
Regularized Linear Regression
正則化線性回歸后的Gradient Descent:
Regularized Logistic Regression
正則化后的邏輯回歸消耗函數(shù):
正則化后的邏輯回歸Gradient Descent:
關于邏輯回歸的編程作業(yè)大概也是計算各種Cost Function和Gradient Descent函數(shù)恶复,由于邏輯回歸稍微復雜一點怜森,所以函數(shù)可能要多花點調(diào)試的時間。特別是要好好看下Octave提供的fminunc函數(shù)谤牡,之后解決實際問題直接用此函數(shù)即可副硅。
Conclusion
到目前為止已經(jīng)掌握了線性回歸和邏輯回歸兩種模型以及梯度遞減的算法,算是邁出了一個臺階翅萤。
路漫漫其修遠兮恐疲,吾將上下而求索!