算法技術(shù)解構(gòu)
1、Python基礎(chǔ)知識(shí)
(1)IPython
IPython的開發(fā)者吸收了標(biāo)準(zhǔn)解釋器的基本概念,在此基礎(chǔ)上進(jìn)行了大量的改進(jìn),創(chuàng)造出一個(gè)令人驚奇的工具。在它的主頁(yè)上是這么說(shuō)的:“這是一個(gè)增強(qiáng)的交互式Python shell。”具有tab補(bǔ)全,對(duì)象自省,強(qiáng)大的歷史機(jī)制,內(nèi)嵌的源代碼編輯,集成Python調(diào)試器,%run機(jī)制,宏,創(chuàng)建多個(gè)環(huán)境以及調(diào)用系統(tǒng)shell的能力。
IPython與標(biāo)準(zhǔn)Python的最大區(qū)別在于,IPython會(huì)對(duì)命令提示符的每一行進(jìn)行編號(hào)。
IPython是一個(gè)綜合的交互式編程環(huán)境,比原本python命令進(jìn)入的交互式環(huán)境要強(qiáng)大很多。
(2)Notebook
IPython notebook目前已經(jīng)成為用Python做教學(xué)、計(jì)算、科研的一個(gè)重要工具。
IPython Notebook使用瀏覽器作為界面,向后臺(tái)的IPython服務(wù)器發(fā)送請(qǐng)求,并顯示結(jié)果。在瀏覽器的界面中使用單元(Cell)保存各種信息。Cell有多種類型,經(jīng)常使用的有表示格式化文本的Markdown單元,和表示代碼的Code單元。
每個(gè)代碼單元都有一個(gè)輸出區(qū)域,在Code單元中輸入代碼,按 Shift-Enter 將運(yùn)行此代碼,代碼中最后一個(gè)表達(dá)式的值將輸出區(qū)域顯示。如果希望屏蔽輸出,可以在最后一條語(yǔ)句之后添加一個(gè)分號(hào):”;”。此外,代碼中還可以使用print語(yǔ)句在輸出區(qū)域中顯示信息。
在Markdown單元中還可以直接使用Html和Javascript。
(3)Numpy
NumPy是Python用于處理大型矩陣的一個(gè)速度極快的數(shù)學(xué)庫(kù)。它允許你在Python中做向量和矩陣的運(yùn)算,而且很多底層的函數(shù)都是用C寫的,你將獲得在普通Python中無(wú)法達(dá)到的運(yùn)行速度。這是由于矩陣中每個(gè)元素的數(shù)據(jù)類型都是一樣的,這也就減少了運(yùn)算過(guò)程中的類型檢測(cè)。
Numpy是Python的一個(gè)科學(xué)計(jì)算的庫(kù),提供了矩陣運(yùn)算的功能,其一般與Scipy、Matplotlib一起使用。
(4)Scipy
NumPy是一個(gè)定義了數(shù)值數(shù)組和矩陣類型和它們的基本運(yùn)算的語(yǔ)言擴(kuò)展。 SciPy是一種使用NumPy來(lái)做高等數(shù)學(xué)、信號(hào)處理、優(yōu)化、統(tǒng)計(jì)和許多其它科學(xué)任務(wù)的語(yǔ)言擴(kuò)展。
Scipy方便、易于使用、專為科學(xué)和工程設(shè)計(jì)的Python工具包。它包括統(tǒng)計(jì),優(yōu)化,整合,線性代數(shù)模塊,傅里葉變換,信號(hào)和圖像處理,常微分方程求解器等等。
(5)Pandas
Numpy是以矩陣為基礎(chǔ)的數(shù)學(xué)計(jì)算模塊,純數(shù)學(xué)。
Scipy基于Numpy,科學(xué)計(jì)算庫(kù),有一些高階抽象和物理模型。比方說(shuō)做個(gè)傅立葉變換,這是純數(shù)學(xué)的,用Numpy;做個(gè)濾波器,這屬于信號(hào)處理模型了,在Scipy里找。
Pandas提供了一套名為DataFrame的數(shù)據(jù)結(jié)構(gòu),比較契合統(tǒng)計(jì)分析中的表結(jié)構(gòu),并且提供了計(jì)算接口,可用Numpy或其它方式進(jìn)行計(jì)算。
Pandas是基于NumPy的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。最具有統(tǒng)計(jì)意味的工具包,某些方面優(yōu)于R軟件。數(shù)據(jù)結(jié)構(gòu)有一維的Series,二維的DataFrame(類似于Excel或者SQL中的表)。
(6)Matplotlib
Python中最著名的繪圖系統(tǒng)。matplotlib的復(fù)雜給其帶來(lái)了很強(qiáng)的定制性。其具有面向?qū)ο蟮姆绞郊癙yplot的經(jīng)典高層封裝。需要掌握的是:散點(diǎn)圖,折線圖,條形圖,直方圖,餅狀圖,箱形圖的繪制。繪圖的三大系統(tǒng):pyplot,pylab(不推薦),面向?qū)ο笞鴺?biāo)軸的調(diào)整,添加文字注釋,區(qū)域填充,及特殊圖形。使用金融的同學(xué)注意的是:可以直接調(diào)用Yahoo財(cái)經(jīng)數(shù)據(jù)繪圖(真方便。。。)
(7)Scikit-learn
很火的開源機(jī)器學(xué)習(xí)工具。
scikit-learn的基本功能主要被分為六個(gè)部分,分類,回歸,聚類,數(shù)據(jù)降維,模型選擇,數(shù)據(jù)預(yù)處理,具體可以參考官方網(wǎng)站上的文檔。
對(duì)于具體的機(jī)器學(xué)習(xí)問(wèn)題,通常可以分為三個(gè)步驟,數(shù)據(jù)準(zhǔn)備與預(yù)處理,模型選擇與訓(xùn)練,模型驗(yàn)證與參數(shù)調(diào)優(yōu)。
scikit-learn支持多種格式的數(shù)據(jù),包括經(jīng)典的iris數(shù)據(jù),LibSVM格式數(shù)據(jù)等等。為了方便起見,推薦使用LibSVM格式的數(shù)據(jù),詳細(xì)見LibSVM的官網(wǎng)。
(8)Statsmodels
Statsmodels是Python的統(tǒng)計(jì)建模和計(jì)量經(jīng)濟(jì)學(xué)工具包,包括一些描述統(tǒng)計(jì)、統(tǒng)計(jì)模型估計(jì)和推斷。包括線性回歸模型、一般線型模型、robust linear models、離散選擇模型(logit)、ANOVA、時(shí)間序列分析、非參檢驗(yàn)、各種統(tǒng)計(jì)檢驗(yàn)、讀取各種格式的數(shù)據(jù)及輸出、繪圖、整體檢驗(yàn)。
2、利用Python進(jìn)行數(shù)據(jù)分析
(1)數(shù)據(jù)讀寫
ipython
ipython notebook/jupyter notebook
%pylab(集成matplotlab)
In[556]:2 ** 57
Out[557]:134217728
(2)數(shù)組和矢量計(jì)算
import numpy as np
ndarray(多維數(shù)組對(duì)象)
arr = np.array([1,2,3,4,5])
dtype(數(shù)據(jù)類型):int32 float64
數(shù)組與標(biāo)量運(yùn)算(廣播)
索引和切片 arr[5:8]
數(shù)組轉(zhuǎn)置
(3)數(shù)學(xué)優(yōu)化
逼近法:回歸(np.polyfit np.polyval np.linalg.lstsq import statsmodels.api as sm/sm.OLS)、插值(import scipy.interpolate as spi)
凸優(yōu)化:指求取最小值的目標(biāo)函數(shù)為凸函數(shù)的一類優(yōu)化問(wèn)題。如效用函數(shù)。import scipy.optimize as spo/ spo.brute全局最小化方法 spo.fmin局部最小化方法 spo.minimize(constraints=cons)帶約束條件的優(yōu)化
積分:import scipy.integrate as sci 數(shù)值積分sci.fixed_quad(f,a,b)[0] 蒙特卡洛模擬積分np.random.seed(1000) np.random.random
符號(hào)計(jì)算:import sympy as sy 解方程sy.solve 積分sy.integral 微分sy.diff(f, x)
(4)統(tǒng)計(jì)推斷
隨機(jī)數(shù):rand()
隨機(jī)過(guò)程:幾何布朗運(yùn)動(dòng)、平方根擴(kuò)散、隨機(jī)波動(dòng)率、跳擴(kuò)散
方差縮減
Python有一個(gè)很好的統(tǒng)計(jì)推斷包。那就是scipy里面的stats。
from scipy import stats as ss
(5)可視化
Python中有許多可視化模塊,最流行的當(dāng)屬matpalotlib庫(kù)。稍加提及,我們也可選擇bokeh和seaborn模塊。
import matplotlib.pyplot as plt
(6)時(shí)間序列
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.api import qqplot
dta=pd.Series(dta)
diff1 = dta.diff(1) 一階差分
diff2 = dta.diff(2) 二階差分
fig = sm.graphics.tsa.plot_acf(dta,lags=40,ax=ax1) ACF圖
fig = sm.graphics.tsa.plot_pacf(dta,lags=40,ax=ax2) PACF圖
ARMA:acf確定ma的lag,pacf確定ar的lag
fig = qqplot(resid, line='q', ax=ax, fit=True) QQ圖(直觀驗(yàn)證一組數(shù)據(jù)是否來(lái)自某個(gè)分布,或者驗(yàn)證某兩組數(shù)據(jù)是否來(lái)自同一(族)分布。)
(7)衍生品估值
DX衍生品分析庫(kù)
泛型估值類
class valuation_class.py(object):
歐式行權(quán)估值類
class valuation_mcs_european(valuation_class):
美式行權(quán)估值類
class valuation_mcs_american(valuation_class):
(8)投資組合估值
衍生品頭寸模型類
class derivatives_position(object):
衍生品投資組合類
class derivatives_portfolio(object):
(9)Python投資策略
優(yōu)礦量化
聚寬網(wǎng)
(10)Quant
Quant 應(yīng)該學(xué)習(xí)哪些 Python 知識(shí)
3、數(shù)據(jù)挖掘?qū)崙?zhàn)
(1)數(shù)據(jù)挖掘過(guò)程
數(shù)據(jù)采集→數(shù)據(jù)探索→數(shù)據(jù)預(yù)處理→挖掘建模→模型評(píng)價(jià)
(2)數(shù)據(jù)采集
相關(guān)、可靠、有效
(3)數(shù)據(jù)探索
數(shù)據(jù)質(zhì)量分析:缺失值分析、異常值分析、一致性分析
數(shù)據(jù)特征分析:分布分析:直方圖、餅圖,對(duì)比分析:絕對(duì)數(shù)比較、相對(duì)數(shù)比較,統(tǒng)計(jì)量分析:集中趨勢(shì)(均值、中位數(shù)、眾數(shù))、離中趨勢(shì)(極差、標(biāo)準(zhǔn)差、變異系數(shù)、四分位數(shù)間距)
主要探索函數(shù):sum mean var std corr cov skew/kurt describe cumsum cumprod cummax cummin plot pie hist boxplot
(4)數(shù)據(jù)預(yù)處理
數(shù)據(jù)清洗:缺失值處理(均值插補(bǔ)、插值法),異常值處理(刪除、用平均值修正、視為缺失值)
數(shù)據(jù)集成:將多個(gè)數(shù)據(jù)源合并到一個(gè)數(shù)據(jù)倉(cāng)庫(kù)中。實(shí)體識(shí)別,冗余屬性識(shí)別
數(shù)據(jù)變換:簡(jiǎn)單函數(shù)變換,規(guī)范化(標(biāo)準(zhǔn)化(x-min)/(max-min)、0-1規(guī)范化(x-mean)/std),連續(xù)屬性離散化(等寬、等頻、基于聚類),屬性構(gòu)造,小波變換(提取特征)
數(shù)據(jù)規(guī)約:屬性規(guī)約(PCA降維、決策樹歸納)、數(shù)值規(guī)約(直方圖、聚類、抽樣、參數(shù)回歸)
主要預(yù)處理函數(shù):interpolate插值 unique去重 isnull notnull PCA random隨機(jī)數(shù)
(5)挖掘建模
分類與預(yù)測(cè):回歸分析(線性、非線性、logit、PCA),決策樹,人工神經(jīng)網(wǎng)絡(luò)(BP神經(jīng)網(wǎng)絡(luò)),貝葉斯網(wǎng)絡(luò),SVM
Python實(shí)現(xiàn):sklearn.linear_model sklearn.svm sklearn.tree sklearn.ensemble(隨機(jī)森林) sklearn.naive_bayes Keras(神經(jīng)網(wǎng)絡(luò))
聚類分析:K-Means K-中心點(diǎn) 系統(tǒng)聚類
K-Means典型的非層次聚類算法,在最小化誤差函數(shù)的基礎(chǔ)上將數(shù)據(jù)劃分為預(yù)定的類數(shù)K,采用距離作為相似性評(píng)價(jià)的指標(biāo),距離越近,相似度越大。
Python實(shí)現(xiàn):sklearn.cluster
關(guān)聯(lián)規(guī)則:Apriori算法
Apriori算法也屬于無(wú)監(jiān)督學(xué)習(xí),它強(qiáng)調(diào)的是“從數(shù)據(jù)X中能夠發(fā)現(xiàn)什么”。從大規(guī)模的數(shù)據(jù)集中尋找物品之間隱含關(guān)系被稱為關(guān)聯(lián)分析或者稱為關(guān)聯(lián)規(guī)則學(xué)習(xí)。這里的主要問(wèn)題在于,尋找物品的不同組合是一項(xiàng)十分耗時(shí)的任務(wù),所需的計(jì)算代價(jià)很高,蠻力搜索并不能解決這個(gè)問(wèn)題。因此此處介紹使用Apriorio算法來(lái)解決上述問(wèn)題。
頻繁項(xiàng)集:指經(jīng)常出現(xiàn)在一塊的物品的集合。 關(guān)聯(lián)規(guī)則暗示兩種物品之間存在很強(qiáng)的關(guān)系。(這里我們事先定義閥值,超過(guò)該閥值,證明兩者之間存在很強(qiáng)的關(guān)系)。發(fā)現(xiàn)頻繁項(xiàng)集,然后從頻繁項(xiàng)集中發(fā)現(xiàn)關(guān)聯(lián)規(guī)則。
Python實(shí)現(xiàn):from apriori import *
時(shí)間序列:平穩(wěn)性檢驗(yàn),ARIMA模型
Python實(shí)現(xiàn):plot_acf plot_pacf adfuller diff arima aic/bic/hqic forecast
離群點(diǎn)檢測(cè):檢測(cè)方法:基于統(tǒng)計(jì),基于鄰近度,基于密度,基于聚類
4、機(jī)器學(xué)習(xí)基礎(chǔ)知識(shí)
(1)初步
利用經(jīng)驗(yàn)(數(shù)據(jù))通過(guò)計(jì)算的手段(算法)來(lái)改善系統(tǒng)自身的性能。
從數(shù)據(jù)中學(xué)得模型的過(guò)程稱為學(xué)習(xí)(訓(xùn)練)。相應(yīng)的數(shù)據(jù)集稱為訓(xùn)練數(shù)據(jù)(訓(xùn)練集)。
學(xué)得模型后,使用其進(jìn)行預(yù)測(cè)的過(guò)程稱為測(cè)試。相應(yīng)的數(shù)據(jù)集稱為測(cè)試數(shù)據(jù)(測(cè)試集)。
訓(xùn)練數(shù)據(jù)是否有標(biāo)記信息,分為監(jiān)督學(xué)習(xí)(訓(xùn)練時(shí)有特征標(biāo)簽,告訴你對(duì)錯(cuò),如分類和回歸),無(wú)監(jiān)督學(xué)習(xí)(訓(xùn)練時(shí)無(wú)特征標(biāo)簽,如聚類)。
機(jī)器學(xué)習(xí)vs數(shù)據(jù)挖掘:數(shù)據(jù)挖掘可以認(rèn)為是數(shù)據(jù)庫(kù)技術(shù)與機(jī)器學(xué)習(xí)的交叉,它利用數(shù)據(jù)庫(kù)技術(shù)來(lái)管理海量的數(shù)據(jù),并利用機(jī)器學(xué)習(xí)和統(tǒng)計(jì)分析來(lái)進(jìn)行數(shù)據(jù)分析。其關(guān)系如下圖:
數(shù)據(jù)挖掘受到了很多學(xué)科領(lǐng)域的影響,其中數(shù)據(jù)庫(kù)、機(jī)器學(xué)習(xí)、統(tǒng)計(jì)學(xué)無(wú)疑影響最大。粗糙地說(shuō),數(shù)據(jù)庫(kù)提供數(shù)據(jù)管理技術(shù),機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)提供數(shù)據(jù)分析技術(shù)。由于統(tǒng)計(jì)學(xué)界往往醉心于理論的優(yōu)美而忽視實(shí)際的效用,因此,統(tǒng)計(jì)學(xué)界提供的很多技術(shù)通常都要在機(jī)器學(xué)習(xí)界進(jìn)一步研究,變成有效的機(jī)器學(xué)習(xí)算法之后才能再進(jìn)入數(shù)據(jù)挖掘領(lǐng)域。從這個(gè)意義上說(shuō),統(tǒng)計(jì)學(xué)主要是通過(guò)機(jī)器學(xué)習(xí)來(lái)對(duì)數(shù)據(jù)挖掘發(fā)揮影響,而機(jī)器學(xué)習(xí)和數(shù)據(jù)庫(kù)則是數(shù)據(jù)挖掘的兩大支撐技術(shù)。
(2)模型評(píng)估與選擇
根據(jù)已有的訓(xùn)練集,我們已經(jīng)將該模型訓(xùn)練完畢。但是,當(dāng)我們需要在新的數(shù)據(jù)集上進(jìn)行預(yù)測(cè)時(shí),發(fā)現(xiàn)預(yù)測(cè)的結(jié)果和實(shí)際有很大的誤差。那么應(yīng)該做什么?
獲取更多數(shù)據(jù),減少特征量,變更參數(shù)...
似乎有很多種方法來(lái)改善學(xué)習(xí)模型,但是,有些方法可能要花費(fèi)很多時(shí)間(或許還不起作用),有些方法可能是矛盾的。所以,需要一種方式來(lái)給我們指明方向:到底應(yīng)該采用哪種或哪些方式來(lái)優(yōu)化模型。我們將這種方式稱為機(jī)器學(xué)習(xí)診斷(Machine Learning Diagnostics)。機(jī)器學(xué)習(xí)診斷是一種測(cè)試法,能夠深入了解某種算法到底是否有用。這通常也能夠告訴我們,要想改進(jìn)一種算法的效果,什么樣的嘗試才是有意義的,從而節(jié)省時(shí)間,減少不必要的嘗試。
分類錯(cuò)誤的樣本比例叫錯(cuò)誤率。學(xué)習(xí)器在訓(xùn)練集上的誤差稱為訓(xùn)練誤差,在新樣本上的誤差稱為泛化誤差。希望得到泛化誤差小的學(xué)習(xí)器。訓(xùn)練樣本學(xué)得太好以至于在泛化的時(shí)候把訓(xùn)練樣本的自身特點(diǎn)帶到了新樣本中,稱為過(guò)擬合。訓(xùn)練樣本的一般性質(zhì)尚未學(xué)好,稱為欠擬合。
訓(xùn)練數(shù)據(jù)劃分為(訓(xùn)練集:用來(lái)訓(xùn)練模型確定參數(shù),驗(yàn)證集用來(lái)進(jìn)行模型選擇和調(diào)參);測(cè)試數(shù)據(jù)(測(cè)試集:測(cè)試已訓(xùn)練好的模型的泛化能力)
查準(zhǔn)率 = 識(shí)別出的真正的正面觀點(diǎn)數(shù) / 所有的識(shí)別為正面觀點(diǎn)的條數(shù)
查全率 = 識(shí)別出的真正的正面觀點(diǎn)數(shù) / 樣本中所有的真正正面觀點(diǎn)的條數(shù)
查準(zhǔn)率=真正例/(真正例+假正例)
查全率=真正例/(真正例+假反例)
實(shí)驗(yàn)證明,在查全率和查準(zhǔn)率之間存在著相反的相互依賴關(guān)系。
(3)線性模型
在現(xiàn)實(shí)生活中普遍存在著變量之間的關(guān)系,有確定的和非確定的。確定關(guān)系指的是變量之間可以使用函數(shù)關(guān)系式表示,還有一種是屬于非確定的(相關(guān)),比如人的身高和體重,一樣的身高體重是不一樣的。
梯度下降算法是一種求局部最優(yōu)解的方法,對(duì)于F(x),在a點(diǎn)的梯度是F(x)增長(zhǎng)最快的方向,那么它的相反方向則是該點(diǎn)下降最快的方向。
基本上每個(gè)模型都會(huì)有一個(gè)對(duì)應(yīng)的目標(biāo)函數(shù),可以通過(guò)不同的最優(yōu)化求解方法(梯度下降,牛頓法等等)對(duì)這些對(duì)應(yīng)的目標(biāo)函數(shù)進(jìn)行求解。線性回歸模型,我們知道實(shí)際上是通過(guò)多個(gè)自變量對(duì)自變量進(jìn)行曲線擬合。我們希望找到一條可以較好擬合的曲線,那我們?nèi)绾闻袛嘁粭l曲線的擬合程度的好壞。上面講到,我們采用的是最小二乘法(預(yù)測(cè)值和真實(shí)值的誤差平方和)。
(4)決策樹
決策樹學(xué)習(xí):根據(jù)數(shù)據(jù)的屬性采用樹狀結(jié)構(gòu)建立決策模型。決策樹模型常常用來(lái)解決分類和回歸問(wèn)題。常見的算法包括 CART (Classification And Regression Tree)、ID3、C4.5、隨機(jī)森林 (Random Forest) 等。
信息熵:度量樣本集合純度(決策樹的分支結(jié)點(diǎn)所包含的樣本種類類別數(shù)量的多少)的一種指標(biāo)。
信息增益:表示了用屬性(特征)A使得數(shù)據(jù)集D的分類不確定性減少的程度。
信息增益比:對(duì)于取值多的屬性,尤其一些連續(xù)型數(shù)值,這個(gè)單獨(dú)的屬性就可以劃分所有的樣本,使得所有分支下的樣本集合都是“純的”(最極端的情況是每個(gè)葉子節(jié)點(diǎn)只有一個(gè)樣本)。一個(gè)屬性的信息增益越大,表明屬性對(duì)樣本的熵減少的能力更強(qiáng),這個(gè)屬性使得數(shù)據(jù)由不確定性變成確定性的能力越強(qiáng)。所以如果是取值更多的屬性,更容易使得數(shù)據(jù)更“純”(尤其是連續(xù)型數(shù)值),其信息增益更大,決策樹會(huì)首先挑選這個(gè)屬性作為樹的頂點(diǎn)。結(jié)果訓(xùn)練出來(lái)的形狀是一棵龐大且深度很淺的樹,這樣的劃分是極為不合理的。C4.5使用了信息增益率,在信息增益的基礎(chǔ)上除了一項(xiàng)split information,來(lái)懲罰值更多的屬性。
基尼系數(shù):從數(shù)據(jù)集中隨機(jī)抽取兩個(gè)樣本,其類別標(biāo)記為不一致的概率。Gini越小,數(shù)據(jù)集純度越高。
決策樹分別由三個(gè)經(jīng)典算法實(shí)現(xiàn):ID3,C4.5,CART,這三個(gè)算法最明顯的區(qū)別就是對(duì)于特征選擇的策略不同,不過(guò)目的只有一個(gè):使當(dāng)前數(shù)據(jù)集的混亂程度降低。具體來(lái)說(shuō),ID3使用的信息增益,C4.5使用的信息增益比,CART使用的Gini指數(shù)。
(5)神經(jīng)網(wǎng)絡(luò)
一種應(yīng)用類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型。
BP神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ィ˙P)算法訓(xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)規(guī)則是使用最速下降法,通過(guò)反向傳播來(lái)不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。
(6)SVM
是一種訓(xùn)練機(jī)器學(xué)習(xí)的算法,可以用于解決分類和回歸問(wèn)題,同時(shí)還使用了一種稱之為kernel trick的技術(shù)進(jìn)行數(shù)據(jù)的轉(zhuǎn)換,然后再根據(jù)這些轉(zhuǎn)換信息,在可能的輸出之中找到一個(gè)最優(yōu)的邊界。簡(jiǎn)單來(lái)說(shuō),就是做一些非常復(fù)雜的數(shù)據(jù)轉(zhuǎn)換工作,然后根據(jù)預(yù)定義的標(biāo)簽或者輸出進(jìn)而計(jì)算出如何分離用戶的數(shù)據(jù)。
什么是機(jī)?什么是向量?什么是支持?機(jī)就是算法的意思,為什么不叫算法叫機(jī)是因?yàn)橐恍v史原因。向量就是向量,做分類的時(shí)候每個(gè)樣本都用一個(gè)向量表示。支持有撐起來(lái),決定的意思。做分類的時(shí)候一般都是找到一個(gè)分類超平面(二緯的話是線),超平面一側(cè)是正類一側(cè)是負(fù)類。何為支持向量,就是決定了這個(gè)分類超平面的向量。所以可以這樣理解支持向量機(jī):它是一個(gè)分類算法,這個(gè)算法是通過(guò)超平面進(jìn)行分類的,這個(gè)超平面是由支持向量決定的。
(7)貝葉斯分類器
貝葉斯分類器的分類原理是通過(guò)某對(duì)象的先驗(yàn)概率,利用貝葉斯公式計(jì)算出其后驗(yàn)概率,即該對(duì)象屬于某一類的概率,選擇具有最大后驗(yàn)概率的類作為該對(duì)象所屬的類。
樸素貝葉斯分類器:對(duì)于給出的待分類項(xiàng),求解在此項(xiàng)出現(xiàn)的條件下各個(gè)類別出現(xiàn)的概率,哪個(gè)最大,就認(rèn)為此待分類項(xiàng)屬于哪個(gè)類別。
(8)EM算法
在統(tǒng)計(jì)計(jì)算中,最大期望(EM)算法是在概率(probabilistic)模型中尋找參數(shù)最大似然估計(jì)或者最大后驗(yàn)估計(jì)的算法,其中概率模型依賴于無(wú)法觀測(cè)的隱藏變量(Latent Variable)。最大期望經(jīng)常用在機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué)的數(shù)據(jù)聚類(Data Clustering)領(lǐng)域。
(9)隨機(jī)森林
隨機(jī)森林顧名思義,是用隨機(jī)的方式建立一個(gè)森林,森林里面有很多的決策樹組成,隨機(jī)森林的每一棵決策樹之間是沒(méi)有關(guān)聯(lián)的。在得到森林之后,當(dāng)有一個(gè)新的輸入樣本進(jìn)入的時(shí)候,就讓森林中的每一棵決策樹分別進(jìn)行一下判斷,看看這個(gè)樣本應(yīng)該屬于哪一類(對(duì)于分類算法),然后看看哪一類被選擇最多,就預(yù)測(cè)這個(gè)樣本為那一類。
(10) 聚類分析
k-means
k-means是劃分方法中較經(jīng)典的聚類算法之一。由于該算法的效率高,所以在對(duì)大規(guī)模數(shù)據(jù)進(jìn)行聚類時(shí)被廣泛應(yīng)用。目前,許多算法均圍繞著該算法進(jìn)行擴(kuò)展和改進(jìn)。
k-means算法以k為參數(shù),把n個(gè)對(duì)象分成k個(gè)簇,使簇內(nèi)具有較高的相似度,而簇間的相似度較低。k-means算法的處理過(guò)程如下:首先,隨機(jī)地 選擇k個(gè)對(duì)象,每個(gè)對(duì)象初始地代表了一個(gè)簇的平均值或中心;對(duì)剩余的每個(gè)對(duì)象,根據(jù)其與各簇中心的距離,將它賦給最近的簇;然后重新計(jì)算每個(gè)簇的平均值。 這個(gè)過(guò)程不斷重復(fù),直到準(zhǔn)則函數(shù)收斂。
層次聚類
根據(jù)層次分解的順序是自底向上的還是自上向下的,層次聚類算法分為凝聚的層次聚類算法和分裂的層次聚類算法。
凝聚型層次聚類的策略是先將每個(gè)對(duì)象作為一個(gè)簇,然后合并這些原子簇為越來(lái)越大的簇,直到所有對(duì)象都在一個(gè)簇中,或者某個(gè)終結(jié)條件被滿足。絕大多數(shù)層次聚類屬于凝聚型層次聚類,它們只是在簇間相似度的定義上有所不同。
數(shù)據(jù)降維 特征選擇與稀疏學(xué)習(xí) 半監(jiān)督學(xué)習(xí) 隱馬爾科夫模型 規(guī)則學(xué)習(xí) 強(qiáng)化學(xué)習(xí)
5、機(jī)器學(xué)習(xí)Spark
RDD彈性分布式數(shù)據(jù)集,記錄被分配到一個(gè)集群的多個(gè)節(jié)點(diǎn)上。
推薦引擎:推薦引擎,是主動(dòng)發(fā)現(xiàn)用戶當(dāng)前或潛在需求,并主動(dòng)推送信息給用戶的信息網(wǎng)絡(luò)。挖掘用戶的喜好和需求,主動(dòng)向用戶推薦其感興趣或者需要的對(duì)象。
分類模型:線性,樸素貝葉斯(概率模型,通過(guò)計(jì)算給定數(shù)據(jù)點(diǎn)在某個(gè)類別的概率來(lái)進(jìn)行預(yù)測(cè)),決策樹
回歸模型:線性回歸,決策樹回歸
聚類模型:K-Means聚類,層次聚類
數(shù)據(jù)降維:PCA,SVD(奇異值分解法)
文本處理:
Spark Streaming實(shí)時(shí)機(jī)器學(xué)習(xí):在線學(xué)習(xí)(模型隨著接收到新的消息不斷更新自己,而不是像離線訓(xùn)練那樣一次次重新訓(xùn)練),Spark Streaming處理實(shí)時(shí)數(shù)據(jù)流。
6、R基礎(chǔ)知識(shí)
數(shù)據(jù)讀寫: <- data.frame <- read.table() patientdata$gender
可視化:plot(標(biāo)題 坐標(biāo)軸 標(biāo)簽 顏色 線條 符號(hào) 文本標(biāo)注)
統(tǒng)計(jì)分析:summary描述性統(tǒng)計(jì) describe描述性統(tǒng)計(jì) aggregate by分組描述性統(tǒng)計(jì) cor相關(guān)性分析 t.testT檢驗(yàn) wilcox.test兩組數(shù)據(jù)非參數(shù)檢驗(yàn)
回歸:lm 線性回歸/多項(xiàng)式回歸/多元線性回歸/含交互項(xiàng)的多元線性回歸
ANOVA:ANOVA單因素方差分析 ANCOVA單因素協(xié)方差分析
主成分分析:principal
7、自然語(yǔ)言處理NLTK
(1)基礎(chǔ)
import nltk
from nltk.book import *
詞語(yǔ)索引concordance 相似上下文similar common_contexts
詞匯分布圖dispersion_plot
詞匯計(jì)數(shù)sorted(set(text)) len(set(text)) 詞密度 len(text)/len(set(text))
索引 切片 連接' '.join()
詞頻分布fdist=FreqDist(); 單詞降序排列fdist.keys()
列表推導(dǎo)式sorted([w for w in set(text) if len(w)>7 and fdist[w]>7])
詞匯比較運(yùn)算符 w.startswith(t) endswith islower isupper isalpha isalnum isdigit istitle
(2)獲取文本語(yǔ)料
import nltk
nltk.corpus.gutenberg.fileids()
from nltk.corpus import webtext
webtext.fileids() 得到語(yǔ)料庫(kù)中所有文件的ID集合
webtext.raw(fileid) 給定文件的所有字符集合
webtext.words(fileid) 給定文件的所有單詞集合
webtext.sents(fileid) 給定文件的所有句子集合
from nltk.corpus import reuters
from nltk.corpus import inaugural 就職演說(shuō)
條件頻率分布
cfd = nltk.ConditionalFreqDist(
(target, fileid[:4])
for fileid in inaugural.fileids()
for w in inaugural.words(fileid)
for target in ['america', 'citizen']
if w.lower().startswith(target))
WordNet面向語(yǔ)義的英語(yǔ)詞典,層次結(jié)構(gòu)(同義詞集synset,上位詞hypernyms,下位詞hyponyms)
from nltk.corpus import wordnet as wn
(3)處理原始文本
從網(wǎng)絡(luò)訪問(wèn)
from urllib import urlopen
url='絕對(duì)地址'
raw=urlopen(url).read()
tokens=nltk.word_tokenize(raw) 分詞
text=nltk.Text(tokens)
處理HTML
處理搜索引擎
處理RSS訂閱
讀取本地文件
f=open('document.txt')
raw=f.read()
捕獲用戶輸入
s=raw_input("please input:")
NLP流程:打開一個(gè)URL讀取里面的HTML格式的內(nèi)容,去除標(biāo)記,并選擇字符切片,然后分詞,再轉(zhuǎn)換為nltk.Text對(duì)象
高級(jí)分詞技巧:使用正則表達(dá)式為文本分詞。
(4)分類和標(biāo)注詞匯
分類:使用詞性標(biāo)注器nltk.pos_tag(text)
CC并列連詞,RB副詞,IN介詞,NN名詞,JJ形容詞
標(biāo)注:使用已標(biāo)注的語(yǔ)料庫(kù)(標(biāo)記集公約ADJ ADV CNJ N NUM P V )
使用Python字典映射詞及其屬性
自動(dòng)標(biāo)注(默認(rèn)標(biāo)注器 nltk.DefaultTagger('NN') 正則表達(dá)式標(biāo)注器)
N-Gram標(biāo)注:它的上下文是和它前面N-1個(gè)標(biāo)識(shí)符的詞性標(biāo)記相關(guān)的最大可能詞性。
N-Gram是大詞匯連續(xù)語(yǔ)音識(shí)別中常用的一種語(yǔ)言模型,對(duì)中文而言,我們稱之為漢語(yǔ)語(yǔ)言模型(CLM, Chinese Language Model)。該模型基于這樣一種假設(shè),第N個(gè)詞的出現(xiàn)只與前面N-1個(gè)詞相關(guān),而與其它任何詞都不相關(guān),整句的概率就是各個(gè)詞出現(xiàn)概率的乘積。這些概率可以通過(guò)直接從語(yǔ)料中統(tǒng)計(jì)N個(gè)詞同時(shí)出現(xiàn)的次數(shù)得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
(5)監(jiān)督式分類文本
建立在訓(xùn)練語(yǔ)料(包含了每個(gè)輸入的正確標(biāo)簽)基礎(chǔ)上的分類,叫做監(jiān)督式分類。
語(yǔ)料數(shù)據(jù)組織:開發(fā)集(訓(xùn)練集+開發(fā)測(cè)試集)、測(cè)試集
應(yīng)用:文檔分類、詞性標(biāo)注、探索上下文語(yǔ)境、序列分類
應(yīng)用舉例:句子分割、識(shí)別對(duì)話行為類型、識(shí)別文字蘊(yùn)涵
評(píng)估:測(cè)試集、準(zhǔn)確度、精確度(發(fā)現(xiàn)的項(xiàng)目中有多少是相關(guān)的)和召回率(相關(guān)的項(xiàng)目中發(fā)現(xiàn)了多少)、交叉驗(yàn)證(在不同的測(cè)試集上執(zhí)行多重評(píng)估,然后組合這些評(píng)估的得分)
決策樹:熵、信息增益。自動(dòng)構(gòu)建樹結(jié)構(gòu)的流程圖,用于基于輸入值的特征添加標(biāo)簽。不適合特征值之間有關(guān)聯(lián)。
樸素貝葉斯分類器:每個(gè)特征值獨(dú)立決定應(yīng)該使用哪個(gè)標(biāo)簽,允許特征值之間有關(guān)聯(lián)。
最大熵分類器:跟樸素貝葉斯類似。不過(guò)使用迭代優(yōu)化算法尋找使訓(xùn)練集概率最大化的特征權(quán)值集合。
(6)從文本提取信息
信息提取步驟:將原始文本分割成句(句子分割器)→將句子分割成詞(分詞器)→詞性標(biāo)注→實(shí)體識(shí)別→關(guān)系識(shí)別
(7)分析句子結(jié)構(gòu)
句子的內(nèi)部組織結(jié)構(gòu)用樹來(lái)表示。組成結(jié)構(gòu)的顯著特點(diǎn)是:遞歸、中心詞、補(bǔ)語(yǔ)和修飾語(yǔ)。
文法是可能句子的集合的緊湊型特性;可以說(shuō),一棵樹是符合語(yǔ)法規(guī)則的,或者說(shuō)文法可以授權(quán)為一棵樹。
文法是一種用于描述給定短語(yǔ)是否可以被分配特定成分或依存結(jié)構(gòu)的形式化模型。當(dāng)句子有一個(gè)以上的文法分析時(shí),就會(huì)產(chǎn)生句法歧義。
解析器是尋找一個(gè)或多個(gè)與符合語(yǔ)法規(guī)則句子相對(duì)應(yīng)樹的程序。
下降遞歸解析器是一個(gè)自上而下解析器,利用文法產(chǎn)生式,遞歸可擴(kuò)展開始符號(hào),并嘗試匹配輸入的句子。
移位-規(guī)約解析器是一個(gè)自下而上解析器,它把輸入移到堆棧中,并嘗試匹配堆棧頂部的項(xiàng)目和文法產(chǎn)生式右邊的部分。
(8)基于特征的文法
語(yǔ)法分析固然重要,但要想覆蓋語(yǔ)言的全部,需要進(jìn)一步擴(kuò)展到文法分析,文法分析可以基于規(guī)則,但是工作量難以想象,基于特征的文法分析不但可窮舉,而且可以方便用計(jì)算機(jī)存儲(chǔ)和計(jì)算,
文法是一個(gè)潛在的無(wú)限的句子集合的一個(gè)緊湊的特性,它是通過(guò)一組形式化模型來(lái)表示的,文法可以覆蓋所有結(jié)構(gòu)的句子,對(duì)一個(gè)句子做文法分析,就是把句子往文法模型上靠,如果同時(shí)符合多種文法,那就是有歧義的句子
最重要的結(jié)論:文法結(jié)構(gòu)范圍相當(dāng)廣泛,無(wú)法用規(guī)則類的方法來(lái)處理,只有利用基于特征的方法才能處理
(9)文法特征結(jié)構(gòu)
文法特征舉例:?jiǎn)卧~最后一個(gè)字母、詞性標(biāo)簽、文法類別、正字拼寫、指示物、關(guān)系、施事角色、受事角色
因?yàn)槲姆ㄌ卣魇且环Nkv,所以特征結(jié)構(gòu)的存儲(chǔ)形式是字典
不是什么樣的句子都能提取出每一個(gè)文法特征的,需要滿足一定的條件,這需要通過(guò)一系列的檢查手段來(lái)達(dá)到,包括:句法協(xié)議(比如this dog就是對(duì)的,而these dog就是錯(cuò)的)、屬性和約束、術(shù)語(yǔ)
(10)語(yǔ)義理解
自然語(yǔ)言、語(yǔ)義、邏輯。基于文法規(guī)范,很容易將英語(yǔ)翻譯成SQL。
8、爬蟲項(xiàng)目
Python網(wǎng)絡(luò)數(shù)據(jù)采集:beautifulsoup
from urllib.request import urlopen
from bs4 import BeautifulSoup
基于R語(yǔ)言的自動(dòng)數(shù)據(jù)收集:
網(wǎng)絡(luò)爬蟲技術(shù)簡(jiǎn)介
9、大數(shù)據(jù)項(xiàng)目
Hadoop生態(tài)系統(tǒng)
HDFS:Hadoop分布式文件系統(tǒng)
MapReduce:分布式計(jì)算框架
Hive:基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)
HBase:分布式列存數(shù)據(jù)庫(kù)
Sqoop:數(shù)據(jù)同步工具
10、數(shù)據(jù)科學(xué)項(xiàng)目
(1)數(shù)據(jù)準(zhǔn)備和處理
數(shù)據(jù)源:開源數(shù)據(jù)、文本文件、Excel文件、SQL數(shù)據(jù)庫(kù)、NoSQL數(shù)據(jù)庫(kù)、多媒體、網(wǎng)頁(yè)
數(shù)據(jù)清洗:統(tǒng)計(jì)方法、文本解析(import re正則表達(dá)式)
數(shù)據(jù)轉(zhuǎn)化:ETL(抽取、轉(zhuǎn)化和加載)
數(shù)據(jù)格式:CSV、JSON、XML、YAML
OpenRefine:免費(fèi)開源數(shù)據(jù)清洗工具是一個(gè)幫助用戶轉(zhuǎn)換數(shù)據(jù)集的工具,優(yōu)化數(shù)據(jù)的質(zhì)量以便于在真實(shí)場(chǎng)景中使用,你的數(shù)據(jù)是雜亂無(wú)章的。
(2)可視化
D3網(wǎng)頁(yè)可視化框架(Data-Driven Documents, 數(shù)據(jù)導(dǎo)向文件)
D3.js是一個(gè)JavaScript庫(kù),它可以通過(guò)數(shù)據(jù)來(lái)操作文檔。D3可以通過(guò)使用HTML、SVG和CSS把數(shù)據(jù)鮮活形象地展現(xiàn)出來(lái)。D3嚴(yán)格遵循Web標(biāo)準(zhǔn),因而可以讓你的程序輕松兼容現(xiàn)代主流瀏覽器并避免對(duì)特定框架的依賴。同時(shí),它提供了強(qiáng)大的可視化組件,可以讓使用者以數(shù)據(jù)驅(qū)動(dòng)的方式去操作DOM。
D3技術(shù)框架:HTML、DOM文檔對(duì)象模型、CSS、JavaScript、SVG可伸縮矢量圖形
(3) 文本分類
學(xué)習(xí)和分類:二元分類/多類別分類
分類案例:垃圾郵件分類、演講識(shí)別、搜索引擎、計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別
分類算法:SVM、神經(jīng)網(wǎng)絡(luò)、決策樹、樸素貝葉斯、隱馬爾科夫模型
(4) 圖像相似性檢索
基于內(nèi)容的圖像檢索:小波對(duì)比、傅里葉分析、基于神經(jīng)網(wǎng)絡(luò)的模式識(shí)別
基于描述的圖像檢索:采用與元數(shù)據(jù)相關(guān)聯(lián)的圖像
動(dòng)態(tài)時(shí)間規(guī)整DTW:由于語(yǔ)音信號(hào)是一種具有相當(dāng)大隨機(jī)性的信號(hào),即使相同說(shuō)話者對(duì)相同的詞,每一次發(fā)音的結(jié)果都是不同的,也不可能具有完全相同的時(shí)間長(zhǎng)度。因此在與已存儲(chǔ)模型相匹配時(shí),未知單詞的時(shí)間軸要不均勻地扭曲或彎折,以使其特征與模板特征對(duì)正。用時(shí)間規(guī)整手段對(duì)正是一種非常有力的措施,對(duì)提高系統(tǒng)的識(shí)別精度非常有效。動(dòng)態(tài)時(shí)間規(guī)整DTW是一個(gè)典型的優(yōu)化問(wèn)題,它用滿足一定條件的的時(shí)間規(guī)整函數(shù)W(n)描述輸入模板和參考模板的時(shí)間對(duì)應(yīng)關(guān)系,求解兩模板匹配時(shí)累計(jì)距離最小所對(duì)應(yīng)的規(guī)整函數(shù)。
(5) 蒙特卡洛模擬
依靠隨機(jī)數(shù)生成器的概率分布來(lái)模擬不同行為。
(6) 時(shí)間序列預(yù)測(cè)
平滑時(shí)間序列,非線性回歸(核嶺回歸)
**(7)SVM **
分類三部曲:特征選擇、特征抽取、降維
SVM:結(jié)合核幾何結(jié)構(gòu)所形成的一種有監(jiān)督的分類方法,通過(guò)尋找最優(yōu)決策邊界來(lái)將不同的點(diǎn)劃入其所屬的類別中。
(8)D3.js社會(huì)化圖譜
圖譜就是一組節(jié)點(diǎn)(頂點(diǎn))和連接(邊)的集合。
通過(guò)Netvizz來(lái)捕獲Facebook社會(huì)化圖譜,下載GDF(Graph Modeling Language)文件,使用Gephi進(jìn)行圖譜再現(xiàn)。
(9)社交網(wǎng)絡(luò)數(shù)據(jù)情感分析
通過(guò)OAuth訪問(wèn)Twitter API,使用Twython3進(jìn)行查詢和導(dǎo)出。
Tweet情感分析(訓(xùn)練數(shù)據(jù)→提取特征→單詞包→訓(xùn)練分類器→(積極,消極))
(Tweet查詢→提取特征→訓(xùn)練分類器→(積極,消極))
NLTK樸素貝葉斯分類
(10)MongoDB數(shù)據(jù)管理
MongoDB是一個(gè)面向文件的NoSQL數(shù)據(jù)庫(kù)。
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
(11)MapReduce編程模型
MapReduce將作業(yè)的整個(gè)運(yùn)行過(guò)程分為兩個(gè)階段:Map階段和Reduce階段
Map階段由一定數(shù)量的Map Task組成
輸入數(shù)據(jù)格式解析:InputFormat
輸入數(shù)據(jù)處理:Mapper
數(shù)據(jù)分組:Partitioner
Reduce階段由一定數(shù)量的Reduce Task組成
數(shù)據(jù)遠(yuǎn)程拷貝
數(shù)據(jù)按照key排序
數(shù)據(jù)處理:Reducer
數(shù)據(jù)輸出格式:OutputFormat
11、量化投資
(1)量化選股
多因子選股(打分法、回歸法)
候選因子的選取(基本面指標(biāo) PB/PE/EPS等、技術(shù)面指標(biāo) 動(dòng)量/換手率/波動(dòng)率等、 其他指標(biāo) 分析師預(yù)測(cè)/宏觀經(jīng)濟(jì))→選股因子有效性的檢驗(yàn)(排序,劃分組合)→有效但冗余因子的剔除(相關(guān)性矩陣)→綜合評(píng)分模型的建立和選股→模型檢驗(yàn)
風(fēng)格輪動(dòng)
風(fēng)格鑒別(規(guī)模指標(biāo):基金內(nèi)股票市值中值 大中小盤,估值指標(biāo):基金內(nèi)股票 PB加權(quán)平均+PE加權(quán)平均 價(jià)值型 混合型 成長(zhǎng)型)
輪動(dòng)解釋:經(jīng)濟(jì)周期、反應(yīng)過(guò)度/不足、價(jià)值回歸
風(fēng)格預(yù)測(cè):相對(duì)價(jià)值法(均值回歸理論)、場(chǎng)景預(yù)測(cè)法(因子敏感性)
風(fēng)格策略:風(fēng)格動(dòng)量、風(fēng)格反轉(zhuǎn)
行業(yè)輪動(dòng)
周期性行業(yè)(能源、材料、工業(yè)、金融)
非周期性行業(yè)(消費(fèi)、TMT、醫(yī)藥、電信、公用事業(yè))
M2輪動(dòng)策略:貨幣政策擴(kuò)張時(shí)等權(quán)配置周期性行業(yè),緊縮時(shí)等權(quán)配置非周期性行業(yè)。
市場(chǎng)情緒輪動(dòng)策略:基于趨勢(shì)型技術(shù)指標(biāo)。選擇絕對(duì)強(qiáng)勢(shì)行業(yè)再相對(duì)趨勢(shì)or選擇業(yè)績(jī)基準(zhǔn)強(qiáng)勢(shì)時(shí)段再相對(duì)趨勢(shì)
資金流
MF:資金流。價(jià)格上升時(shí)的成交額,資金流入;價(jià)格下降時(shí)的成交額,資金流出。
策略:待選股票池→基于MF指標(biāo)打分&排序&求和,構(gòu)建股票組合→調(diào)整→統(tǒng)計(jì)檢驗(yàn)。
動(dòng)量反轉(zhuǎn)
行為金融:羊群效應(yīng)(跟風(fēng)),小公司效應(yīng)(小盤股收益高,莊股,炒作),反應(yīng)過(guò)度/不足(選擇性偏差/保守性偏差),動(dòng)量/反轉(zhuǎn)效應(yīng)。
動(dòng)量/反轉(zhuǎn)策略:股票池→形成期(從大到小排序驗(yàn)證動(dòng)量,從小到大排序驗(yàn)證反轉(zhuǎn))→持有期(計(jì)算持有期收益率)
一致預(yù)期
在眾多分析師一致預(yù)期的情況下,投資者會(huì)產(chǎn)生羊群效應(yīng),大量買入/賣出,造成股價(jià)持續(xù)上漲/下跌。
一致預(yù)期模型指標(biāo):EG一致預(yù)期EPS增長(zhǎng)速度、RC賣方分析對(duì)預(yù)期EPS的調(diào)整情況、RA分析師一致預(yù)期EPS的平均水平、AN關(guān)注個(gè)股的分析師數(shù)量、ANV關(guān)注個(gè)股分析師數(shù)量的變動(dòng)率、EY預(yù)期EPS的回報(bào)率
一致預(yù)期模型:采用六大指標(biāo)構(gòu)建股票池,進(jìn)行分組,形成期持有期,看看top組合和bottom組合相對(duì)于業(yè)績(jī)基準(zhǔn)的表現(xiàn)(上證指數(shù)、HS300)
趨勢(shì)跟蹤
向上突破壓力位,向下突破阻力位,意味著趨勢(shì)來(lái)臨。
策略模型:均線簡(jiǎn)化、記錄極點(diǎn)、過(guò)濾微小波動(dòng)(設(shè)置閾值)、高低點(diǎn)比較策略(判斷主趨勢(shì))、突破高低點(diǎn)策略、大波段保護(hù)機(jī)制、長(zhǎng)均線保護(hù)機(jī)制
籌碼選股
根據(jù)某只股票的籌碼分布情況來(lái)判斷漲跌。主力收集籌碼,股價(jià)上升概率大;主力發(fā)散(派發(fā))籌碼,股價(jià)下跌概率大。
籌碼集中度與股票收益率。
業(yè)績(jī)?cè)u(píng)價(jià)
收益率指標(biāo):總收益率、年化復(fù)合收益率、相對(duì)收益率(收益率-benchmark)、alpha收益率(利用股指期貨對(duì)沖系統(tǒng)性風(fēng)險(xiǎn)后的超額收益)
風(fēng)險(xiǎn)度指標(biāo):beta系數(shù)、基于CAPM的估計(jì)、基于單因子模型、夏普比率(rp-rf)/sigmap單位總風(fēng)險(xiǎn)獲得的風(fēng)險(xiǎn)溢價(jià)比如某私募小基金、特雷諾指數(shù)T=(rp-rf/)betap每單位系統(tǒng)風(fēng)險(xiǎn)獲得的風(fēng)險(xiǎn)溢價(jià)比如大型養(yǎng)老基金已經(jīng)分散了非系統(tǒng)風(fēng)險(xiǎn)、最大回撤(歷史最大回撤Max-Recall=(pi-p1)/p1中的最小值)、信息比率(IR=組合跟蹤偏離度的樣本均值TD/組合跟蹤偏離誤差TE)
(2)量化擇時(shí)
趨勢(shì)追蹤
傳統(tǒng)趨勢(shì)指標(biāo):簡(jiǎn)單移動(dòng)平均SMA、指數(shù)平滑異同移動(dòng)平均MACD、平均線差DMA、三重指數(shù)平滑移動(dòng)平均TRIX
單指標(biāo)擇時(shí)策略、多指標(biāo)擇時(shí)策略
自適應(yīng)均線:在行情反復(fù)震蕩的時(shí)候慢一點(diǎn),在行情快速變化的時(shí)候快一點(diǎn)。
市場(chǎng)情緒
基本概念:直接調(diào)查(投資者信心指數(shù))、折溢價(jià)率指標(biāo)(市場(chǎng)情緒高則折溢價(jià)率高)、新股指標(biāo)(市場(chǎng)情緒高,IPO溢價(jià)高)、市場(chǎng)指標(biāo)(資金流量、漲停家數(shù))、投資者行為(新增開戶數(shù)、基金倉(cāng)位、賣空比例、保證金交易、資金出入)
情緒指數(shù):PCA方法:封閉式基金溢價(jià)率、轉(zhuǎn)股溢價(jià)率、IPO首日漲跌幅、IPO發(fā)行PE、上漲家數(shù)百分比、混合型基金平均倉(cāng)位、股票型基金平均倉(cāng)位
時(shí)變夏普率Tsharp:同夏普(單位風(fēng)險(xiǎn)的超額收益,但反經(jīng)濟(jì)周期,即經(jīng)濟(jì)運(yùn)行至高位時(shí)夏普比率較小)
牛熊線:布朗運(yùn)動(dòng)(股票市場(chǎng)是隨機(jī)波動(dòng)的),馬爾科夫過(guò)程(股價(jià)遵循高斯布朗運(yùn)動(dòng))。擇時(shí)策略,股價(jià)在牛線之上,強(qiáng)勢(shì);股價(jià)在熊線之下,弱勢(shì);股價(jià)在牛熊之間,盤整。
Hurst指數(shù):分形市場(chǎng)理論(股價(jià)變化并非隨機(jī)游走,而是具有趨勢(shì)性和序列相關(guān)性)、Hurst指數(shù)(描述市場(chǎng)長(zhǎng)期記憶性的指標(biāo),=0.5時(shí)為隨機(jī)游走,>0.5為趨勢(shì),<0.5為反轉(zhuǎn))
SVM:支持向量機(jī)(SVM)是目前很流行的一個(gè)數(shù)學(xué)方法,主要用于分類與預(yù)測(cè)。擇時(shí)本質(zhì)上是一個(gè)預(yù)測(cè)過(guò)程,即利用過(guò)去的數(shù)據(jù)預(yù)測(cè)未來(lái)一段時(shí)間大盤是上漲還是下跌。但是市場(chǎng)是非線性的,使得傳統(tǒng)的線性預(yù)測(cè)方法效果不佳。由于SVM獨(dú)特的機(jī)制和效果,對(duì)非線性預(yù)測(cè)有非常好的效果,因此利用SVM技術(shù)來(lái)建立擇時(shí)模型,可以有效地避免傳統(tǒng)回歸模型的精度和擴(kuò)展性問(wèn)題。
SWARCH模型:為了研究宏觀經(jīng)濟(jì)與證券市場(chǎng)趨勢(shì)之間穩(wěn)定的關(guān)聯(lián)度,海通證券改變了以往構(gòu)建單一模型,研究?jī)烧唛L(zhǎng)期均衡關(guān)系的做法,轉(zhuǎn)而從周期屬性和宏觀背景角度出發(fā),引入隱性變量對(duì)宏觀經(jīng)濟(jì)周期和市場(chǎng)趨勢(shì)進(jìn)行了合理的刻畫,并以此為重要前提,構(gòu)建了度量宏觀經(jīng)濟(jì)周期與證券市場(chǎng)趨勢(shì)及其相互影響關(guān)系的SWARCH 模型。該模型的基本思路:某些宏觀經(jīng)濟(jì)指標(biāo)對(duì)市場(chǎng)的運(yùn)行軌跡起著明顯的制約作用,但這種制約關(guān)系并不表現(xiàn)為每一期數(shù)據(jù)之間的一一對(duì)應(yīng)關(guān)系,因此我們著重研究的是宏觀經(jīng)濟(jì)周期與市場(chǎng)趨勢(shì)之間的轉(zhuǎn)移概率分布。我們利用該模型對(duì)諸多宏觀經(jīng)濟(jì)變量進(jìn)行了測(cè)試,結(jié)果發(fā)現(xiàn),以m2 環(huán)比增速為基礎(chǔ)指標(biāo)構(gòu)建的貨幣供應(yīng)周期與證券市場(chǎng)之間的關(guān)聯(lián)度最強(qiáng)也最穩(wěn)定,并且貨幣供應(yīng)周期具有領(lǐng)先市場(chǎng)趨勢(shì)的特征,最佳領(lǐng)先期為一期,即一個(gè)月。
異常指標(biāo):市場(chǎng)噪聲(噪聲交易者(交易者在缺乏正確信息的情況下密集的買賣行為)、噪聲交易指數(shù))、行業(yè)集中度(行業(yè)相關(guān)性集中度)、興登堡兇兆(預(yù)測(cè)走勢(shì)轉(zhuǎn)弱或暴跌,劇烈下跌引發(fā)的恐慌性拋售)
(3)股指期貨套利
利用股指期貨市場(chǎng)存在的不合理價(jià)格,同時(shí)參與股指期貨交易與股票現(xiàn)貨市場(chǎng)交易,或者同時(shí)進(jìn)行不同期限不同但相近類別股指期貨交易,以賺取買賣價(jià)差。分為期現(xiàn)套利、跨期套利、跨市套利、跨品種套利。
期現(xiàn)套利是指某種期貨合約,當(dāng)期貨市場(chǎng)與現(xiàn)貨市場(chǎng)在價(jià)格上出現(xiàn)差距,從而利用兩個(gè)市場(chǎng)的價(jià)格差距,低買高賣而獲利。買入股指期貨合約的同時(shí)賣出相同價(jià)值的現(xiàn)貨組合,無(wú)風(fēng)險(xiǎn)套利。理論上,期貨價(jià)格是商品未來(lái)的價(jià)格,現(xiàn)貨價(jià)格是商品目前的價(jià)格,按照經(jīng)濟(jì)學(xué)上的同一價(jià)格理論,兩者間的差距,即“基差”(基差=現(xiàn)貨價(jià)格-期貨價(jià)格)應(yīng)該等于該商品的持有成本。一旦基差與持有成本偏離較大,就出現(xiàn)了期現(xiàn)套利的機(jī)會(huì)。其中,期貨價(jià)格要高出現(xiàn)貨價(jià)格,并且超過(guò)用于交割的各項(xiàng)成本,如運(yùn)輸成本、質(zhì)檢成本、倉(cāng)儲(chǔ)成本、開具發(fā)票所增加的成本等等。 期現(xiàn)套利主要包括正向買進(jìn)期現(xiàn)套利和反向買進(jìn)期現(xiàn)套利兩種。
跨期套利就是在同一期貨品種的不同月份合約上建立數(shù)量相等、方向相反的交易頭寸,最后以對(duì)沖或交割方式結(jié)束交易、獲得收益的方式。最簡(jiǎn)單的跨期套利就是買入近期的期貨品種,賣出遠(yuǎn)期的期貨品種。
(4)商品期貨套利
期現(xiàn)套利:同一種商品在期貨市場(chǎng)和現(xiàn)貨市場(chǎng)之間的不合理價(jià)差進(jìn)行的套利行為。
跨期套利:在同一商品期貨品種的不同合約月份建立數(shù)量相等方向相反的頭寸,最后以對(duì)沖或交割方式結(jié)束交易、獲得收益的方式。
跨市場(chǎng)套利:同一商品期貨品種在不同市場(chǎng)之間的套利。
跨品種套利:利用兩種不同的但相互關(guān)聯(lián)的商品之間的合約價(jià)格差異進(jìn)行的套利。
(5)統(tǒng)計(jì)套利
統(tǒng)計(jì)套利是將套利建立對(duì)歷史數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的基礎(chǔ)之上,估計(jì)相關(guān)變量的概率分布,并結(jié)合基本面數(shù)據(jù)進(jìn)行分析以用以指導(dǎo)套利交易。相比于無(wú)風(fēng)險(xiǎn)套利,統(tǒng)計(jì)套利少量增加了一些風(fēng)險(xiǎn),但是由此可獲得的套利機(jī)會(huì)將數(shù)倍于無(wú)風(fēng)險(xiǎn)套利。期現(xiàn)套利是無(wú)風(fēng)險(xiǎn)套利(期現(xiàn)價(jià)格必收斂一致),跨期套利是一種風(fēng)險(xiǎn)套利(統(tǒng)計(jì)套利),因?yàn)閮r(jià)格在近月期不一定收斂。
經(jīng)典的統(tǒng)計(jì)套利——配對(duì)交易。配對(duì)交易(Pairs Trading)是經(jīng)典統(tǒng)計(jì)套利策略之一。它的基本思想是:在同一行業(yè)中尋找兩只股價(jià)具備均衡關(guān)系的股票,當(dāng)它們的價(jià)格走勢(shì)偏離正常值時(shí),做多近期相對(duì)弱勢(shì)股,做空近期相對(duì)強(qiáng)勢(shì)股,并期待它們的股價(jià)會(huì)在將來(lái)某個(gè)時(shí)點(diǎn)趨于一致。
做空,需要配合融資融券交易。同行業(yè)主營(yíng)業(yè)務(wù)相近的兩只股票,由于受到的行業(yè)基本面影響相似,在個(gè)股無(wú)重大促發(fā)因素前提下,兩者股價(jià)走勢(shì)不會(huì)出現(xiàn)太大偏離。
(6)期權(quán)套利
垂直套利:交易方式表現(xiàn)為按照不同的執(zhí)行價(jià)格同時(shí)買進(jìn)和賣出同一合約月份的看漲期權(quán)或看跌期權(quán)。主要包括四種形式:牛市看漲期權(quán)(買低C賣高C)、牛市看跌期權(quán)(買低P賣高P)、熊市看漲期權(quán)(賣低C買高C)、熊市看跌期權(quán)(賣低P買高P)。
水平套利:遠(yuǎn)期期權(quán)與近期期權(quán)有不同的時(shí)間衰退速度,在正常情況下近期期權(quán)比遠(yuǎn)期期權(quán)的衰減更快,因此,水平套利的做法是買遠(yuǎn)期期權(quán),賣近期期權(quán)。
跨式套利:以相同的執(zhí)行價(jià)格同時(shí)買進(jìn)或賣出不同種類的期權(quán),分為買入跨式套利、賣出跨式套利。1) 買入跨式套利:以相同的執(zhí)行價(jià)格同時(shí)買入同期看漲期權(quán)和看跌期權(quán),希望波動(dòng)性增大。2) 賣出跨式套利:以相同的執(zhí)行價(jià)格同時(shí)賣出同期看漲期權(quán)和看跌期權(quán),希望波動(dòng)性變小。
寬跨式套利:投資者同時(shí)買進(jìn)或賣出相同標(biāo)的物,相同到期日,但不同執(zhí)行價(jià)格的看漲期權(quán)和看跌期權(quán),分為買入寬跨式套利、賣出寬跨式套利。1) 買入寬跨式套利(買低P買高C):以較低的執(zhí)行價(jià)格買入看跌期權(quán),并以較高的執(zhí)行價(jià)格買入看漲期權(quán)。2) 賣出寬跨式套利(賣低P賣高C):以較高的執(zhí)行價(jià)格賣出看漲期權(quán),并以較低的執(zhí)行價(jià)格賣出看跌期權(quán)。
(7)算法交易
算法交易又被稱為自動(dòng)交易、黑盒交易或者機(jī)器交易,它指的是通過(guò)使用計(jì)算機(jī)程序來(lái)發(fā)出交易指令的方法。在交易中,程序可以決定的范圍包括交易時(shí)間的選擇、交易的價(jià)格、甚至可以包括最后需要成交的證券數(shù)量。
算法交易最初誕生是為了將大單拆分成大量較小的交易減少對(duì)市場(chǎng)的沖擊、降低機(jī)會(huì)成本和風(fēng)險(xiǎn)。隨著相關(guān)技術(shù)的發(fā)展完善,算法交易因其優(yōu)勢(shì)開始被應(yīng)用在更多方面的用途上。如對(duì)沖投資組合使用它來(lái)在電子新聞信息到達(dá)時(shí)實(shí)現(xiàn)迅速交易,而其他交易員甚至還不知道到信息的存在。
算法交易分類:根據(jù)各個(gè)算法交易中算法的主動(dòng)程度不同,可以把不同算法交易分為被動(dòng)型算法交易(TWAP/VWAP)、主動(dòng)型算法交易、綜合型算法交易三大類。
TWAP,時(shí)間加權(quán)平均價(jià)格算法,是一種最簡(jiǎn)單的傳統(tǒng)算法交易策略,主要適用于流動(dòng)性較好的市場(chǎng)和訂單規(guī)模較小的交易。該模型將交易時(shí)間進(jìn)行均勻分割,并在每個(gè)分割節(jié)點(diǎn)上等量拆分訂單進(jìn)行提交。例如,可以將某個(gè)交易日的交易時(shí)間平均分為N段,TWAP策略會(huì)將該交易日需要執(zhí)行的訂單均勻分配在這N個(gè)時(shí)間段上去執(zhí)行,從而使得交易均價(jià)跟蹤TWAP。
VWAP,成交量加權(quán)平均價(jià)格算法,是目前市場(chǎng)上最為流行的算法交易策略之一,也是很多其他算法交易模型的原型。該模型是將一段時(shí)間內(nèi)證券價(jià)格按成交量加權(quán)得出的平均值,即VWAP是對(duì)一段時(shí)間市場(chǎng)上所有交易活動(dòng)平均價(jià)格的衡量。
改進(jìn)型的VWAP策略的基本原理是:在市場(chǎng)價(jià)格高于市場(chǎng)均價(jià)的時(shí)候,根據(jù)市場(chǎng)價(jià)格的走勢(shì)不同程度的減少提交量,在保證高價(jià)位的低提交量的同時(shí),能夠防止出現(xiàn)價(jià)格的持續(xù)上漲而提交量過(guò)度的向后聚集;在市場(chǎng)價(jià)格低于市場(chǎng)均價(jià)的時(shí)候,根據(jù)市場(chǎng)價(jià)格走勢(shì)不同策劃那個(gè)度的增加提交量,在保證低價(jià)位的高提交量的同時(shí),能夠防止價(jià)格的持續(xù)走低而提交量過(guò)度的提前完成。
(8)另類套利
封閉式基金套利:根據(jù)折價(jià)率,買入高折價(jià)基金,賣出低折價(jià)基金,實(shí)現(xiàn)穩(wěn)健的alpha收益
ETF套利:利用ETF在一級(jí)市場(chǎng)和二級(jí)市場(chǎng)的價(jià)格差來(lái)進(jìn)行套利
高頻交易:流動(dòng)性回扣交易(交易所向創(chuàng)造流動(dòng)性的券商提供交易費(fèi)用回扣)、獵物算法交易(制造人為的價(jià)格來(lái)誘使機(jī)構(gòu)投資者提高買入價(jià)格或降低賣出價(jià)格)、自動(dòng)做市商策略(通過(guò)發(fā)出超級(jí)快速訂單來(lái)發(fā)現(xiàn)其他投資者投資意向)、程序化交易。
(9)小波變換
金融時(shí)間序列具有非平穩(wěn)、非線性和信噪比高的特點(diǎn),小波變化根據(jù)時(shí)頻局部化,具有自適應(yīng)和顯微鏡性質(zhì),將時(shí)間序列進(jìn)行分解(Mallat算法),然后平滑,再進(jìn)行重構(gòu),從而轉(zhuǎn)變?yōu)槠椒€(wěn)去噪的時(shí)間序列,再去進(jìn)行分析和預(yù)測(cè)。
(10)SVM
主要用于對(duì)非線性金融時(shí)間序列進(jìn)行預(yù)測(cè),先由訓(xùn)練樣本對(duì)模型進(jìn)行訓(xùn)練和完備,然后進(jìn)行預(yù)測(cè)并輸出結(jié)果。
(11)分形理論
描述復(fù)雜系統(tǒng)的局部特征,金融中用于描述價(jià)格波動(dòng)特征。分形市場(chǎng)理論(股價(jià)變化并非隨機(jī)游走,而是具有趨勢(shì)性和序列相關(guān)性)、Hurst指數(shù)(描述市場(chǎng)長(zhǎng)期記憶性的指標(biāo),=0.5時(shí)為隨機(jī)游走,>0.5為趨勢(shì),<0.5為反轉(zhuǎn))
(12)隨機(jī)過(guò)程
一連串隨機(jī)事件動(dòng)態(tài)關(guān)系的定量描述。獨(dú)立增量過(guò)程,泊松過(guò)程,維納過(guò)程,正態(tài)過(guò)程,馬爾科夫過(guò)程。
馬爾科夫過(guò)程:用來(lái)對(duì)股市大盤進(jìn)行預(yù)測(cè),預(yù)測(cè)的對(duì)象是一個(gè)隨機(jī)變化的動(dòng)態(tài)系統(tǒng),根據(jù)狀態(tài)之間的轉(zhuǎn)移概率來(lái)推測(cè)系統(tǒng)未來(lái)的發(fā)展,轉(zhuǎn)移概率反映了各種隨機(jī)因素的影響程度。
(13)量化對(duì)沖系統(tǒng)
系統(tǒng)架構(gòu):數(shù)據(jù)源(歷史交易數(shù)據(jù)、歷史分析數(shù)據(jù)、實(shí)時(shí)行情數(shù)據(jù)、實(shí)時(shí)分析數(shù)據(jù))→數(shù)據(jù)分析引擎→策略分析/機(jī)會(huì)監(jiān)控→程序化交易
核心算法:選股策略、擇時(shí)策略、策略整合(分層整合、交集整合)
12、數(shù)據(jù)庫(kù)基礎(chǔ)(SQL)
(1)基本術(shù)語(yǔ):實(shí)體、列、行、表、結(jié)果集(SQL查詢結(jié)果,未持久化的表)、主鍵(唯一標(biāo)識(shí)表中的一個(gè)或多個(gè)列)、外鍵(用于識(shí)別其他表中的某列)
(2)SQL:結(jié)構(gòu)化查詢語(yǔ)言
create table
insert data
select name from table where id=007
update table
delete data
MySQL:MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL數(shù)據(jù)類型:字符型(char),文本型(text),數(shù)值型(int,float,double),時(shí)間型(date,year,time)
創(chuàng)建表(設(shè)計(jì)、精化、構(gòu)建SQL方案語(yǔ)句)
操作與修改表(插入數(shù)據(jù)insert、更新數(shù)據(jù)update、刪除數(shù)據(jù)delete)
導(dǎo)致錯(cuò)誤的語(yǔ)句(主鍵不唯一、不存在的外鍵、列值不合法、無(wú)效的日期轉(zhuǎn)換)
(3)查詢:select列名 from表名 (inner join on表連接)where條件 (group by having,過(guò)濾掉不需要的分組) order by排序(默認(rèn)升序,降序加desc)
(4)過(guò)濾:where 條件1 and/or (not) 條件2;條件類型(=,<>,between a and b,通配符,正則表達(dá)式)
(5)連接: select 列 from 表 inner join 表 on 條件
(6)集合: union并集 intersect交集 except差集
(7)數(shù)據(jù)處理:字符型(生成set 操作length locate strcmp replace) 數(shù)值型(算術(shù)函數(shù)mod pow 控制精度ceil上進(jìn) floor下進(jìn) round四舍五入 sign取符號(hào) abs絕對(duì)值) 時(shí)間型(date datetime time) 轉(zhuǎn)換函數(shù)cast(select cast('999ABC111' as unsigned integer))
(8)分組與聚集: group by having, max min avg sum count
(9)子查詢: select嵌套 select 列 from 表 where 條件(select from where)
13、深度學(xué)習(xí)工具
(1)Caffe: 基于C++/CUDA/Python實(shí)現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)框架。
在python中 import caffe
Caffe's Abstract Framework:
要讀懂Caffe,首先要熟悉Blob,Layer,Net,Solver這幾個(gè)大類。這四個(gè)大類自下而上,環(huán)環(huán)相扣,貫穿了整個(gè)Caffe的結(jié)構(gòu),下面先分別簡(jiǎn)單地介紹一下這四個(gè)類的主要作用。
Blob:作為數(shù)據(jù)傳輸?shù)拿浇椋瑹o(wú)論是網(wǎng)絡(luò)權(quán)重參數(shù),還是輸入數(shù)據(jù),都是轉(zhuǎn)化為Blob數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)
Layer:作為網(wǎng)絡(luò)的基礎(chǔ)單元,神經(jīng)網(wǎng)絡(luò)中層與層間的數(shù)據(jù)節(jié)點(diǎn)、前后傳遞都在該數(shù)據(jù)結(jié)構(gòu)中被實(shí)現(xiàn),層類種類豐富,比如常用的卷積層、全連接層、pooling層等等,大大地增加了網(wǎng)絡(luò)的多樣性
Net:作為網(wǎng)絡(luò)的整體骨架,決定了網(wǎng)絡(luò)中的層次數(shù)目以及各個(gè)層的類別等信息
Solver:作為網(wǎng)絡(luò)的求解策略,涉及到求解優(yōu)化問(wèn)題的策略選擇以及參數(shù)確定方面,修改這個(gè)模塊的話一般都會(huì)是研究DL的優(yōu)化求解的方向。
(2)Torch: Torch7 是一個(gè)科學(xué)計(jì)算框架,支持機(jī)器學(xué)習(xí)算法。易用而且提供高效的算法實(shí)現(xiàn),得益于 LuaJIT(采用C語(yǔ)言寫的輕量腳本語(yǔ)言Lua代碼的解釋器)和一個(gè)底層的 C 實(shí)現(xiàn)。
(3)MxNet: 是一款設(shè)計(jì)為效率和靈活性的深度學(xué)習(xí)框架。它允許你混合符號(hào)編程和命令式編程,從而最大限度提高效率和生產(chǎn)力。在其核心是一個(gè)動(dòng)態(tài)的依賴調(diào)度,它能夠自動(dòng)并行符號(hào)和命令的操作。支持Python,Julia和R。
(4)TensorFlow: Google開源。異構(gòu)分布式系統(tǒng)上的大規(guī)模機(jī)器學(xué)習(xí)框架。TensorFlow? 是一個(gè)采用數(shù)據(jù)流圖(data flow graphs),用于數(shù)值計(jì)算的開源軟件庫(kù)。節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作,圖中的線(edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。它靈活的架構(gòu)讓你可以在多種平臺(tái)上展開計(jì)算,例如臺(tái)式計(jì)算機(jī)中的一個(gè)或多個(gè)CPU(或GPU),服務(wù)器,移動(dòng)設(shè)備等等。TensorFlow 最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開發(fā)出來(lái),用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,但這個(gè)系統(tǒng)的通用性使其也可廣泛用于其他計(jì)算領(lǐng)域。
(5)Theano: 基于Python的深度學(xué)習(xí)框架。Theano是一個(gè)Python庫(kù),專門用于定義、優(yōu)化、求值數(shù)學(xué)表達(dá)式,效率高,適用于多維數(shù)組。
(6)Keras:Keras是基于Theano的一個(gè)深度學(xué)習(xí)框架,它的設(shè)計(jì)參考了Torch,用Python語(yǔ)言編寫,是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),支持GPU和CPU。作為基于python的最流行的深度學(xué)習(xí)框架,Keras以其快速上手,支持Theano/Tensorflow無(wú)縫切換,文檔豐富等若干優(yōu)點(diǎn)廣受好評(píng)……額好吧總體來(lái)說(shuō)它還是比較小眾就是了。雖然也有很多缺點(diǎn),但做快速原型真是不錯(cuò)。
(7)CNTK:微軟推出的深度學(xué)習(xí)開源框架。俞棟:就我個(gè)人所知,許多新的語(yǔ)音識(shí)別模型都是基于CNTK開發(fā)的。我們一開始開發(fā)CNTK主要就是為語(yǔ)音識(shí)別的研究服務(wù)的。即使今天CNTK能方便地支持圖像、視頻、文本、以及其他信息的處理,它對(duì)于語(yǔ)音識(shí)別模型的支持仍然比較好。CNTK非常靈活,它支持各種主流模型,比如 DNN、CNN、LSTM,同時(shí)可以自定義各種新模型,比如PIT模型和PAC模型就都是完全由CNTK構(gòu)建的。另外,因?yàn)镃NTK也是我們產(chǎn)品線上的主要工具,所以我們開發(fā)了許多高效率高性能的并行算法。這些算法極大地提升了像語(yǔ)音識(shí)別這樣需要大量訓(xùn)練數(shù)據(jù)的任務(wù)的訓(xùn)練速度。另外,我們?cè)谝呀?jīng)發(fā)布的1.5和1.6版本中已經(jīng)有對(duì)Python的支持。