多分類問題優先選擇SVM,隨機森林,其次是邏輯回歸。
朴素貝葉斯和線性回歸都是比較簡單的模型,對於數據的要求比較高,功能不是特別強大。
1、決策樹
不需要對數據做任何預處理,
2、隨機森林
3、數據預處理與特征工程
(1)數據預處理:只需要X
- 數據無量鋼化:標准化(轉化為正態分布)、歸一化(不改變數據原始分布,改變范圍,默認(0-1))
- 處理缺失值:可用均值、眾數、中位數、其他字符型或者數值型值填補
- 處理分類型變量:使用編碼處理字符型變量。一般對於有序變量或者有距變量可使用普通的編碼方式;對於名義變量采用獨熱編碼方式將其轉化為啞變量。
- 處理連續型變量:二值化、分箱。
另外還有去除重復值、處理異常值,樣本不均衡等問題。
預處理中大部分功能都是為了使數據滿足模型的需求,但是數據的無量綱化有着特殊的功能:在梯度和矩陣為核心的算法中,譬如邏輯回歸,支持向量機,神經網絡,無量綱化可以加快求解速度;而在距離類模型,譬如K近鄰,K-Means聚類中,無量綱化可以幫我們提升模型精度,避免某一個取值范圍特別大的特征對距離計算造成影響。
(2)特征選擇:
- 方差過濾:去除區分度較低的特征。(只需要X)
- 相關性檢驗:去除與標簽y相關性較低的特征,卡方檢驗、F檢驗、互信息法。(需要X和Y)
- Embedded嵌入法:利用 SelectFromModel和真正所需模型,以及X,Y
- Wrapper包裝法:利用RFE,結合任意一種模型,以及X,Y
(3)一般我們是先分訓練集和測試集,再進行數據預處理或者特征選擇。
- 處理訓練集時:只用訓練集,因為我們不能夠把測試集數據的任何信息帶入到模型中,如果在填補缺失值的時候用所有數據的均值來進行填補,就相當於把測試集的數據帶入到了模型中。
- 處理測試集時:只用訓練集,有些時候測試集非常小甚至只有一條數據,這時候就無法計算它的統計量信息,我們可以用訓練集fit模型,然后用該模型處理測試集。或者對於fit模型不需要Y數據的數據預處理和特征選擇方法也可以使用全數據fit,然后應用於測試數據。
4、降維算法
(1)PCA是一種無監督學習算法,是將較多維的特征映射到較少維空間的方法。
(2)PCA通過特征值分解得到對角矩陣∑(對角元素是方差)來找出空間V,PCA使用方差作為信息量的衡量指標。
(3)SVD使用奇異值分解得到對角矩陣∑(對角元素是奇異值)來找出空間V,SVD中用奇異值來衡量特征上的信息量的指標
(4)無論是PCA和SVD都需要遍歷所有的特征和樣本來計算信息量指標,因此計算緩慢。
(5) sklearn將降維流程拆成了兩部分:一部分是計算特征空間V,由奇異值分解完成,另一部分是映射數據和求解新特征矩陣(衡量指標是方差),由主成分分析完成,實現了用SVD的性質減少計算量,卻讓信息量的評估指標是方差。
5、邏輯回歸(基於概率,最大似然,梯度下降求參數)
(1)邏輯回歸是基於概率的模型,對於每一個樣本有函數該函數是對樣本的預測結果。原理為:通過引入聯系函數(Sigmoid函數)將線性回歸的結果映射至(0,1)之間,且當g(z)接近0時樣本的標簽為類別0,當g(z)接近1時樣本的標簽為類別1,這樣就得到了一個分類模型。且邏輯回歸可以不僅可以得到分類結果還可以計算得分,可用於制作評分卡。
(2)利用二元邏輯回歸的一般形式Yθ(x),使用最大似然法(即是使得所有樣本都預測正確)和推倒出邏輯回歸的損失函數:
(3)我們只要追求損失函數的最小值,就能讓模型在訓練數據上的擬合效果最好,預測損失最低。用梯度下降法求損失函數的最小值(小球的例子),對其中的參數θ求導得到梯度向量:
梯度向量的反方向即是損失函數下降最快的方向,有關於θ的迭代函數:
其中α是步長,α*d代表自變量θ每次迭代移動的距離,-d的方向代表其移 動的方向。迭代得到使得損失函數最小的θ就是要求的參數。
(4)正則化:雖然邏輯回歸和線性回歸是天生欠擬合的模型,但我們還是需要控制過擬合的技術來幫助我們調整模型,對邏輯回歸中過擬合的控制,通過正則化來實現。
(5)邏輯回歸數學原理理解較為復雜,且它原理中的類概率並不是真正意義上的概率,但是由於計算速度快,對線性關系的擬合非常好,所以還是受到了青睞。
6、聚類算法—Kmeans(基於距離,內聚外遠,迭代)
(1)對於無監督學習算法,我們無法通過真實值與預測值的比較來衡量模型的好壞。因為無監督學習本身是對數據的一種探索,我們需要根據實際的業務需求來選取聚類結果。
(2) Inertia,簇內距離平方和。是衡量聚類的一個指標,我們可以近似將其看作損失函數。這是因為對於求參的模型(例如邏輯回歸-梯度下降、線性回歸-最小二乘(or梯度下降),SVM-梯度下降等)我們可以通過最小化損失函數的方法來得到好的模型參數,而在KMeans中,我們在一個固定的簇數K下,最小化總體平方和來求解最佳質心,並基於質心的存在去進行聚類。(雖然在聚類迭代的過程沒有計算inertia,但是在質心不斷變化不斷迭代的過程中,總體平方和是越來越小的,我們可以使用數學來證明,當整體平方和最小的時候,質心就不再發生變化了)
(3)但是inertia作為聚類的衡量指標但是其有許多缺點,例如沒有范圍,會隨着k的增大而減小(不是客觀的衡量指標)、對於數據分布有假設等缺點,所以引入了輪廓系數(范圍-1~1之間)作為Kmeans的衡量指標。
7、SVM(基於距離,最大化邊際)
(1) 支持向量機原理:
用一個n-1維的超平面將數據分隔開,這個超平面叫做決策邊界,所有的樣本點不僅分布在超平面兩側,而且分布在兩側的虛線外側,兩個虛線超平面之間的距離叫做邊際。
決策邊界:
分類函數:
損失函數和約束條件:
為了求得在約束條件下,損失函數得到最小值時候的w和b,我們采用拉格朗日乘子法(在滿足KKT條件的前提下)和對偶函數將 損失函數和約束條件轉化為:
此時新的決策邊界:
具體方法為:對拉格朗日函數的w和b分為求導,得到結果帶入對偶函數。
然后對目標函數利用梯度下降法或者SMO或者二次規划等方法求得α,結合上面的式子也可以得到w和b。
(2) SVM四種核函數選擇:
通過實踐進行選擇,直接上各種核跑數據,看得分。
1. 線性核,尤其是多項式核函數在高次項時計算非常緩慢(SVM是基於距離的)
2. rbf和多項式核函數都不擅長處理量綱不統一的數據集
這兩點都可以通過數據標准化來解決,(無量綱化數據既可以提升有關梯度下降類模型的求解速度,又可以提升有關距離類模型的精度)
(3)SVM調參
核函數 |
可調參數 |
調參方法 |
Liner |
無 |
無 |
Rbf |
Gamma |
學習曲線 |
Sigmoid |
Gamma、coef0 |
網格搜索 |
Poly |
Gamma、coef0、degree |
網格搜索 |
(4)SVM的軟間隔
較大的邊際使得模型有更好的泛化性。但是較大的邊際又會讓部分訓練樣本出現分類錯誤,因此引入軟間隔,在保證較大邊際的前提下,允許部分訓練樣本出現錯分,但是不能錯的離譜,讓決策邊界能夠忍受一部分的訓練誤差。即平衡“最大化邊際”(保證較大泛化誤差)和“最大化模型准確率”(保證較小訓練誤差)兩者。
C就是調節軟間隔程度的參數:C越大,盡量正確分類樣本;C越小,盡量最大化邊界。
在軟間隔中支持向量是αi(yi(wTxi+b)-1+ξi)=0 成立且αi>0(即αi≠0)的樣本點(那些αi=0的點就是被正確分類且在yi(w*xi+b)=1內側的點,也就不是支持向量,對決策超平面沒有任何影響),這些點由於各自αi和ζi的不同,可以位於在間隔邊界((yi(w*xi+b)=1))上、間隔邊界與決策超平面之間、或者在超平面誤分的一側,這些支持向量共同決定決策超平面的位置。
(5) 不平衡樣本的評估指標
SVM處理樣本不均衡情況比較擅長,因為SVC的參數class_weight和fit接口的參數sample_weight都比較容易調參。對於不平衡樣本就不能簡單的用score來評價模型的好壞了,因為如果少數樣本非常少,那即是模型把所有樣本都判斷為多數類,模型的分數仍然可以很高,但是存在樣本不平衡的場景中,判斷錯誤少數類的代價一般是比較高的。因此引入了很多種類的模型例如:cm,accuracy,precision,recall,F1 score,specificity,FPR,ROC,AUC等。對於邏輯回歸,SVM等有置信度這一概念的模型,還可以利用ROC面積求解最佳閾值,微調模型,使其具有更高的recall和更低的FPR。
8、線性回歸
(1)手推線性回歸使用最小二乘法求解w,但是這涉及到矩陣求逆,運算量大,大多數還是使用梯度下降的方法迭代求w。
(2)對於回歸類模型,由於其不像分類型模型那樣,只有預測正確預測錯誤這一評估方式;對於回歸類模型我們想讓其更好的擬合原始數據,即預測值與真實值相差越少,並且模型能夠很好的描繪數據的原始分布以及趨勢。
1、是否預測了正確的數值。使用RSS-殘差平方和可以衡量對於所有訓練樣本,預測值與真實值相差多少,但是由於其沒有界限,我們沒辦法根據RSS值直觀判斷模型好壞,故引入MSE-均方誤差,將RSS平分至每一個樣本,這樣可以將其與樣本最大值和最小值分別 進行比較,評判模型好壞。可以使用metrics模塊中的MES模塊,或者設置cross_val_score中的“neg_mean_squared_error”參數得到MSE分數。
2、是否擬合的足夠的信息(數據分布)。使用或者EVS-可解釋性方差分數(explained_varience_score)來衡量模型沒有已經捕捉到的信息,有三種方式來調用,一種是直接從metrics中導入r2_score,輸入真實值和預測值后打分。第二種是直接從線性回歸 LinearRegression的接口score來進行調用。第三種是在交叉驗證中,輸入"r2"來調用。EVS有兩種調用方法,可以從metrics中導入explained_varience_score調用,也可以在交叉驗證中輸入”explained_variance“來調用。
3、其實可以為一個負數,此時說明數據預處理過程或者建模過程傷害了數據本身或者模型效果非常不好需要更換模型。
9、朴素貝葉斯
(1)因為朴素貝葉斯是基於概率的算法,因此需要的樣本量較小,因為一個較小的樣本基本就可以反映整個數據集的情況。
(2)朴素貝葉斯在計算的時候並不是既計算全概率公式,又計算類概率公式,而是只計算類概率公式的值,因為對於不同的后驗概率來說,其公式中的分母的值都是全概率公式,是一樣的,只要比較不同類概率的大小就是后驗概率的大小了,而且各個類概率之和就是全概率。
(3)朴素貝葉斯是假設各個特征之間是相互獨立的,因此計算類概率的時候是各個特征分別計算的。