機器學習方法從數學的角度來看其實就是:模型+策略+演算法。模型就是對乙個實際業務問題進行建模,將其轉化為乙個可以用數學來量化表達的問題。策略就是定義損失函式來描述**值與理論值之間的差距,將其轉化為乙個使損失函式最小化的優化問題。演算法指的是求解最優化問題的方法,我們一般將其轉化為無約束優化問題,然後利用梯度下降法和牛頓法等進行求解。
回歸模型:絕對誤差、均方誤差
分類模型:準確率、精度、召回率、f1值、roc、auc、混淆矩陣
聚類模型:外部指標(jaccard係數、fm指數、rand指數和標準化互資訊)、內部指標(db指數、dunn指數、輪廓係數)
偏差與方差:偏差-方差分解是解釋學習模型泛化能力的一種重要工具。
過擬合與正則化:過擬合與欠擬合、經驗風險與結構風險、正則化
在scikit-learn中,線性回歸模型對應的是 linear_model import linearregression類;除此之外,還有基於l1正則化的lasso回歸,基於l2正則化的線性回歸,以及基於l1和l2正則化融合的lasso cnet回歸。
1)lasso回歸就是在基本的線性回歸的基礎上加上乙個l1正則化項(使得各個特徵的權重盡量接近0,從而在某種程度上達到一種特徵變數選擇的效果);
2)嶺回歸就是在基本的線性回歸的基礎上加上乙個l2正則化項(使得各個特徵的權重盡量衰減,從而在某種程度上達到一種特徵變數選擇的效果);
3)elasticnet回歸是將l1和l2正則化進行融合;
from sklearn.model_selection import train_test_split
from sklearn.linear_model import linearregression # 線性回歸
from sklearn import metrics
from sklearn.metrics import r2_score
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
# fit_intercept:選擇是否計算偏置常數b,預設是true
# normalize:選擇在擬合資料前是否對其進行歸一化,預設為false
# n_jobs:指定計算機並行工作時的cpu核數,預設是1
lr = linearregression(fit_intercept=true, normalize=false, n_jobs=1)
lr.fit(x_train,y_train)
y_pre = lr.predict(x_test)
print('mean absolute error_lng:', metrics.mean_absolute_error(y_test, y_pre).round(3))
print('mean squared error_lng:', metrics.mean_squared_error(y_test, y_pre).round(3))
print('root mean squared error_lng:', np.sqrt(metrics.mean_squared_error(y_test, y_pre)).round(3))
print('r2_score_lng:', r2_score(y_test, y_pre).round(3))
樸素貝葉斯有三種形式,即高斯型、多項式型和伯努利型。
from sklearn.*****_bayes import gaussiannb # 高斯型樸素貝葉斯
clf = gaussiannb()
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
# 方法1
accuracy = clf.score(x_test, y_test)
# 方法2
from sklearn.metrics import accuracy_score
accuracy2 = accuracy_score(y_pred, y_test)
from sklearn.*****_bayes import multinomialnb # 多項式型樸素貝葉斯
clf = multinomialnb()
from sklearn.*****_bayes import bernoullinb # 伯努利型樸素貝葉斯
clf = bernoullinb()
熵:熵值越大,隨機變數的不確定性就越大,用h(x)表示。聯合熵h(x,y) 條件熵h(y|x)
資訊增益:隨機變數y的熵h(y)與y的條件熵h(y|x)之差,即g(y,x) = h(y) - h(y|x)。資訊增益大的特徵具有更強的分類能力,數值型特徵無法直接計算其資訊增益,需要人工將其離散化處理。
資訊增益比:解決特徵類別取值越多資訊增益越大的現象,gr(y,x) = g(y,x) / h(x)
基尼係數:度量資料集的不純度。基尼指數越小,表明樣本只屬於同一類的概率越高,即樣本的純淨度越高。
id3決策樹:用資訊增益作為特徵選擇標準。缺點:1.偏向優先選取取值種類較多的特徵;2.不能處理連續值特徵;3.容易過擬合
c4.5決策樹:針對id3決策樹的缺點進行改進。1.使用資訊增益比替代資訊增益;2.先將連續的特徵離散化;3.引入正則化來剪枝
cart分類回歸樹:解決上述決策樹中,1.特徵選擇過程對數計算過於複雜;2.特徵劃分過於粗糙;3.不能處理回歸問題。cart分類樹的生成過程以基尼係數最小準則來選擇特徵
# scikit-learn實現使用了優化後的cart模型,既可以做分類,又可以做回歸。
from sklearn.tree import decisiontreeclassifier
from sklearn.tree import decisiontreeregressor
邏輯回歸是二分類模型,但實際中往往是多分類情況,因此可將其推廣為多項logistic回歸。
from sklearn.linear_model import logisticregression # 邏輯回歸
# multi_class:指定多分類的策略,預設是ovr,表示採用one-vs-rest,即一對其他策略;
# 還可以選擇multinomial,表示採用多項邏輯回歸策略
logisticregression(multi_class='ovr')
1. 理解實際問題,抽象為機器學習能處理的數學問題
2. 獲取資料
3. 特徵工程
4. 模型訓練、診斷、調優
5. 模型驗證、誤差分析
6 . 模型融合
常見的特徵工程包括[詳情]:
異常處理:
特徵歸一化/標準化:
資料分桶:
缺失值處理:
特徵構造:
特徵篩選
嵌入式(embedding):結合過濾式和包裹式,學習器訓練過程中自動進行了特徵選擇,常見的有 lasso 回歸;
降維
1.資料總覽
簡略觀察資料;
通過describe()來熟悉資料的相關統計量
通過info()來熟悉資料型別
2.判斷資料缺失和異常
檢視每列的存在nan情況
異常值檢測
3.了解**值的分布
總體分布概況(無界詹森分布等)
檢視skewness and kurtosis 檢視**值的具體頻數
4.劃分類別特徵和數字特徵
4-1 數字特徵分析
相關性分析
檢視幾個特徵的偏度和峰值
每個數字特徵得分布視覺化
數字特徵相互之間的關係視覺化
多變數互相回歸關係視覺化
4-2 型別特徵分析
unique分布
類別特徵箱形圖視覺化
類別特徵的小提琴圖視覺化
類別特徵的柱形圖視覺化類別
特徵的每個類別頻數視覺化
機器學習知識點小結
線性形式 由d個屬性的線性組合進行 的函式,表示如下 f x w1x1 w2x2 wdxd b 一般用向量形式寫成 f x wtx b 其中w w1,w2,wd w和b學得後,模型就得以確定。線性回歸 線性回歸 linear regression 是利用稱為線性回歸方程的最小平方函式對乙個或多個自變...
《機器學習實戰》小結
最近一段時間讀了peter harrington 的machine learning in action,對機器學習有個大致的了解,做個總結。全書分為4部分 監督學習 分類 回歸 無監督學習 其他工具。包含演算法原理解釋,並講解python實現演算法的流程。讀完能對機器學習方法有個大致了解。我主要細...
機器學習演算法小結
貝葉斯分類器 bayesian classifier 如何建立乙個文件分類系統,用於垃圾郵件過濾,或是根據關鍵字的模糊搜尋來對一組文件進行劃分 貝葉斯分類器一般用於關於文件處理,但實際上也可以適用於任何其他形式的資料集,只要能將其轉化成一組特徵列表。所謂特徵,就是指乙個給定項中存在或缺少的某種東西。...