一丑瞧、EDA
------explore? data? analysis,顧名思義柑土,數(shù)據(jù)探索性分析。主要目的是對數(shù)據(jù)有個大體的認識
????1绊汹、看下整體數(shù)據(jù)信息稽屏,有多少行,多少特征灸促,特征是數(shù)值還是分類
? ? 2、看目標值(假如有)的分布涵卵。如果是分類,看看各樣本比例是否平衡;如果是回歸荤崇,看看均值阅茶,方差
? ? 3、觀察特征坏晦,看含義是什么萝玷?有沒有冗余?分布情況如何昆婿,有沒有異常值球碉,缺失值
? ? 4、觀察少不了作圖仓蛆,matplotlib.pyplot睁冬,你懂的。當然還有一個高級庫看疙,seaborn.
?二豆拨、數(shù)據(jù)前處理(data? preprocessing)
????1、缺失值與異常值處理
? ? 一般來說能庆,我們采用替換法來處理施禾,常見的有平均值替換,中位數(shù)替換搁胆、拉格朗日插值法等弥搞。特殊情況下我們可以刪掉樣本(樣本量很大)邮绿,也可以不處理(部分算法對缺失異常值并不敏感)
? ? 2、樣本不平衡問題
? ? 這種主要通過采樣來解決拓巧。
? ? 上采樣----在樣本數(shù)目不夠時斯碌,對少數(shù)類進行過采樣。
? ? 下采樣----在樣本數(shù)目充足時肛度,對多數(shù)類進行欠采樣
? ? 3傻唾、類別屬性轉(zhuǎn)換成數(shù)值
? ? 數(shù)據(jù)分析中經(jīng)常遇到類別屬性,比如性別承耿,名字等冠骄。大多數(shù)算法無法直接處理這類數(shù)據(jù)(決策樹不服),需要把他們先處理成數(shù)值型變量
? ? one-hot code-----獨熱編碼加袋,用0/1多維向量表示凛辣。男? 01? ?女? 10
? ? label encoding---標簽編碼,用自然數(shù)進行編碼职烧,小學? 1? 中學 2? ?大學? 3
? ? 以上兩種編碼較常見扁誓,但是有其弊端,所以又有均值編碼等其他編碼方式
? ? 4蚀之、歸一化
? ? 常見的有0-1歸一化與均值方差標準化
? ? 什么時候需要歸一化蝗敢?一般的準則是,該模型關心變量的值足删。還有就是模型使用梯度下降法求解時也需要寿谴。否則很難收斂甚至不能收斂。
? ? 不需要歸一化的模型----決策樹失受、隨機森林讶泰、樸素貝葉斯
--------------------------------------------------------------------------------------------------------------------------
三、特征工程(feature engineer)
------數(shù)據(jù)和特征決定了機器學習的上限拂到,而模型和算法只是逼近這個上限罷了
????1痪署、特征構建(feature? construction)
? ? 比如我現(xiàn)在有身高、體重兩個特征兄旬,輸出為胖? 瘦? 正常惠桃。直接喂給模型,可能分類效果并不是特別好辖试,此時我構建了一個新的特征BMI指數(shù)辜王。這樣分類準確性便大大提高了
? ? 2、特征選擇(feature? selection)
? ? 思考一個問題罐孝,現(xiàn)在我有幾十個特征呐馆。所有的特征都和目標有關系嗎?特征之間是否存在相關性莲兢?更少的特征降低模型的復雜度汹来,一個簡單的模型更方便理解與解釋
? ? 2.1? filter? methods(過濾法)
? ? 方差選擇法:如果一個特征沒啥變動续膳,那他對結(jié)果基本也沒有什么解釋性。
? ? 最大信息系數(shù):對線性非線性相關都適用收班,比較健壯
? ? 2.2 wrapper? methods(包裹法)
? ? RFE:遞歸特征消除坟岔。使用一個有監(jiān)督的模型來訓練,逐步剔除權重較小的特征摔桦,.RFE給出的是特征重要性順序
? ? stability? selection:穩(wěn)定性選擇社付。他的主要思想是在不同的數(shù)據(jù)子集和特征子集上運行特征選擇算法,最終匯總特征選擇的結(jié)果邻耕。該方法性能比較好
? ? 2.3 Embedded methods(插入法)
? ? L1正則化:將額外的懲罰項加到模型上面鸥咖,最后很多特征系數(shù)為0.懲罰系數(shù)越大,特征系數(shù)越稀疏
? ? 基于樹模型:這里用隨機森林的平均精確度減少兄世。主要思想是打亂每個特征的順序啼辣,如果模型的準確度受到影響,說明該特征是重要的御滩。
? ? 3. feature? extraction(特征提取)
? ? PCA:數(shù)據(jù)從原來的坐標系轉(zhuǎn)換為新的坐標系鸥拧,第一個坐標軸選擇的是原始數(shù)據(jù)中方差最大的方向。第二個坐標軸與第一個正交且方差次之削解,以此類推富弦。最后幾個維度的方差很小,可以舍去钠绍,故有降維的效果
四舆声、機器學習算法
? ? 1花沉、分類算法
? ? 決策樹:目前一般用CART算法柳爽。他建立的是二叉樹,分類時使用基尼系數(shù)來度量劃分點
? ? 樸素貝葉斯:一種基于先驗概率以及特征獨立假設的算法碱屁。
? ? KNN算法:根據(jù)距離選取K個樣本磷脯,樣本中哪個類別多則劃分為哪一類
? ? SVM:除去集成算法,在簡單算法里面是很強大的分類算法娩脾。通常會用到高斯核函數(shù)赵誓。核函數(shù)是什么?他能把數(shù)據(jù)映射到高維空間以便線性分開,同時又能在低維進行內(nèi)積運算柿赊。
? ? 邏輯回歸:是一種線性分類器俩功,主要通過最大似然估計來學習。
? ? 2碰声、回歸算法
? ? Linear? Regression:使用擬合直線在因變量和一個或多個自變量之間建立關系(現(xiàn)實世界不會這么簡單诡蜓,所以就有下面的算法)
? ? 邏輯回歸:當因變量的類型屬于二元變量時,我們就應該使用邏輯回歸胰挑。
????Ridge? Regression:主要適用于過擬合嚴重以及自變量高度相關的情況
? ? Lasso? Regression:比嶺回歸更嚴厲蔓罚。如果一組變量高度相關椿肩,那么他會選出一組變量并將其他變量系數(shù)降低為0.
? ? 3、聚類算法
? ? K-Means:基于距離的聚類豺谈。目前除了仍必須指定K值外(其實可以調(diào)參解決)郑象,其他缺點都有改善的辦法
? ? DBSCAN:基于密度的算法。缺點是對密度變化比較大時效果不好茬末,但是OPTICS很好的解決了這一問題厂榛。
? ? spectral? clustering:譜聚類。他的主要思想是把所有的數(shù)據(jù)看作空間中的點团南。點之間的相似度看成是帶權重的邊噪沙。聚類時簇的邊權重值盡可能高,簇之間盡可能低
? ? 4吐根、集成算法
? ? Random? Forest:隨機森林正歼。從原始樣本集中抽取訓練集,有放回的抽樣拷橘。而且每次隨機的選取節(jié)點上的部分特征進行劃分局义。抽樣K次形成K個決策樹,每棵樹是平行的冗疮,獨立的萄唇。分類結(jié)果投票決定。優(yōu)點泛化能力強
? ? AdaBoost:最開始每個樣本的權重是一樣的术幔,訓練得到第一個分類器另萤,分對的樣本權重降低,分錯的樣本權重提高诅挑,然后進行下一輪訓練四敞。
? ? GBDT:假設第一輪擬合產(chǎn)生的殘差是10,那么第二輪就針對10進行擬合拔妥,結(jié)果是-5.兩者相加等于5.這樣逐步逼近0.
? ? XGBoost:和gbdt大體相同忿危。只是在擬合殘差時用的是二階泰勒展開,所以結(jié)果更為精確没龙。
五铺厨、算法評價與參數(shù)調(diào)整
聚類算法的評價稍微有些麻煩,一般可以用蘭德系數(shù)(Rind? Index)進行評估硬纤。
分類算法可以用平均絕對誤差解滓、平均絕對百分誤差、均方根誤差等評價
分類算法可以用ROC曲線筝家,AUC洼裤,混淆矩陣等進行評價
部分算法也自帶了評價方法。
參數(shù)調(diào)整:一般使用GridSearchCV進行調(diào)參肛鹏。