一文速覽機器學習的類別(Python代碼)

序列文章:
上一篇 《白話機器學習概念》

一蜕着、 機器學習類別

機器學習按照學習數(shù)據(jù)經驗的不同谋竖,即訓練數(shù)據(jù)的標簽信息的差異,可以分為監(jiān)督學習(supervised learning)承匣、非監(jiān)督學習(unsupervised learning)蓖乘、半監(jiān)督學習(semi- supervised learning)和強化學習(reinforcement learning)。

1.1 監(jiān)督學習

監(jiān)督學習是機器學習中應用最廣泛及成熟的韧骗,它是從有標簽的數(shù)據(jù)樣本(x嘉抒,y)中,學習如何關聯(lián)x到正確的y袍暴。這過程就像是模型在給定題目的已知條件(特征x)些侍,參考著答案(標簽y)學習隶症,借助標簽y的監(jiān)督糾正缺亮,模型通過算法不斷調整自身參數(shù)以達到學習目標辑莫。

監(jiān)督學習常用的模型有:線性回歸、樸素貝葉斯事哭、K最近鄰狈定、邏輯回歸颂龙、支持向量機、神經網(wǎng)絡纽什、決策樹措嵌、集成學習(如LightGBM)等。按照應用場景芦缰,以模型預測結果Y的取值有限或者無限的企巢,可再進一步分為分類或者回歸模型。

分類模型

分類模型是處理預測結果取值有限的分類任務让蕾。如下示例通過邏輯回歸分類模型浪规,根據(jù)溫濕度、風速等情況去預測是否會下雨探孝。

  • 邏輯回歸簡介

邏輯回歸雖然名字有帶“回歸”笋婿,但其實它是一種廣義線性的分類模型,由于模型簡單和高效顿颅,在實際中應用非常廣泛缸濒。

邏輯回歸模型結構可以視為雙層的神經網(wǎng)絡(如圖4.5)。模型輸入x粱腻,通過神經元激活函數(shù)f(f為sigmoid函數(shù))將輸入非線性轉換至0~1的取值輸出庇配,最終學習的模型決策函數(shù)為Y=sigmoid(wx + b)

。其中模型參數(shù)w即對應各特征(x1, x2, x3...)的權重(w1,w2,w3...)绍些,b模型參數(shù)代表著偏置項捞慌,Y為預測結果(0~1范圍)。

模型的學習目標為極小化交叉熵損失函數(shù)柬批。模型的優(yōu)化算法常用梯度下降算法去迭代求解損失函數(shù)的極小值啸澡,得到較優(yōu)的模型參數(shù)。


  • 代碼示例
    示例所用天氣數(shù)據(jù)集是簡單的天氣情況記錄數(shù)據(jù)氮帐,包括室外溫濕度锻霎、風速、是否下雨等揪漩,在分類任務中,我們以是否下雨作為標簽吏口,其他為特征(如圖4.6)


import pandas as pd    # 導入pandas庫
weather_df = pd.read_csv('./data/weather.csv')   # 加載天氣數(shù)據(jù)集
weather_df.head(10)   # 顯示數(shù)據(jù)的前10行

from sklearn.linear_model import LogisticRegression  # 導入邏輯回歸模型
x = weather_df.drop('If Rain', axis=1)  # 特征x
y = weather_df['If Rain']  # 標簽y
lr = LogisticRegression()
lr.fit(x, y)  # 模型訓練
print("前10個樣本預測結果:", lr.predict(x[0:10]) ) # 模型預測前10個樣本并輸出結果

以訓練的模型輸出前10個樣本預測結果為: [1 1 1 1 1 1 0 1 1 1]奄容,對比實際前10個樣本的標簽: [1 1 1 1 1 0 1 0 0 1]冰更,預測準確率并不高。在后面章節(jié)我們會具體介紹如何評估模型的預測效果昂勒,以及進一步優(yōu)化模型效果蜀细。

回歸模型
回歸模型是處理預測結果取值無限的回歸任務。如下代碼示例通過線性回歸模型戈盈,以室外濕度為標簽奠衔,根據(jù)溫度、風力塘娶、下雨等情況預測室外濕度归斤。

  • 線性回歸簡介
    線性回歸模型前提假設是y和x呈線性關系,輸入x刁岸,模型決策函數(shù)為Y=wx+b脏里。模型的學習目標為極小化均方誤差損失函數(shù)。模型的優(yōu)化算法常用最小二乘法求解最優(yōu)的模型參數(shù)虹曙。
  • 代碼示例
from sklearn.linear_model import LinearRegression  #導入線性回歸模型
x = weather_df.drop('Humidity', axis=1)  # 特征x
y = weather_df['Humidity']  # 標簽y
linear = LinearRegression()

linear.fit(x, y)  # 模型訓練
print("前10個樣本預測結果:", linear.predict(x[0:10]) ) # 模型預測前10個樣本并輸出結果
# 前10個樣本預測結果: [0.42053525 0.32811401 0.31466161 0.3238797  0.29984453 0.29880059

1.2 非監(jiān)督學習

非監(jiān)督學習也是機器學習中應用較廣泛的迫横,是從無標注的數(shù)據(jù)(x)中,學習數(shù)據(jù)的內在規(guī)律酝碳。這個過程就像模型在沒有人提供參考答案(y)矾踱,完全通過自己琢磨題目的知識點,對知識點進行歸納疏哗、總結呛讲。按照應用場景,非監(jiān)督學習可以分為聚類沃斤,特征降維和關聯(lián)分析等方法圣蝎。 如下示例通過Kmeans聚類劃分出不同品種的iris鳶尾花樣本。

  • Kmeans聚類簡介
    Kmeans聚類是非監(jiān)督學習常用的方法衡瓶,其原理是先初始化k個簇類中心徘公,通過迭代算法更新各簇類樣本,實現(xiàn)樣本與其歸屬的簇類中心的距離最小的目標哮针。其算法步驟為:
    1.初始化:隨機選擇 k 個樣本作為初始簇類中心(可以憑先驗知識关面、驗證法確定k的取值);
    2.針對數(shù)據(jù)集中每個樣本 計算它到 k 個簇類中心的距離十厢,并將其歸屬到距離最小的簇類中心所對應的類中等太;
    3.針對每個簇類 ,重新計算它的簇類中心位置蛮放;
    4.重復上面 2 缩抡、3 兩步操作,直到達到某個中止條件(如迭代次數(shù)包颁,簇類中心位置不變等)

  • 代碼示例

from sklearn.datasets import load_iris  # 數(shù)據(jù)集
from sklearn.cluster import KMeans   #  Kmeans模型
import matplotlib.pyplot as plt  # plt畫圖
lris_df = datasets.load_iris()  # 加載iris鳶尾花數(shù)據(jù)集瞻想,數(shù)據(jù)集有150條樣本压真,分三類的iris品種
x = lris_df.data
k = 3  # 聚類出k個簇類, 已知數(shù)據(jù)集有三類品種, 設定為3
model = KMeans(n_clusters=k)  
model.fit(x)  # 訓練模型
print("前10個樣本聚類結果:",model.predict(x[0:10]) ) # 模型預測前10個樣本并輸出聚類結果:[1 1 1 1 1 1 1 1 1 1] 
# 樣本的聚類效果以散點圖展示
x_axis = lris_df.data[:,0] # 以iris花的sepal length (cm)特征作為x軸
y_axis = lris_df.data[:,1] # 以iris花的sepal width (cm)特征作為y軸
plt.scatter(x_axis, y_axis, c=model.predict(x)) # 分標簽顏色展示聚類效果
plt.xlabel('Sepal length (cm)')#設定x軸注釋
plt.ylabel('Sepal width (cm)')#設定y軸注釋
plt.title('Iris KMeans Scatter')
plt.show()   # 如圖4.7聚類效果

1.3半監(jiān)督學習

半監(jiān)督學習是介于傳統(tǒng)監(jiān)督學習和無監(jiān)督學習之間(如圖4.8),其思想是在有標簽樣本數(shù)量較少的情況下蘑险,以一定的假設前提在模型訓練中引入無標簽樣本滴肿,以充分捕捉數(shù)據(jù)整體潛在分布,改善如傳統(tǒng)無監(jiān)督學習過程盲目性佃迄、監(jiān)督學習在訓練樣本不足導致的學習效果不佳的問題泼差。按照應用場景,半監(jiān)督學習可以分為聚類呵俏,分類及回歸等方法堆缘。 如下示例通過基于圖的半監(jiān)督算法——標簽傳播算法分類俱樂部成員。

  • 標簽傳播算法簡介

標簽傳播算法(LPA)是基于圖的半監(jiān)督學習分類算法柴信,基本思路是在所有樣本組成的圖網(wǎng)絡中套啤,從已標記的節(jié)點標簽信息來預測未標記的節(jié)點標簽。

  1. 首先利用樣本間的關系(可以是樣本客觀關系随常,或者利用相似度函數(shù)計算樣本間的關系)建立完全圖模型潜沦。

  2. 接著向圖中加入已標記的標簽信息(或無),無標簽節(jié)點是用一個隨機的唯一的標簽初始化绪氛。

  3. 將一個節(jié)點的標簽設置為該節(jié)點的相鄰節(jié)點中出現(xiàn)頻率最高的標簽唆鸡,重復迭代,直到標簽不變即算法收斂枣察。

  • 代碼示例
    該示例的數(shù)據(jù)集空手道俱樂部是一個被廣泛使用的社交網(wǎng)絡争占,其中的節(jié)點代表空手道俱樂部的成員,邊代表成員之間的相互關系序目。
import networkx as nx # 導入networkx圖網(wǎng)絡庫
import matplotlib.pyplot as plt
from networkx.algorithms import community  # 圖社區(qū)算法
G=nx.karate_club_graph()   # 加載美國空手道俱樂部圖數(shù)據(jù)
#注: 本例未使用已標記信息, 嚴格來說是半監(jiān)督算法的無監(jiān)督應用案例
lpa = community.label_propagation_communities(G)  # 運行標簽傳播算法
community_index = {n: i for i, com in enumerate(lpa) for n in com} # 各標簽對應的節(jié)點
node_color = [community_index[n] for n in G]  # 以標簽作為節(jié)點顏色
pos = nx.spring_layout(G)  # 節(jié)點的布局為spring型
nx.draw_networkx_labels(G, pos) # 節(jié)點序號
nx.draw(G, pos, node_color=node_color) # 分標簽顏色展示圖網(wǎng)絡
plt.title(' Karate_club network LPA')
plt.show() #展示分類效果臂痕,不同顏色為不同類別

1.4 強化學習

強化學習從某種程度可以看作是有延遲標簽信息的監(jiān)督學習(如圖4.9),是指智能體Agent在環(huán)境Environment中采取一種行為action猿涨,環(huán)境將其轉換為一次回報reward和一種狀態(tài)表示state握童,隨后反饋給智能體的學習過程。本書中對強化學習僅做簡單介紹叛赚,有興趣可以自行擴展澡绩。



文章首發(fā)于算法進階,公眾號閱讀原文可訪問GitHub項目源碼

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末俺附,一起剝皮案震驚了整個濱河市肥卡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌事镣,老刑警劉巖步鉴,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡唠叛,警方通過查閱死者的電腦和手機只嚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艺沼,“玉大人,你說我怎么就攤上這事蕴掏≌习悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵盛杰,是天一觀的道長挽荡。 經常有香客問我,道長即供,這世上最難降的妖魔是什么定拟? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮逗嫡,結果婚禮上青自,老公的妹妹穿的比我還像新娘。我一直安慰自己驱证,他們只是感情好延窜,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抹锄,像睡著了一般逆瑞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伙单,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天获高,我揣著相機與錄音,去河邊找鬼吻育。 笑死念秧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的扫沼。 我是一名探鬼主播出爹,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缎除!你這毒婦竟也來了严就?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤器罐,失蹤者是張志新(化名)和其女友劉穎梢为,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡铸董,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年祟印,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粟害。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕴忆,死狀恐怖,靈堂內的尸體忽然破棺而出悲幅,到底是詐尸還是另有隱情套鹅,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布汰具,位于F島的核電站卓鹿,受9級特大地震影響,放射性物質發(fā)生泄漏留荔。R本人自食惡果不足惜吟孙,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聚蝶。 院中可真熱鬧杰妓,春花似錦、人聲如沸既荚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恰聘。三九已至句各,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晴叨,已是汗流浹背凿宾。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兼蕊,地道東北人初厚。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像孙技,于是被迫代替她去往敵國和親产禾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容