本教程的知識點(diǎn)為:機(jī)器學(xué)習(xí)算法定位阵谚、 K-近鄰算法 1.4 k值的選擇 1 K值選擇說明 1.6 案例:鳶尾花種類預(yù)測--數(shù)據(jù)集介紹 1 案例:鳶尾花種類預(yù)測 1.8 案例:鳶尾花種類預(yù)測—流程實(shí)現(xiàn) 1 再識K-近鄰算法API 1.11 案例2:預(yù)測facebook簽到位置 1 項(xiàng)目描述 線性回歸 2.3 數(shù)學(xué):求導(dǎo) 1 常見函數(shù)的導(dǎo)數(shù) 線性回歸 2.5 梯度下降方法介紹 1 詳解梯度下降算法 線性回歸 2.6 線性回歸api再介紹 小結(jié) 線性回歸 2.9 正則化線性模型 1 Ridge Regression (嶺回歸蜀漆,又名 Tikhonov regularization) 邏輯回歸 3.3 案例:癌癥分類預(yù)測-良/惡性乳腺癌腫瘤預(yù)測 1 背景介紹 決策樹算法 4.2 決策樹分類原理 1 熵 決策樹算法 4.3 cart剪枝 1 為什么要剪枝 決策樹算法 4.4 特征工程-特征提取 1 特征提取 決策樹算法 4.5 決策樹算法api 4.6 案例:泰坦尼克號乘客生存預(yù)測 集成學(xué)習(xí)基礎(chǔ) 5.1 集成學(xué)習(xí)算法簡介 1 什么是集成學(xué)習(xí) 2 復(fù)習(xí):機(jī)器學(xué)習(xí)的兩個核心任務(wù) 集成學(xué)習(xí)基礎(chǔ) 5.3 otto案例介紹 -- Otto Group Product Classification Challenge 1.背景介紹 2.數(shù)據(jù)集介紹 3.評分標(biāo)準(zhǔn) 集成學(xué)習(xí)基礎(chǔ) 5.5 GBDT介紹 1 Decision Tree:CART回歸樹 1.1 回歸樹生成算法(復(fù)習(xí)) 聚類算法 6.1 聚類算法簡介 1 認(rèn)識聚類算法 聚類算法 6.5 算法優(yōu)化 1 Canopy算法配合初始聚類 聚類算法 6.7 案例:探究用戶對物品類別的喜好細(xì)分 1 需求 第一章知識補(bǔ)充:再議數(shù)據(jù)分割 1 留出法 2 交叉驗(yàn)證法 KFold和StratifiedKFold 3 自助法 正規(guī)方程的另一種推導(dǎo)方式 1.損失表示方式 2.另一種推導(dǎo)方式 梯度下降法算法比較和進(jìn)一步優(yōu)化 1 算法比較 2 梯度下降優(yōu)化算法 第二章知識補(bǔ)充: 多項(xiàng)式回歸 1 多項(xiàng)式回歸的一般形式 維災(zāi)難 1 什么是維災(zāi)難 2 維數(shù)災(zāi)難與過擬合 第三章補(bǔ)充內(nèi)容:分類中解決類別不平衡問題 1 類別不平衡數(shù)據(jù)集基本介紹 向量與矩陣的范數(shù) 1.向量的范數(shù) 2.矩陣的范數(shù) 如何理解無偏估計糠溜?無偏估計有什么用三妈? 1.如何理解無偏估計
完整筆記資料代碼:https://gitee.com/yinuo112/AI/tree/master/機(jī)器學(xué)習(xí)/嘿馬機(jī)器學(xué)習(xí)(算法篇)/note.md
感興趣的小伙伴可以自取哦~
全套教程部分目錄:
部分文件圖片:
線性回歸
學(xué)習(xí)目標(biāo)
- 掌握線性回歸的實(shí)現(xiàn)過程
- 應(yīng)用LinearRegression或SGDRegressor實(shí)現(xiàn)回歸預(yù)測
- 知道回歸算法的評估標(biāo)準(zhǔn)及其公式
- 知道過擬合與欠擬合的原因以及解決方法
- 知道嶺回歸的原理及與線性回歸的不同之處
- 應(yīng)用Ridge實(shí)現(xiàn)回歸預(yù)測
- 應(yīng)用joblib實(shí)現(xiàn)模型的保存與加載
2.9 正則化線性模型
學(xué)習(xí)目標(biāo)
- 知道正則化中嶺回歸的線性模型
- 知道正則化中l(wèi)asso回歸的線性模型
- 知道正則化中彈性網(wǎng)絡(luò)的線性模型
- 了解正則化中early stopping的線性模型
- Ridge Regression 嶺回歸
- Lasso 回歸
- Elastic Net 彈性網(wǎng)絡(luò)
- Early stopping
1 Ridge Regression (嶺回歸槽惫,又名 Tikhonov regularization)
嶺回歸是線性回歸的正則化版本梗逮,即在原來的線性回歸的 cost function 中添加正則項(xiàng)(regularization term):
以達(dá)到在擬合數(shù)據(jù)的同時散劫,使模型權(quán)重盡可能小的目的,嶺回歸代價函數(shù):
- α=0:嶺回歸退化為線性回歸
2 Lasso Regression(Lasso 回歸)
Lasso 回歸是線性回歸的另一種正則化版本,正則項(xiàng)為權(quán)值向量的?1范數(shù)牍戚。
Lasso回歸的代價函數(shù) :
【注意 】
- Lasso Regression 的代價函數(shù)在 θi=0處是不可導(dǎo)的.
- 解決方法:在θi=0處用一個次梯度向量(subgradient vector)代替梯度侮繁,如下式
- Lasso Regression 的次梯度向量
Lasso Regression 有一個很重要的性質(zhì)是:傾向于完全消除不重要的權(quán)重。
例如:當(dāng)α 取值相對較大時如孝,高階多項(xiàng)式退化為二次甚至是線性:高階多項(xiàng)式特征的權(quán)重被置為0宪哩。
也就是說,Lasso Regression 能夠自動進(jìn)行特征選擇第晰,并輸出一個稀疏模型(只有少數(shù)特征的權(quán)重是非零的)锁孟。
3 Elastic Net (彈性網(wǎng)絡(luò))
彈性網(wǎng)絡(luò)在嶺回歸和Lasso回歸中進(jìn)行了折中,通過 混合比(mix ratio) r 進(jìn)行控制:
- r=0:彈性網(wǎng)絡(luò)變?yōu)閹X回歸
- r=1:彈性網(wǎng)絡(luò)便為Lasso回歸
彈性網(wǎng)絡(luò)的代價函數(shù) :
一般來說茁瘦,我們應(yīng)避免使用樸素線性回歸品抽,而應(yīng)對模型進(jìn)行一定的正則化處理,那如何選擇正則化方法呢甜熔?
小結(jié):
常用:嶺回歸
-
假設(shè)只有少部分特征是有用的:
- 彈性網(wǎng)絡(luò)
- Lasso
- 一般來說圆恤,彈性網(wǎng)絡(luò)的使用更為廣泛。因?yàn)樵谔卣骶S度高于訓(xùn)練樣本數(shù)腔稀,或者特征是強(qiáng)相關(guān)的情況下盆昙,Lasso回歸的表現(xiàn)不太穩(wěn)定羽历。
-
api:
from sklearn.linear_model import Ridge, ElasticNet, Lasso
## 4 Early Stopping [了解]
Early Stopping 也是正則化迭代學(xué)習(xí)的方法之一。
其做法為:在驗(yàn)證錯誤率達(dá)到最小值的時候停止訓(xùn)練淡喜。
## 5 小結(jié)
* Ridge Regression 嶺回歸
* 就是把系數(shù)添加平方項(xiàng)
* 然后限制系數(shù)值的大小
* α值越小窄陡,系數(shù)值越大,α越大拆火,系數(shù)值越小
* Lasso 回歸
* 對系數(shù)值進(jìn)行絕對值處理
* 由于絕對值在頂點(diǎn)處不可導(dǎo)跳夭,所以進(jìn)行計算的過程中產(chǎn)生很多0,最后得到結(jié)果為:稀疏矩陣
* Elastic Net 彈性網(wǎng)絡(luò)
* 是前兩個內(nèi)容的綜合
* 設(shè)置了一個r,如果r=0--嶺回歸们镜;r=1--Lasso回歸
* Early stopping
* 通過限制錯誤率的閾值币叹,進(jìn)行停止
# 2.10 線性回歸的改進(jìn)-嶺回歸
## 學(xué)習(xí)目標(biāo)
* 知道嶺回歸api的具體使用
---
## 1 API
* sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)
* 具有l(wèi)2正則化的線性回歸
* alpha:正則化力度,也叫 λ
* **λ取值:0~1 1~10**
* solver:會根據(jù)數(shù)據(jù)自動選擇優(yōu)化方法
* **sag:如果數(shù)據(jù)集模狭、特征都比較大颈抚,選擇該隨機(jī)梯度下降優(yōu)化**
* normalize:數(shù)據(jù)是否進(jìn)行標(biāo)準(zhǔn)化
* normalize=False:可以在fit之前調(diào)用preprocessing.StandardScaler標(biāo)準(zhǔn)化數(shù)據(jù)
* Ridge.coef_:回歸權(quán)重
* Ridge.intercept_:回歸偏置
**Ridge方法相當(dāng)于SGDRegressor(penalty='l2', loss="squared_loss"),只不過SGDRegressor實(shí)現(xiàn)了一個普通的隨機(jī)梯度下降學(xué)習(xí),推薦使用Ridge(實(shí)現(xiàn)了SAG)**
* sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)
* 具有l(wèi)2正則化的線性回歸嚼鹉,可以進(jìn)行交叉驗(yàn)證
* coef_:回歸系數(shù)
```python
class _BaseRidgeCV(LinearModel):
def __init__(self, alphas=(0.1, 1.0, 10.0),
fit_intercept=True, normalize=False,scoring=None,
cv=None, gcv_mode=None,
store_cv_values=False):
2 觀察正則化程度的變化贩汉,對結(jié)果的影響?
- 正則化力度越大锚赤,權(quán)重系數(shù)會越小
- 正則化力度越小匹舞,權(quán)重系數(shù)會越大
3 波士頓房價預(yù)測
def linear_model3():
"""
線性回歸:嶺回歸
:return:
"""
# 1.獲取數(shù)據(jù)
data = load_boston()
# 2.數(shù)據(jù)集劃分
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# 3.特征工程-標(biāo)準(zhǔn)化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.機(jī)器學(xué)習(xí)-線性回歸(嶺回歸)
estimator = Ridge(alpha=1)
# estimator = RidgeCV(alphas=(0.1, 1, 10))
estimator.fit(x_train, y_train)
# 5.模型評估
# 5.1 獲取系數(shù)等值
y_predict = estimator.predict(x_test)
print("預(yù)測值為:\n", y_predict)
print("模型中的系數(shù)為:\n", estimator.coef_)
print("模型中的偏置為:\n", estimator.intercept_)
# 5.2 評價
# 均方誤差
error = mean_squared_error(y_test, y_predict)
print("誤差為:\n", error)
4 小結(jié)
-
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)【知道】
具有l(wèi)2正則化的線性回歸
-
alpha -- 正則化
- 正則化力度越大,權(quán)重系數(shù)會越小
- 正則化力度越小线脚,權(quán)重系數(shù)會越大
-
normalize
- 默認(rèn)封裝了赐稽,對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理
2.11 模型的保存和加載
學(xué)習(xí)目標(biāo)
- 知道sklearn中模型的保存和加載
1 sklearn模型的保存和加載API
-
from sklearn.externals import joblib
- 保存:joblib.dump(estimator, 'test.pkl')
- 加載:estimator = joblib.load('test.pkl')
2 線性回歸的模型保存加載案例
def load_dump_demo():
"""
模型保存和加載
:return:
"""
# 1.獲取數(shù)據(jù)
data = load_boston()
# 2.數(shù)據(jù)集劃分
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# 3.特征工程-標(biāo)準(zhǔn)化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.機(jī)器學(xué)習(xí)-線性回歸(嶺回歸)
# # 4.1 模型訓(xùn)練
# estimator = Ridge(alpha=1)
# estimator.fit(x_train, y_train)
#
# # 4.2 模型保存
# joblib.dump(estimator, "./data/test.pkl")
# 4.3 模型加載
estimator = joblib.load("./data/test.pkl")
# 5.模型評估
# 5.1 獲取系數(shù)等值
y_predict = estimator.predict(x_test)
print("預(yù)測值為:\n", y_predict)
print("模型中的系數(shù)為:\n", estimator.coef_)
print("模型中的偏置為:\n", estimator.intercept_)
# 5.2 評價
# 均方誤差
error = mean_squared_error(y_test, y_predict)
print("誤差為:\n", error)
3 小結(jié)
-
sklearn.externals import joblib【知道】
保存:joblib.dump(estimator, 'test.pkl')
加載:estimator = joblib.load('test.pkl')
-
注意:
- 1.保存文件,后綴名是**.pkl
- 2.加載模型是需要通過一個變量進(jìn)行承接
邏輯回歸
學(xué)習(xí)目標(biāo)
- 知道邏輯回歸的損失函數(shù)浑侥、優(yōu)化方法
- 知道邏輯回歸的應(yīng)用場景
- 應(yīng)用LogisticRegression實(shí)現(xiàn)邏輯回歸預(yù)測
- 知道精確率姊舵、召回率等指標(biāo)的區(qū)別
- 知道如何解決樣本不均衡情況下的評估
- 會繪制ROC曲線圖形
邏輯回歸
學(xué)習(xí)目標(biāo)
- 知道邏輯回歸的損失函數(shù)、優(yōu)化方法
- 知道邏輯回歸的應(yīng)用場景
- 應(yīng)用LogisticRegression實(shí)現(xiàn)邏輯回歸預(yù)測
- 知道精確率寓落、召回率等指標(biāo)的區(qū)別
- 知道如何解決樣本不均衡情況下的評估
- 會繪制ROC曲線圖形
3.1 邏輯回歸介紹
學(xué)習(xí)目標(biāo)
- 了解邏輯回歸的應(yīng)用場景
- 知道邏輯回歸的原理
- 掌握邏輯回歸的損失函數(shù)和優(yōu)化方案
邏輯回歸(Logistic Regression)是機(jī)器學(xué)習(xí)中的一種分類模型括丁,邏輯回歸是一種分類算法,雖然名字中帶有回歸伶选。由于算法的簡單和高效史飞,在實(shí)際中應(yīng)用非常廣泛。
1 邏輯回歸的應(yīng)用場景
- 廣告點(diǎn)擊率
- 是否為垃圾郵件
- 是否患病
- 金融詐騙
- 虛假賬號
看到上面的例子考蕾,我們可以發(fā)現(xiàn)其中的特點(diǎn)祸憋,那就是都屬于兩個類別之間的判斷会宪。邏輯回歸就是解決二分類問題的利器
2 邏輯回歸的原理
要想掌握邏輯回歸肖卧,必須掌握兩點(diǎn):
邏輯回歸中,其輸入值是什么
如何判斷邏輯回歸的輸出