1.基本概念
- 機器學習:發明算法将資料轉化為智能行為
- 資料挖掘 VS 機器學習:前者側重尋找有價值的資訊,後者側重執行已知的任務。後者是前者的先期準備
-
過程:資料——>抽象化——>一般化。或者:收集資料——推理資料——歸納資料——發現規律
抽象化:
- 訓練:用一個特定模型來拟合資料集的過程
-
用方程來拟合觀測的資料:觀測現象——資料呈現——模型建立。通過不同的格式來把資訊概念化
一般化:
- 一般化:将抽象化的知識轉換成可用于行動的形式
- 采用啟發式算法(利用相近原理和其他一些經驗法則)來劃分概念集合,但不能保證找到對資料模組化的最優概念集,有時會導緻錯誤結論
- 算法偏差:算法的結論是系統性的不準确。偏差是任何機器學習任務的抽象化和一般化這兩個過程相聯系的不可避免的謬誤,一般化的最後一步就是在存在偏差的情況下判斷模型的成功性。由于資料中的噪聲或無法解釋的波動導緻模型不能完美的一般化
- 過拟合問題的基礎:試圖用模型拟合噪聲(噪聲無法解釋,解釋就會出錯)
- 過拟合:一個模型訓練時表現好,測試時很差。過度拟合了訓練集,即不能很好地一般化
2.選擇機器學習算法
-
機器學習步驟:
收集資料——探索和準備資料(80%時間)——訓練模型——評價模型性能——改進模型性能
- 沒有免費午餐定理:沒有一種機器學習方法對所有環境都是最好的
- 輸入資料:案例example,特征feature。一般行為案例,列為特征(與基因表達資料相反)
- 算法分類:監督學習算法(用于預測模型),非監督學習(用于描述模型)
- 有監督學習:監督不是人為幹預,而是讓目标值監督,告訴學習任務。分類變量可用于分類(類可能有多個水準),數值型資料可建立回歸模型預測
- 無監督學習:沒有一個明确的學習目标(屬性無輕重之分),在資料挖掘中更常用。如購物商品之間聯系的購物籃分析(捆綁銷售)。描述性模型把資料同類型分組稱之聚類。
-
常見有監督學習算法:
分類:K近鄰,樸素貝葉斯,決策樹,分類器
數值預測:線性回歸,回歸樹,模型樹
分類和數值預測:神經網絡,支援向量機
-
常見無監督學習算法:
模式識别:關聯規則
聚類:K均值聚類
- 模型的選擇是帶有随機性的。當預測準确性是主要考慮因素時,需要測試多個模型,然後選擇一個最好的。
3.使用R進行機器學習
- CRAN收錄的機器學習R包:https://cran.r-project.org/web/views/MachineLearning.html
- RWeka包:基于Java平台的R使用機器學習算法的函數集合
install.packages("RWeka")
library(RWeka)

- R管理資料
save(x,y,z,file='mydata.RData')
load('mydata.RData')
save.image() #立刻結束目前R繪畫,寫入.RData檔案中
- 探索和了解資料
str(data)
summary()
mean()
median()
IQR() #四分位距,Q1與Q3之差,展現資料分散程度
quantile() #傳回5數
quantile(data$price, probs=c(0.01,0.99)) #第1和第99百分位數
quantile(data$price, seq(from=0, to=1, by=0.2))
#可視化
boxplot()
hist()
- 均值比中位值對極端值(異常值)更敏感
- 偏度(skew):比如,右偏是右邊比左邊更為分散(不要了解反了)
- 均勻分布:所有值等可能發生。并非所有随機事件都服從均勻分布
- 衡量資料分散程度:方差var或标準差sd(方差平方根),var越大表在均值附近越分散,sd平均來看每個值和均值相差多少
var()
sd()
- 68-95-99.7規則(經驗法則):正态分布中68%的值落在均值左右1個标準差的範圍内,而95%和99.7%的值各自落在均值左右2個和3個标準差的範圍内。數值落在均值的3個标準差以外是極端罕見事件。
【機器學習與R語言】1-機器學習簡介 - 分類變量探索:
table()
prop.table()
- 變量間關系探索
plot(x,y)
# 并非所有關聯都成直線
二進制訓示變量(啞變量):如汽車有9種顔色分為2組,一組保守色,一組非保守色,訓示變量可分别設為1和0
雙向交叉表/列聯表:
library(gmodels)
CrossTable(x,y) #chisq = TRUE擷取卡方檢驗結果,機率值越小,說明兩個變量相關越大
CrossTable的輸出示例: