3 $\sigma$法則
在正態分佈中σ代表標準差,μ代表均值x=μ即為影像的對稱軸.三σ原則即為
數值分佈在(μ—σ,μ+σ)中的概率為0.6526
數值分佈在(μ—2σ,μ+2σ)中的概率為0.9544
數值分佈在(μ—3σ,μ+3σ)中的概率為0.9974
z-score
z分數(z-score),也叫標準分數(standard score)是一個數與平均數的差再除以標準差。
z-score可以回答以下問題:一個給定的觀測值距離平均數多少個標準差?在平均數之上的分數會得到一個正的標準分數,在平均數之下的分數會得到一個負的標準分數。 z分數是一種可以看出某分數在分佈中相對位置的方法。
總體的z-score: ,通常總體的均值和方差未知,我們可以使用樣本的均值和樣本方差來估計,得到樣本的z-score:
TSS=ESS+RSS
證明過程參考:https://stats.stackexchange.com/questions/248397/total-sum-of-squarestss-is-not-equal-ess-rss-when-the-model-doesnt-include
需要注意的是上式成立的條件是必須有一個非0的截距引數$\beta_0$,否則沒有代數殘差之和為0的結論,因此TSS就不等於RSS+ESS!!
https://blog.csdn.net/strwolf/article/details/72621692
其中的核心點是 $\sum (Y_i-\widehat{Y_i}) = 0$ 這是OLS這個模型求解最有問題時,令目標函式對係數的導數為0得到的必然結果,而不是任何假設!
nd-array/scipy sparse matrices/pandas dataframe
sparse matrice是scipy包定義的一種緊湊稀疏矩陣資料組織方式,特別適合於有大量0值的稀疏矩陣,因為會大大降低記憶體空間的佔用。
pandas dataframe基於numpy的nd-array
https://docs.scipy.org/doc/scipy/reference/sparse.html
ndarray axis
對於大於1維的numpy陣列,我們就定義了數軸的概念。一個2維陣列有兩個軸, axis 0是垂直方向,作為第一個軸向下延伸跨過相應的行, 而axis 1則是水平方向,定義為跨過不同的列。很多數學操作都能夠指定在哪個軸上進行。比如,我們可以計算每一行的sum,這時我們sum要執行的是對column的計算,也就是axis 1:
>>> x = np.arange(12).reshape((3,4)) >>> x array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> x.sum(axis=1) array([ 6, 22, 38])
feature extraction:特徵提取
所有的機器學習演算法的輸入就是一堆行列構成的數字集合,那麼問題來了一般性問題的輸入可能並非數字,比如nlp自然語言處理,得到的語料都是文字,使用之前必須做特徵提取的工作,將自然語言編碼變換為對計算機有意義的資料。還有一種情況是降維時的特徵提取
structured learning/unstructured learning
https://pystruct.github.io/intro.html
結構化學習預測是經典監督式學習:分類和迴歸範例的一個泛化。分類演算法也好,迴歸演算法也好都可以更加抽象為以下本質的過程:
尋找到一個針對訓練資料集能夠最小化損失函式L值的函式F,所不同的是演算法函式$F$以及損失函式樣式$L$.比如,針對分類問題,目標為離散的標籤類別,而loss通常就是0-1 loss,即:計數分類錯誤總數。而在迴歸問題中,目標是實數值,loss通常用MSE均方差.
機器學習的本質實際上可以簡化為尋找一個函式F,使得輸入data到F能夠對映為對應的輸出:
而在結構化學習範疇中,target和loss都或多或少可能是任意的。這意味著我們的目標不再是預測一個分類標籤或者一個數值,而可能是更加複雜的物件:比如一個序列或者一副圖片。
https://blog.csdn.net/qq_32690999/article/details/78840312
http://yoferzhang.com/post/20170326ML01Introduction/
結構化學習統一框架:
找到一個函式F->評估F(x,y)物件x和y有多麼匹配。
imbalanced dataset
http://contrib.scikit-learn.org/imbalanced-learn/stable/introduction.html
problem setting:
機器學習實際問題解決時,第一步我們需要對問題進行分類:比如是監督式學習還是無監督學習,分類還是迴歸。。這個流程稱為problem setting
sklearn estimator
在sklearn中,一個estimator是一個python的object,這個物件實現了$fit(X,y)$方法以及$predict(T)$方法,分別用於訓練集的學習和預測集的預測。例如$sklearn.svm.SVC$類就實現了支援向量學習機分類器演算法。
sklearn通用流程:
1d/2d array
1d array就是一個numpy一維陣列,其.shape值為1,是一個向量
2d array就是一個numpy的二維陣列,其.shape屬性的值為2,通常代表一個矩陣
array-like
在sklearn的estimator或者函式的輸入資料一般是array-like的資料。只要numpy.asarray呼叫後能夠產生一個適當shape的array(通常是1維或者2維的)的資料,都是array-like的資料。比如:
- numpy array
- list of numbers
- list of length-k lists
- pandas.DataFrame
- pandas.Series
注意不是array-like的有: sparse matrix, an iterator, a generator
model persistence
模型訓練完畢後,我們可能希望儲存訓練的結果,下次可以直接使用即可。可以使用的模組有:python內建的pickle或者第三方庫joblib
sklearn estimator
estimator是任何能夠從資料中學習pattern的物件,他可以是一個分類器,迴歸演算法,或者聚類,或者是一個從原始資料中提取有用特徵的transformer
所有的estimator都有一個fit方法,該方法通常接收一個2d陣列。當estimator完成fit後,相應引數的估計值就從資料中學習出來。所有估計的引數都作為estimator以 _ 結尾的屬性存在,比如$estimator.estimated_param_$
維數詛咒(The curse of dimensionality)
https://blog.csdn.net/u010182633/article/details/45895493
要訓練一個泛化能力高的分類器,特徵的維數非常重要,太高的維數非常容易導致過擬合,結果就是雖然訓練結果非常好,但是未見過的資料預測效果極差。要訓練得到更好的效果,所需要的資料樣本呈現指數級別的提高。
jacobian矩陣和hessian矩陣
http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/
jacobian矩陣和hessian矩陣主要用於優化演算法中,提供梯度(導數)的數值矩陣。
L2 Norm/L1 Norm/Elastic Net
優化目標函式時我們往往會增加一個懲罰項以免模型過於複雜出現過擬合。常見的懲罰項有
ensemble演算法
整合演算法(ensemble)的目標是將多個使用給定學習演算法學習出來的base estimator的預測輸出結合起來,總體決策用於提高模型泛化能力及健壯性。
有兩種思路:
averaging(bagging)
首先獨立地構建多個estimator,然後將他們的輸出預測值做平均,這樣總的來說,比一個單獨的estimator效果要更好。原因是降低了variance of a base estimator,比如:bagging method,forest of randomized trees.
boosting
多個base estimator順序構建,後建的estimator用於減少最終模型的bias.比如AdaBoost, Gradient Tree Boosting,XGBoost
Bagging methods come in many flavours but mostly differ from each other by the way they draw random subsets of
the training set:
• When random subsets of the dataset are drawn as random subsets of the samples, then this algorithm is known
as Pasting [B1999].
• When samples are drawn with replacement, then the method is known as Bagging [B1996].
• When random subsets of the dataset are drawn as random subsets of the features, then the method is known as
Random Subspaces [H1998].
• Finally, when base estimators are built on subsets of both samples and features, then the method is known as
Random Patches [LG2012].
voting:
同一個問題使用不同型別的模型分別預測,得到的結果做voting得到最終的結果。。
變數相關性的卡方檢驗 vs 線性相關檢驗的相關係數
在搭建模型時,自變數資料不能是線性相關的,以及自變數和因變數是必須緊密相關的這兩點都非常重要。如果模型中的輸入變數本身具有線性相關性,那麼會導致"多重共線性"問題;如果模型中某個輸入的特徵和因變數根本不相關(獨立的)(無論是線性的還是非線性的),那麼我們就不應該在建模時引入該變數,因為這將突然增加模型複雜度。同時,如果輸入自變數太多,會很容易導致模型過擬合,因此有必要降維處理,這時我們就需要將輸入變數和因變數之間的相關程度來做一下排序。
因此,如何檢驗線性相關性以及獨立性就非常重要了。一般來說,線性相關性的檢測可以通過相關係數來檢查,而獨立性可以通過卡方檢驗來完成。
其中A為實際值,也就是第一個四格表裡的4個資料,T為理論值,也就是理論值四格表裡的4個資料。
x2用於衡量實際值與理論值的差異程度(也就是卡方檢驗的核心思想),有了卡方值查表看看是否滿足95%置信
下面是一個卡方檢驗的連結:
https://blog.csdn.net/snowdroptulip/article/details/78770088
嵌入式系統中使用的機器學習C庫 libsvm
https://www.csie.ntu.edu.tw/~cjlin/libsvm/