讀書筆記 機器學習 實用案例解析(6)

2022-09-07 16:24:22 字數 2727 閱讀 5962

第6章  正則化:文字回歸

線性回歸的非線性擴充套件:廣義加性模型(gam, generalized additive model)r語言中可用gam()函式實現

多項式回歸:degree值不能無限增大,否則會產生過擬合(overfitting)現象。

過擬合:指模型擬合了部分雜訊

避免過擬合的手段:交叉驗證(cross-validation)和正則化(regularization)

模型複雜度:乙個模型中特徵的權重越大,這個模型越複雜

l1正則化(l1 norm)與l2正則化(l2 norm):分別累加模型係數的絕對值和係數的平方

set.seed(1)

x y

#l1 norm and l2 norm

lm.fit

l2.model.complexity

l1.model.complexity

可以訓練正則化的線性模型的函式:glmnet()

結果解釋:

df:指明模型中的非零權重有幾個(不包括截距項)

%dev:模型的r2值。第2行對應的是完全正則化,最後一行[55]對應的是完全沒有正則化

lambda:超引數(hyperparameter)可以看做是乙個懲罰引數,lambda很大時,表明對複雜度很在意,使模型權重趨於0,反之則會得到乙個比較複雜的模型

為了得到最優模型,要設定乙個大小適中的lambda. 為了得到這個lambda,首先設定乙個較大的次數,比如10,然後使用不同的lambda分別在測試集上訓練模型,再看效果如何,最後通過迭代多次不同的lambda,找到這個最好的lambda

#文字回歸

#研究描述文字與銷量之間的關係

ranks 

library(tm)

documents

row.names(documents)

#將原始資料集轉化為乙個文件詞項矩陣

#這裡注意,由於tm包更新到0.6-0以後,tolower()等函式的返回有可能不是dtm的格式(之前版本預設返回相應格式)

#因此書中模型會有乙個錯誤

#需要將**修改為

corpus

corpus

corpus

corpus

dtm

#將文件詞項矩陣轉換為乙個簡單矩陣,將順序值顛倒過來作為**值(使權重未正)

#初始化隨機種子

#對於6個lambda值,分別交叉驗證50次,並作圖

分析:由圖可見,隨著lambda越來越大,模型的表現越來越好,但是lambda增大後是趨於簡化模型,即常數模型的情況,沒有用到特徵的資訊。

簡而言之,這個文字回歸模型沒有發現有意義的資訊,給出的**完全是隨機雜訊。

資料中也許並沒有答案。有一堆資料和對答案的熱切渴望,並不能確保真的能從這堆資料中提取出合理的預期答案。

——john tukey

將回歸問題轉化為分類問題,採用邏輯回歸的辦法再進行嘗試

#分類辦法:用邏輯值1/0作為分類標準,是否進入前50

#評價模型的標準用錯誤率評價,更多的迴圈次數會對錯誤率有更準確的估計

#**優化:將兩個迴圈交換,不必為每乙個lambda做多次拆分,提高執行效率

結果可以看到,將回歸問題改成分類問題時,較小的lambda可以**一本書能否進入銷售榜前50,是有意義的。

總結:有些情況下,手中的資料並不能解決較複雜的問題(回歸問題:**排行),但是卻可以解決一些簡單問題(分類問題:是否進入前50)

參考:

《機器學習 實用案例解析》讀書筆記0

1.關於r語言的入門 感覺書上介紹的不是很好,原來沒接觸r,我是看下面這篇文章的。2.書中的源 作者這本書的源 在下面這個鏈結下,不過我下著下著沒速度了 3.安裝程式包 感覺書上講得太什麼了,直接用rstudio裝,介面右下角,packages install install from reposi...

讀書筆記 機器學習 實用案例解析(9)

第9章 mds 視覺化地研究參議員相似性 基於相似性聚類 本章的主旨是,對不同的觀測記錄,如何理解用距離的概念來闡明它們之間的相似性和相異性。多維定標技術 multidimensional scaling,mds 目的是基於觀察值之間的距離度量進行聚類。只通過所有點之間的距離度量對資料進行視覺化。m...

機器學習讀書筆記

第一章 引言介紹一些常識引入什麼是機器學習,機器學習的一些術語資料,規律,泛化,假設空間歸納偏好。1,假設空間 假設空間 監督學習的目的在於學習乙個由輸入到輸出的對映,這一對映由模型來表示。換句話說,學習的目的就在於找到最好的這樣的模型。模型屬於由輸入空間到輸出空間的對映集合,這個集合就是假設空間 ...