【機(jī)器學(xué)習(xí)】嘿馬機(jī)器學(xué)習(xí)(算法篇)第8篇:線性回歸,學(xué)習(xí)目標(biāo)【附代碼文檔】

本教程的知識(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ù)變成特別小的值
      • 嶺回歸
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脸秽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蝴乔,更是在濱河造成了極大的恐慌记餐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薇正,死亡現(xiàn)場離奇詭異片酝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挖腰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門雕沿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猴仑,你說我怎么就攤上這事审轮。” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我煎源,道長羹铅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任坐漏,我火速辦了婚禮薄疚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赊琳。我一直安慰自己街夭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開白布躏筏。 她就那樣靜靜地躺著板丽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趁尼。 梳的紋絲不亂的頭發(fā)上埃碱,一...
    開封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音酥泞,去河邊找鬼砚殿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芝囤,可吹牛的內(nèi)容都是我干的似炎。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼悯姊,長吁一口氣:“原來是場噩夢啊……” “哼羡藐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悯许,我...
    開封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤仆嗦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后岸晦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欧啤,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年启上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邢隧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冈在,死狀恐怖倒慧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤纫谅,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布炫贤,位于F島的核電站,受9級(jí)特大地震影響付秕,放射性物質(zhì)發(fā)生泄漏兰珍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一询吴、第九天 我趴在偏房一處隱蔽的房頂上張望掠河。 院中可真熱鬧,春花似錦猛计、人聲如沸唠摹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勾拉。三九已至,卻和暖如春盗温,著一層夾襖步出監(jiān)牢的瞬間藕赞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來泰國打工肌访, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留找默,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓吼驶,卻偏偏與公主長得像惩激,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蟹演,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容