數據模型:並不是簡單地二維數據,多個維度或者對象的數據聚合起來
{
persion1's attr1:value1,...,persion1's attrN:valueN,persion2's attr1:value1,...,persion2's attrN:value1,whetherSuccess:value
}
同一個問題:不同的分類方法的類比
決策樹:
存在多個數值型輸入,且這些數值所呈現的關系並不簡單,決策樹往往不是最有效的方法
簡單的線性分類:
它只能找出一條分界線來,如果找不到,或者實際存在多條直線時,分類器會得到錯誤的答案
算法思想:
核方法和SVM都是線性分類(類發現群組的聚類)的方法,不同的是在更高維度上計算兩個向量間的點積,而簡單的線性分類只是在二維空間里用點積來計算距離
核方法:
用新的函數來取代原來的點積函數,將數據映射到更高維度的坐標空間去,並返回高維度空間內的點積,實際中會采取少數幾種變換方法,常用徑向基函數(radial-basis function):
接受兩個向量作為輸入,返回一個標量值,和點積不同的是,其是非線性的


先用向量A和一個分類中的每個向量求距離,然后再求平均距離
SVM:
使用LibSVM
數據的線性化是重點:
1.是否問題:yes->1,no->0
2.興趣類的:
單人的:可以用是否的方法處理成對的:則兩人出現計數累加1次某些不同的興趣愛好也是可能配對成功的,如滑雪與滑板;如果為每一個興趣都建立一個變量,則分類器更加復雜;一種好的處理方法是將興趣愛好按層級排列:第一級-第二級-第三級:滑雪和滑板都是雪地運動,雪地運行又是體育運動,如果兩個人都對第三級的項目感興趣,則分值為1,否則如果兩個人都是對第二級的項目感興趣,則分支為1,第一級的感興趣,分值為0.5;即層級越高,贏取的分值越低
3.數據的縮放:對不同度量單位的數值進行衡量時,需要將數據縮放為統一尺度[0,1],做歸一化處理,即m(x)=(x-min(X))/(max(X)-min(X));或者構建成本函數,獲得每個屬性的權重
1.數據的處理:
婚介數據集:
年齡、是否吸煙、是否要孩子、興趣列表、家庭住址
每一行數據包含了一對男女的信息以及是否匹配成功的標志(0和1)

數據集中的數據是相互作用和非線性的,所以先用年齡和是否配對成功來分析各種分類算法的使用場景
2.決策樹
i.適用場景:
根據數值邊界來對數據進行划分的
ii.處理過程:
使用年齡來最決策樹


決策樹更加適合自動分類


iii.不使用場景:
存在多個數值型輸入,且這些數值所呈現的關系並不簡單,決策樹往往不是最有效的方法
3.基本的線性分類:
i.思想:
尋找每個分類中所有數據的平均值,並構造一個代表該分類中心位置的點,根據和每個中心位置的距離遠近來進行分類
ii.計算方法:


iii.分類結果圖:


iv.距離的計算方法:
a.歐幾里得距離
b.
向量和點積
先計算兩個分類的中心點
然后根據兩個向量的點積的正負(夾角的大小)來判斷屬於哪個分類:
class="sign"((X-(M0+M1)/2)*(M0-M1))=sign(XM0-XM1+(M0*M0-M1*M1)/2)
v.
優劣性:
它只能找出一條分界線來,如果找不到,或者實際存在多條直線時,分類器會得到錯誤的答案
4.數據的線性化:
數據有數值型,也有分類型,決策樹不需對數據進行預處理,但是其他分類器只能處理數值型數據,所有需要進行數據的數值化:
i.是否問題:
yes --> 1
no --> 0
ii.興趣列表:
單人的:可以用是否的方法處理
成對的:則兩人出現計數累加1次
某些不同的興趣愛好也是可能配對成功的,如滑雪與滑板;如果為每一個興趣都建立一個變量,則分類器更加復雜;一種好的處理方法是將興趣愛好按層級排列:第一級-第二級-第三級:滑雪和滑板都是雪地運動,雪地運行又是體育運動,如果兩個人都對第三級的項目感興趣,則分值為1,否則如果兩個人都是對第二級的項目感興趣,則分支為1,第一級的感興趣,分值為0.5;即層級越高,贏取的分值越低
iii.地理位置的距離:
利用Yahoo Maps來根據地址為郵編得到經度和緯度,然后將兩地的緯度差*69.1,經度差*53,求歐幾里得距離
iv.對數據進行縮放:(也可用成本函數進行計算)
對不同度量單位的數值進行衡量時,需要將數據縮放為統一尺度[0,1],做歸一化處理,即m(x)=(x-min(X))/(max(X)-min(X))


5.核方法:(超越線性分類的方法,來解決尋找一條分界線額局限性)
i.通過對數據進行變換實現線性分類是有可能的


可以對x、y求平方,進行變化后,可以尋找一條分界線,或者數據的多維變換:a=x^2,b=x*y,c=y^2,在多維空間里尋找兩個分類的分界線,但是將數據投影到很多維度上又不切實際
ii.核技法:
用新的函數來取代原來的點積函數,將數據映射到更高維度的坐標空間去,並返回高維度空間內的點積,實際中會采取少數幾種變換方法,常用徑向基函數(radial-basis function):
接受兩個向量作為輸入,返回一個標量值,和點積不同的是,其是非線性的
,
通過調整gamma來得到最佳的線性分離


iii.坐標點與均值點間的距離:
先對一組向量求均值點,然后向量A與均值點的點積,與先用向量A和向量組中的每一個向量求點積,然后在求均值的效果一樣,所有直接計算某個坐標點與分類中其余每個坐標點的點積或者徑向基函數,然后再求均值


offset參數是偏移量,在轉換后的空間中也會變化,因其計算過程費時,所以預先為某個數據集計算一次偏移量,然后調用的時候傳入
6.支持向量機
i.數據集


大多數的數據都是遠離分界線的,所以判斷坐標點的分類與是否位於直線的某一側並沒有太大的實際意義
ii.支持向量機:
廣為認知的一組方法的統稱,用來解決上述問題的分類器:嘗試找出一條盡可能遠離所有分類的線,這條線被稱為最大間隔超平面(Maximun-Margin hyperplan)
iii.例子:
此處選擇分界線的依據是:尋找兩條分別經過各分類相應坐標點的平行線,使其與分界線的距離盡可能的遠;而對於新數據點,通過觀察位於分界線的哪一側類判斷其所屬的分類;同時,只有位於間隔區邊緣的坐標點才是確定分界線位置所必須的,因此可以去掉冗余的數據,而分界線處於相同的位置,將這條分解稱為支持向量;而尋找支持向量,並利用其來尋找分界線的算法及時支持向量機


iv.應用:
面部表情分類
軍事數據偵測入侵者
預測蛋白質結構
筆跡識別
確定地震期間的潛在危害
v.LIBSVM支持向量機的使用
a.從包含兩個列表的元組中讀取數據,一個列表含有分類數據,另一個函數輸入數據
b.示例:

c.對於婚介數據集:

使用交叉驗證來訓練模型,接收一個參數n,將數據拆為n個子集,每次將一個子集作為測試集,利用其它子集對模型展開訓練;將結果與最初的列表進行對比,answer與guesses差異數為116,即得到了500行數據中的384匹配項

