機器學習知識小結

2021-10-05 18:06:06 字數 4212 閱讀 4113

機器學習方法從數學的角度來看其實就是:模型+策略+演算法。模型就是對乙個實際業務問題進行建模,將其轉化為乙個可以用數學來量化表達的問題。策略就是定義損失函式來描述**值與理論值之間的差距,將其轉化為乙個使損失函式最小化的優化問題。演算法指的是求解最優化問題的方法,我們一般將其轉化為無約束優化問題,然後利用梯度下降法和牛頓法等進行求解。

回歸模型:絕對誤差、均方誤差

分類模型:準確率、精度、召回率、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 如何建立乙個文件分類系統,用於垃圾郵件過濾,或是根據關鍵字的模糊搜尋來對一組文件進行劃分 貝葉斯分類器一般用於關於文件處理,但實際上也可以適用於任何其他形式的資料集,只要能將其轉化成一組特徵列表。所謂特徵,就是指乙個給定項中存在或缺少的某種東西。...