本教程的知識(shí)點(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 再識(shí)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 案例:泰坦尼克號(hào)乘客生存預(yù)測 集成學(xué)習(xí)基礎(chǔ) 5.1 集成學(xué)習(xí)算法簡介 1 什么是集成學(xué)習(xí) 2 復(fù)習(xí):機(jī)器學(xué)習(xí)的兩個(gè)核心任務(wù) 集成學(xué)習(xí)基礎(chǔ) 5.3 otto案例介紹 -- Otto Group Product Classification Challenge 1.背景介紹 2.數(shù)據(jù)集介紹 3.評(píng)分標(biāo)準(zhǔn) 集成學(xué)習(xí)基礎(chǔ) 5.5 GBDT介紹 1 Decision Tree:CART回歸樹 1.1 回歸樹生成算法(復(fù)習(xí)) 聚類算法 6.1 聚類算法簡介 1 認(rèn)識(shí)聚類算法 聚類算法 6.5 算法優(yōu)化 1 Canopy算法配合初始聚類 聚類算法 6.7 案例:探究用戶對(duì)物品類別的喜好細(xì)分 1 需求 第一章知識(shí)補(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)化算法 第二章知識(shí)補(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ù) 如何理解無偏估計(jì)辜腺?無偏估計(jì)有什么用? 1.如何理解無偏估計(jì)
完整筆記資料代碼: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ù)測
- 知道回歸算法的評(píng)估標(biāo)準(zhǔn)及其公式
- 知道過擬合與欠擬合的原因以及解決方法
- 知道嶺回歸的原理及與線性回歸的不同之處
- 應(yīng)用Ridge實(shí)現(xiàn)回歸預(yù)測
- 應(yīng)用joblib實(shí)現(xiàn)模型的保存與加載
2.6 線性回歸api再介紹
學(xué)習(xí)目標(biāo)
- 了解正規(guī)方程的api及常用參數(shù)
- 了解梯度下降法api及常用參數(shù)
-
sklearn.linear_model.LinearRegression(fit_intercept=True)
通過正規(guī)方程優(yōu)化
-
參數(shù)
- fit_intercept:是否計(jì)算偏置
-
屬性
- LinearRegression.coef_:回歸系數(shù)
- LinearRegression.intercept_:偏置
-
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01)
SGDRegressor類實(shí)現(xiàn)了隨機(jī)梯度下降學(xué)習(xí)帐我,它支持不同的loss函數(shù)和正則化懲罰項(xiàng)來擬合線性回歸模型槽卫。
-
參數(shù):
-
loss:損失類型
- loss=”squared_loss”: 普通最小二乘法
fit_intercept:是否計(jì)算偏置
-
learning_rate : string, optional
學(xué)習(xí)率填充
'constant': eta = eta0
'optimal': eta = 1.0 / (alpha * (t + t0)) [default]
-
'invscaling': eta = eta0 / pow(t, power_t)
- power_t=0.25:存在父類當(dāng)中
對(duì)于一個(gè)常數(shù)值的學(xué)習(xí)率來說,可以使用learning_rate=’constant’ 擦囊,并使用eta0來指定學(xué)習(xí)率。
-
-
屬性:
- SGDRegressor.coef_:回歸系數(shù)
- SGDRegressor.intercept_:偏置
sklearn提供給我們兩種實(shí)現(xiàn)的API梅割, 可以根據(jù)選擇使用
小結(jié)
-
正規(guī)方程
- sklearn.linear_model.LinearRegression()
-
梯度下降法
- sklearn.linear_model.SGDRegressor()
2.7 案例:波士頓房價(jià)預(yù)測
學(xué)習(xí)目標(biāo)
- 通過案例掌握正規(guī)方程和梯度下降法api的使用
1 案例背景介紹
- 數(shù)據(jù)介紹
給定的這些特征霜第,是專家們得出的影響房價(jià)的結(jié)果屬性。我們此階段不需要自己去探究特征是否有用户辞,只需要使用這些特征。到后面量化很多特征需要我們自己去尋找
2 案例分析
回歸當(dāng)中的數(shù)據(jù)大小不一致癞谒,是否會(huì)導(dǎo)致結(jié)果影響較大底燎。所以需要做標(biāo)準(zhǔn)化處理刃榨。
- 數(shù)據(jù)分割與標(biāo)準(zhǔn)化處理
- 回歸預(yù)測
- 線性回歸的算法效果評(píng)估
3 回歸性能評(píng)估
均方誤差(Mean Squared Error)MSE)評(píng)價(jià)機(jī)制:
注:yi為預(yù)測值,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mover accent="true"><mrow><mi>y</mi></mrow><mo stretchy="true"> ̄</mo></mover></mrow><annotation encoding="application/x-tex">\overline{y}</annotation></semantics></math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.63056em;"></span><span class="strut bottom" style="height:0.825em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord overline"><span class="vlist"><span style="top:0em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:1em;"></span></span><span class="mord textstyle cramped"><span class="mord mathit" style="margin-right:0.03588em;">y</span></span></span><span style="top:-0.5505599999999999em;"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:1em;"></span></span><span class="reset-textstyle textstyle uncramped overline-line"></span></span><span class="baseline-fix"><span class="fontsize-ensurer reset-size5 size5"><span style="font-size:1em;"></span></span></span></span></span></span></span></span>為真實(shí)值
思考:MSE和最小二乘法的區(qū)別是双仍?
-
sklearn.metrics.mean_squared_error(y_true, y_pred)
- 均方誤差回歸損失
- y_true:真實(shí)值
- y_pred:預(yù)測值
- return:浮點(diǎn)數(shù)結(jié)果
4 代碼實(shí)現(xiàn)
4.1 正規(guī)方程
def linear_model1():
"""
線性回歸:正規(guī)方程
:return:None
"""
# 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í)-線性回歸(正規(guī)方程)
estimator = LinearRegression()
estimator.fit(x_train, y_train)
# 5.模型評(píng)估
# 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 評(píng)價(jià)
# 均方誤差
error = mean_squared_error(y_test, y_predict)
print("誤差為:\n", error)
return None
4.2 梯度下降法
def linear_model2():
"""
線性回歸:梯度下降法
:return:None
"""
# 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 = SGDRegressor(max_iter=1000)
estimator.fit(x_train, y_train)
# 5.模型評(píng)估
# 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 評(píng)價(jià)
# 均方誤差
error = mean_squared_error(y_test, y_predict)
print("誤差為:\n", error)
return None
我們也可以嘗試去修改學(xué)習(xí)率
estimator = SGDRegressor(max_iter=1000,learning_rate="constant",eta0=0.1)
此時(shí)我們可以通過調(diào)參數(shù)枢希,找到學(xué)習(xí)率效果更好的值。
5 小結(jié)
正規(guī)方程和梯度下降法api在真實(shí)案例中的使用【知道】
-
線性回歸性能評(píng)估【知道】
- 均方誤差
2.8 欠擬合和過擬合
學(xué)習(xí)目標(biāo)
- 掌握過擬合朱沃、欠擬合的概念
- 掌握過擬合苞轿、欠擬合產(chǎn)生的原因
- 知道什么是正則化,以及正則化的分類
1 定義
- 過擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上能夠獲得比其他假設(shè)更好的擬合逗物, 但是在測試數(shù)據(jù)集上卻不能很好地?cái)M合數(shù)據(jù)搬卒,此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了過擬合的現(xiàn)象。(模型過于復(fù)雜)
- 欠擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上不能獲得更好的擬合翎卓,并且在測試數(shù)據(jù)集上也不能很好地?cái)M合數(shù)據(jù)契邀,此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了欠擬合的現(xiàn)象。(模型過于簡單)
那么是什么原因?qū)е履P蛷?fù)雜失暴?線性回歸進(jìn)行訓(xùn)練學(xué)習(xí)的時(shí)候變成模型會(huì)變得復(fù)雜坯门,這里就對(duì)應(yīng)前面再說的線性回歸的兩種關(guān)系,非線性關(guān)系的數(shù)據(jù)逗扒,也就是存在很多無用的特征或者現(xiàn)實(shí)中的事物特征跟目標(biāo)值的關(guān)系并不是簡單的線性關(guān)系古戴。
2 原因以及解決辦法
-
欠擬合原因以及解決辦法
原因:學(xué)習(xí)到數(shù)據(jù)的特征過少
-
解決辦法:
- 1)添加其他特征項(xiàng),有時(shí)候我們模型出現(xiàn)欠擬合的時(shí)候是因?yàn)樘卣黜?xiàng)不夠?qū)е碌木丶纾梢蕴砑悠渌卣黜?xiàng)來很好地解決现恼。例如,“組合”蛮拔、“泛化”述暂、“相關(guān)性”三類特征是特征添加的重要手段,無論在什么場景建炫,都可以照葫蘆畫瓢畦韭,總會(huì)得到意想不到的效果。除上面的特征之外肛跌,“上下文特征”艺配、“平臺(tái)特征”等等,都可以作為特征添加的首選項(xiàng)衍慎。
- 2)添加多項(xiàng)式特征转唉,這個(gè)在機(jī)器學(xué)習(xí)算法里面用的很普遍,例如將線性模型通過添加二次項(xiàng)或者三次項(xiàng)使模型泛化能力更強(qiáng)稳捆。
-
過擬合原因以及解決辦法
原因:原始特征過多赠法,存在一些嘈雜特征, 模型過于復(fù)雜是因?yàn)槟P蛧L試去兼顧各個(gè)測試數(shù)據(jù)點(diǎn)
-
解決辦法:
- 1)重新清洗數(shù)據(jù)乔夯,導(dǎo)致過擬合的一個(gè)原因也有可能是數(shù)據(jù)不純導(dǎo)致的砖织,如果出現(xiàn)了過擬合就需要我們重新清洗數(shù)據(jù)款侵。
- 2)增大數(shù)據(jù)的訓(xùn)練量,還有一個(gè)原因就是我們用于訓(xùn)練的數(shù)據(jù)量太小導(dǎo)致的侧纯,訓(xùn)練數(shù)據(jù)占總數(shù)據(jù)的比例過小新锈。
- 3)正則化
- 4)減少特征維度,防止維災(zāi)難
3 正則化
3.1 什么是正則化
在解決回歸過擬合中眶熬,我們選擇正則化妹笆。但是對(duì)于其他機(jī)器學(xué)習(xí)算法如分類算法來說也會(huì)出現(xiàn)這樣的問題,除了一些算法本身作用之外(決策樹娜氏、神經(jīng)網(wǎng)絡(luò))拳缠,我們更多的也是去自己做特征選擇,包括之前說的刪除牍白、合并一些特征
如何解決脊凰?
在學(xué)習(xí)的時(shí)候,數(shù)據(jù)提供的特征有些影響模型復(fù)雜度或者這個(gè)特征的數(shù)據(jù)點(diǎn)異常較多茂腥,所以算法在學(xué)習(xí)的時(shí)候盡量減少這個(gè)特征的影響(甚至刪除某個(gè)特征的影響)狸涌,這就是正則化
注:調(diào)整時(shí)候,算法并不知道某個(gè)特征影響最岗,而是去調(diào)整參數(shù)得出優(yōu)化的結(jié)果
3.2 正則化類別
-
L2正則化
- 作用:可以使得其中一些W的都很小帕胆,都接近于0,削弱某個(gè)特征的影響
- 優(yōu)點(diǎn):越小的參數(shù)說明模型越簡單般渡,越簡單的模型則越不容易產(chǎn)生過擬合現(xiàn)象
- Ridge回歸
-
L1正則化
- 作用:可以使得其中一些W的值直接為0懒豹,刪除這個(gè)特征的影響
- LASSO回歸
-
拓展閱讀:
4 小結(jié)
-
欠擬合【掌握】
在訓(xùn)練集上表現(xiàn)不好,在測試集上表現(xiàn)不好
-
解決方法:
-
繼續(xù)學(xué)習(xí)
- 1.添加其他特征項(xiàng)
- 2.添加多項(xiàng)式特征
-
-
過擬合【掌握】
在訓(xùn)練集上表現(xiàn)好驯用,在測試集上表現(xiàn)不好
-
解決方法:
- 1.重新清洗數(shù)據(jù)集
- 2.增大數(shù)據(jù)的訓(xùn)練量
- 3.正則化
- 4.減少特征維度
-
正則化【掌握】
通過限制高次項(xiàng)的系數(shù)進(jìn)行防止過擬合
-
L1正則化
- 理解:直接把高次項(xiàng)前面的系數(shù)變?yōu)?
- Lasso回歸
-
L2正則化
- 理解:把高次項(xiàng)前面的系數(shù)變成特別小的值
- 嶺回歸