1.什么是機(jī)器學(xué)習(xí)?
套用一下大神們對(duì)機(jī)器學(xué)習(xí)的定義梦染,機(jī)器學(xué)習(xí)研究的是計(jì)算機(jī)怎樣模擬人類的學(xué)習(xí)行為帕识,以獲取新的知識(shí)或技能遂铡,并重新組織已有的知識(shí)結(jié)構(gòu)使之不斷改善自身扒接。簡(jiǎn)單一點(diǎn)說钾怔,就是計(jì)算機(jī)從數(shù)據(jù)中學(xué)習(xí)出規(guī)律和模式宗侦,以應(yīng)用在新數(shù)據(jù)上做預(yù)測(cè)的任務(wù)凝垛。近年來互聯(lián)網(wǎng)數(shù)據(jù)大爆炸梦皮,數(shù)據(jù)的豐富度和覆蓋面遠(yuǎn)遠(yuǎn)超出人工可以觀察和總結(jié)的范疇剑肯,而機(jī)器學(xué)習(xí)的算法能指引計(jì)算機(jī)在海量數(shù)據(jù)中让网,挖掘出有用的價(jià)值溃睹,也使得無數(shù)學(xué)習(xí)者為之著迷。
2.機(jī)器學(xué)習(xí)關(guān)注問題
并非所有的問題都適合用機(jī)器學(xué)習(xí)解決(很多邏輯清晰的問題用規(guī)則能很高效和準(zhǔn)確地處理)煤辨,也沒有一個(gè)機(jī)器學(xué)習(xí)算法可以通用于所有問題咐吼。咱們先來了解了解,機(jī)器學(xué)習(xí)肌幽,到底關(guān)心和解決什么樣的問題。
從功能的角度分類煮岁,機(jī)器學(xué)習(xí)在一定量級(jí)的數(shù)據(jù)上步氏,可以解決下列問題:
1.分類問題
根據(jù)數(shù)據(jù)樣本上抽取出的特征徒爹,判定其屬于有限個(gè)類別中的哪一個(gè)。比如:
垃圾郵件識(shí)別(結(jié)果類別:1界阁、垃圾郵件 2泡躯、正常郵件)
文本情感褒貶分析(結(jié)果類別:1丽焊、褒 2、貶)
圖像內(nèi)容識(shí)別識(shí)別(結(jié)果類別:1写穴、喵星人 2雌贱、汪星人 3偿短、人類 4翔冀、草泥馬 5披泪、都不是)。
2.回歸問題
根據(jù)數(shù)據(jù)樣本上抽取出的特征控硼,預(yù)測(cè)一個(gè)連續(xù)值的結(jié)果。比如:
預(yù)測(cè)《戰(zhàn)狼》票房
魔都2個(gè)月后的房?jī)r(jià)
3.聚類等問題
根據(jù)數(shù)據(jù)樣本上抽取出的特征,讓樣本抱抱團(tuán)(相近/相關(guān)的樣本在一團(tuán)內(nèi))雏吭。比如:
google的新聞分類
用戶群體劃分
我們?cè)侔焉鲜龀R妴栴}劃到機(jī)器學(xué)習(xí)最典型的2個(gè)分類上姥饰。
分類與回歸問題需要用已知結(jié)果的數(shù)據(jù)做訓(xùn)練,屬于“監(jiān)督學(xué)習(xí)”
聚類的問題不需要已知標(biāo)簽吃媒,屬于“非監(jiān)督學(xué)習(xí)”。
如果在IT行業(yè)(尤其是互聯(lián)網(wǎng))里溜達(dá)一圈琢锋,你會(huì)發(fā)現(xiàn)機(jī)器學(xué)習(xí)在以下熱點(diǎn)問題中有廣泛應(yīng)用:
1.計(jì)算機(jī)視覺
典型的應(yīng)用包括:人臉識(shí)別跋涣、車牌識(shí)別、掃描文字識(shí)別屏歹、圖片內(nèi)容識(shí)別幽纷、圖片搜索等等武学。
2.自然語言處理
典型的應(yīng)用包括:搜索引擎智能匹配熏矿、文本內(nèi)容理解乱豆、文本情緒判斷,語音識(shí)別勇边、輸入法、機(jī)器翻譯等等。
3.社會(huì)網(wǎng)絡(luò)分析
典型的應(yīng)用包括:用戶畫像首懈、網(wǎng)絡(luò)關(guān)聯(lián)分析、欺詐作弊發(fā)現(xiàn)卿啡、熱點(diǎn)發(fā)現(xiàn)等等官辽。
4.推薦
典型的應(yīng)用包括:蝦米音樂的“歌曲推薦”,某寶的“猜你喜歡”等等。
3.基本工作流程
其工作流程如下:
3.1.1抽象成數(shù)學(xué)問題
對(duì)問題進(jìn)行抽象和建模狞膘,轉(zhuǎn)換成適合機(jī)器學(xué)習(xí)進(jìn)行處理的數(shù)據(jù)
3.1.2獲取數(shù)據(jù)
獲取數(shù)據(jù)集,有兩點(diǎn)需要考慮阔蛉,一是數(shù)據(jù)正負(fù)例是否不平衡苗踪,二是要考慮數(shù)據(jù)量過大或特征過多是否能在單服務(wù)器上跑完(考慮降維)
3.1.3特征預(yù)處理與特征選擇
良好的數(shù)據(jù)要能夠提取出良好的特征才能真正發(fā)揮效力测暗。
考慮歸一化、離散化、因子化、缺失值處理、去除共線性等歹河,數(shù)據(jù)挖掘過程中很多時(shí)間就花在它們上面。
3.1.4訓(xùn)練模型與調(diào)優(yōu)
使用算法進(jìn)行模型訓(xùn)練和參數(shù)調(diào)優(yōu)
3.1.5模型診斷
如何確定模型調(diào)優(yōu)的方向與思路呢衅澈?這就需要對(duì)模型進(jìn)行診斷的技術(shù)。
過擬合经备、欠擬合判斷部默,誤差分析也是機(jī)器學(xué)習(xí)至關(guān)重要的步驟。這是一個(gè)反復(fù)迭代不斷逼近的過程纷闺,需要不斷地嘗試份蝴,進(jìn)而達(dá)到最優(yōu)狀態(tài)。
3.1.6模型融合
一般來說浸卦,模型融合后都能使得效果有一定提升案糙。而且效果很好。
3.1.7上線運(yùn)行
這一部分內(nèi)容主要跟工程實(shí)現(xiàn)的相關(guān)性比較大萤皂。工程上是結(jié)果導(dǎo)向裆熙,模型在線上運(yùn)行的效果直接決定模型的成敗。不單純包括其準(zhǔn)確程度蛤奥、誤差等情況僚稿,還包括其運(yùn)行的速度(時(shí)間復(fù)雜度)、資源消耗程度(空間復(fù)雜度)缅刽、穩(wěn)定性是否可接受蠢络。
這些工作流程主要是工程實(shí)踐上總結(jié)出的一些經(jīng)驗(yàn)。并不是每個(gè)項(xiàng)目都包含完整的一個(gè)流程啡省。
4.學(xué)習(xí)線路
數(shù)學(xué)基礎(chǔ)
微積分,線性代數(shù)髓霞,概率統(tǒng)計(jì),(還有很多结序,列太多就不想學(xué)了有木有薪捍。。凳干。)
典型算法
絕大多數(shù)問題用典型機(jī)器學(xué)習(xí)的算法都能解決救赐,粗略地列舉一下這些方法如下:
處理分類問題的常用算法包括:邏輯回歸(工業(yè)界最常用)只磷,支持向量機(jī),隨機(jī)森林预厌,樸素貝葉斯(NLP中常用)元媚,深度神經(jīng)網(wǎng)絡(luò)(視頻苗沧、圖片待逞、語音等多媒體數(shù)據(jù)中使用)网严。
處理回歸問題的常用算法包括:線性回歸,普通最小二乘回歸(Ordinary Least Squares Regression)怜庸,逐步回歸(Stepwise Regression)驴一,多元自適應(yīng)回歸樣條(Multivariate Adaptive Regression Splines)
處理聚類問題的常用算法包括:K均值(K-means)肝断,基于密度聚類胸懈,LDA等等恰响。
降維的常用算法包括:主成分分析(PCA),奇異值分解(SVD)等。
推薦系統(tǒng)的常用算法:協(xié)同過濾算法
模型融合(model ensemble)和提升(boosting)的算法包括:bagging首有,adaboost枢劝,GBDT,GBRT
其他很重要的算法包括:EM算法等等烙常。
編程語言鹤盒、工具和環(huán)境
1.python
數(shù)據(jù)挖掘:
pandas:模擬R,進(jìn)行數(shù)據(jù)瀏覽與預(yù)處理驼鞭。
numpy:數(shù)組運(yùn)算尺碰。
scipy:高效的科學(xué)計(jì)算译隘。
matplotlib:非常方便的數(shù)據(jù)可視化工具细燎。
機(jī)器學(xué)習(xí):
scikit-learn:遠(yuǎn)近聞名的機(jī)器學(xué)習(xí)package玻驻。未必是最高效的偿枕,但是接口真心封裝得好,幾乎所有的機(jī)器學(xué)習(xí)算法輸入輸出部分格式都一致嗤锉。而它的支持文檔甚至可以直接當(dāng)做教程來學(xué)習(xí)墓塌,非常用心。對(duì)于不是非常高緯度访诱、高量級(jí)的數(shù)據(jù)韩肝,scikit-learn勝任得非常好
libsvm:高效率的svm模型實(shí)現(xiàn)(了解一下很有好處,libsvm的系數(shù)數(shù)據(jù)輸入格式涡相,在各處都非常常見)
keras/TensorFlow:對(duì)深度學(xué)習(xí)感興趣的同學(xué)剩蟀,也能很方便地搭建自己的神經(jīng)網(wǎng)絡(luò)了。
自然語言處理:
nltk:自然語言處理的相關(guān)功能做得非常全面生逸,有典型語料庫槽袄,而且上手也非常容易锋谐。
交互式環(huán)境:
ipython notebook:能直接打通數(shù)據(jù)到結(jié)果的通道,方便至極乾戏。強(qiáng)力推薦。
2.R
R最大的優(yōu)勢(shì)是開源社區(qū)鼓择,聚集了非常多功能強(qiáng)大可直接使用的包,絕大多數(shù)的機(jī)器學(xué)習(xí)算法在R中都有完善的包可直接使用念搬,同時(shí)文檔也非常齊全摆出。常見的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外爷恳,值得一提的是R的可視化效果做得非常不錯(cuò)温亲,而這對(duì)于機(jī)器學(xué)習(xí)是非常有幫助的杯矩。
3.Java系列
WEKA Machine Learning Workbench?相當(dāng)于java中的scikit-learn
大數(shù)據(jù)相關(guān)
Hadoop:基本上是工業(yè)界的標(biāo)配了。一般用來做特征清洗、特征處理的相關(guān)工作在刺。
spark:提供了MLlib這樣的大數(shù)據(jù)機(jī)器學(xué)習(xí)平臺(tái),實(shí)現(xiàn)了很多常用算法魄幕。但可靠性颖杏、穩(wěn)定性上有待提高。
基本介紹就到這里翼抠,歡迎入坑阴颖。丐膝。钾菊。
參考學(xué)習(xí)資料: