第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
#文字回歸
#研究描述文字與銷量之間的關係
rankslibrary(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,假設空間 假設空間 監督學習的目的在於學習乙個由輸入到輸出的對映,這一對映由模型來表示。換句話說,學習的目的就在於找到最好的這樣的模型。模型屬於由輸入空間到輸出空間的對映集合,這個集合就是假設空間 ...