11、数据分析--逻辑回归
線性回歸(用特征之間的規律進行回歸處理)是處理連續性的,
邏輯回歸(用特征之間的規律進行邏輯處理)屬于分類是處理離散性的
? 關于判斷其實就是二分類問題
邏輯回歸的基礎還是使用了線性回歸來處理,只是把模型進行了調整,轉化為概率問題
邏輯回歸(進行二分類的最快算法,深度學習都可用到)
概念:邏輯回歸,即邏輯模型,也譯作“評定模型”、“分類評定模型”
回歸要求得到的外標簽的數值是連續的,邏輯回歸則是要進行二分類問題的模型,通過標簽在圖像上的表示,然后用線性回歸的圖像線來分隔出各種外標簽區域,當數據在哪個區域時來進行判斷。所以說邏輯回歸應用到了線性回歸來解決分類的問題
常用于做數據的初步判斷,(推薦算法,醫療診斷等)
? 運用于推薦算法:評判給用戶呈現的內容是否是用戶喜歡看到的,這里做出了判斷就是二分類的體現
是通過線性模型完成分類效果(線性可分)
sigmoid函數:
sigmoid將線性問題轉化為概率問題,函數輸出的結果值是把線性回歸數據范圍映射到了0~1之間了
函數中當變量取0時為1,取正無窮時無限趨于0。這里的變量就是wx+b,屬于線性回歸的外標簽,這樣就能將線性問題轉化為概率問題,這里的0~1就成了概率問題。
將結果值壓縮到0-1之間(0負,1正)
預測值在0.5附近時,可以更快的進行下降,將預測值更加貼近于0或1的數值
0.5就是閾值(求導得到最值),00.5對應的就是負類別,0.51對應的就是正類別,閾值位置的梯度大,那么數據分配到的位置就越靠近0或1,這樣的模型才夠準確。比如判斷正類別時0.55的概率不如0.99的概率更準確
sigmoid函數的中間導數大,兩側導數小,這里的sigmoid求導就是為了能利用到梯度下降從最大值開始向兩邊0或1下降,然后調整模型通過劃分的正負線性回歸界限圖像線參考,然后建立邏輯回歸模型來更好的作二分類判斷。注意的是線性回歸的求導是對wx+b求導,但是邏輯回歸則要對sigmoid函數求導,wx+b只是sigmoid函數的一個參數
梯度下降在調整參數和權重的同時也在調整每個模型預測出來的概率
梯度下降都是往下的,sigmoid函數求導最低的是概率為0或1的位置
注:樣本點距離線性模型的區分線越近,就證明概率越不確定
損失函數
? 極大似然估計:
? 四步走為1、建立函數 2、取對數 3、求導 4、令其等0
? 似然函數連乘過程,出現多少個1就是多少次方的py=1的概率,出現多少個0(另一種推導方式是把0換成-1)就是多少次方的py=0的概率
? 似然函數取對數,連乘變成了連加,得到代價函數,這里邏輯回歸的代價函數又叫”交叉熵“
? 使用梯度下降法就能反解出w了
? 更新權重 w=w-rObj
? 信息論:(正統的函數推導方式)
? 可以使用信息論解釋邏輯回歸的代價函數
? 概率:
? 就是判斷一件事情發生的可能性
? 信息量:
? 信息量是得知該消息時的意外程度
? 信息量 = log 1/p= ? log p
? 概率越低,信息量越大
? 用于分類問題:
? 概率越低,證明模型計算越不準確,所以都希望能讓信息量越小越好,概率也會越高,模型計算的也就越準確
? 熵
? 熵是用來衡量信息不確定性的單位(概率和信息量乘積)
? 交叉熵
? 用來檢驗實際發生概率和預測準確率信息量的乘積,
? 熵為正或負的信息不確定性,想求出正類別,那么交叉熵正類別的信息量就該最小
? 其中,Pk為樣本實際發生概率, qk為樣本預測準確的概率
? -Pklog 2( qk )
評估指標
? 混淆矩陣():
? 假設我們手上有60個正樣本,40個負樣本,我們想找出所有的正樣本,模型查找出50個,其中只有40個是真正的正樣本(即TP有40個本來是正的被預測對的只有40個,FP有10個,FN有20個,TN有30個認為還有30個負樣本,這里沒進行查找所以待定到TN)
? TP: 將正類預測為正類數
? FN: 將正類預測為負類數(本來是正樣本卻被預測成負樣本,正負得負,未達到找到準確目的)
? FP: 將負類預測為正類數
? TN: 將負類預測為負類數(本來是負樣本卻被預測出負樣本,負負得正,達到找到準確目的)
? 案例,有樣例100個,50個正樣本,50個負樣本,其中模型查找出40個正樣本,預測出40個正樣本中有5個是負樣本。(TP35個,FN15個,FP為5個,TN45個)
? TP(true positive),FP(false negative)
? 常見指標:
? 準確率(accuracy) (預測對的/所有) = (TP+TN)/(TP+FN+FP+TN)
? 精確率(precision)、查準類(確實為正例的數量/模型認為是正例的個數)= TP/(TP+FP) (為1時代表FP為0,出錯的幾率不存在,屬于最好的精確率)
? 召回率(recall)、查全率(確實為正例的數量/總的正例的數量) = TP/(TP+FN) (FN為0時,可以防止出錯,所以結果為1時也是最好的)
? 精確率和召回率要同時使用來做分類評估,只用一個的話,數據會比較偏激
? 精確率和召回率的特點:只能用作二分類評估的指標
?
讓精確率和召回率評估的三種方式:
? F1值就是精確率和召回率的調和均值,2/F1=1/P+1/R,F1 = 2 * (precision精確率 * recall召回率) / (precision精確率 + recall召回率)
? F1能很好的讓精確率和召回率同時使用來作為分類評估的指標,如果精確率和召回率都是1,那么F1結果就為1,精確率和召回率都為0,F1結果為0.結果就能很好的用0~1的區間反映出來
? PR曲線(除了用F1之外,還可以使用PR曲線來讓精確率和召回率同時使用):
? 某個模型對一批數據數據進行預測,會為每個樣本輸出一個概率(屬于正例的概率)
? 我們做分類時如果要嚴格輸出0或1的話,就要使用閾值對概率進行激活。
? 選擇不同的閾值時(邏輯回歸默認的閾值為0.5),精確率和召回率就會不同。那么就有pr曲線來表示(pr曲線的圖像圍成的微積分面積越大,那么模型的效果就越好)
? ROC,AUC(ROC曲線閾值越接近坐標(0,1)的點面積最大,效果最好,表示FP接近0,TP接近1,這里ROC曲線配合AUC面積才能更好了解模型效果):
? ROC全稱是“受試者工作特征”。
? AUC,ROC曲線的面積就是。
? AUC用于衡量“二分類問題”機器學習算法性能(泛化能力)
? 分類模型評估:
? 二分類的指標(只能用作二分類)有精確率、召回率、F1值、混淆矩陣、ROC曲線、ROC曲線下的面積
多分類:
? 分類中除了二分類,還要能處理多種分類(二分類用sigmoid模型,多分類用softmax模型)
? 多分類使用softmax方式來進行處理,softmax是邏輯回歸的一般形式??梢酝ㄟ^softmax進行合理分類。
? 比如每一類可以用數字代替
? 算法原理:
? 多分類是二分類的一種拓展形式
? 二分類采用閾值方式進行分類(0.5分界)
? 多分類采用最大概率進行分類(類別多了,就不能用閾值來分類了,多分類就要用到目標對應的哪個類別概率大就把目標分配哪個指定類別)
? 多分類把所有參數代入函數,得到一維數組的概率(結果得到的所有概率和為1,因為數據結果已經被映射到概率空間中了),概率最大的就被分到那個類別中
? 多分類處理的原理也是通過線性模型解決分類問題
? 多分類的損失函數和代價函數都不是概率相乘了,而是用向量取代
? 例如:紫色鳶尾花的多分類,通過花瓣的長寬的特征來進行概率最大化的分類,
數據預處理:
? 類別不平衡處理(類別不平衡就是某類數量特別多和某類數量特別少的在一起時):
? 欠采樣(去除的方式)
? 去除一些反例(假設反例多),使得正、反例數目接近,然后再學習
? 優點:速度快
? 缺點:可能會丟失一些重要信息
? 過采樣(復制某類數據的方式,來達到數目接近,這樣擬合的數據會過擬合)
? 增加一些正例,使得正、反例數目接近,然后再學習
? 優點:保持數據信息
? 缺點:可能會過擬合
? 代價敏感學習(加權的方式,需要算法帶權條件)
? 給某類樣本更高的權重,比如,正例是反例的一半,那么正例的權重就是反例的2倍,在sklearn中由
? class_weight指定
? 優點:速度快、降低過擬合風險
? 缺點:需要算法支持帶權學習
?
? 標簽化、獨熱編碼:
? 標簽化
? 使用標簽化處理的方式可以將一些具有頻數的內容轉化成標簽(頻數的處理就是離散值的處理)
? 獨熱編碼(把標簽變成向量的形式來處理,因為如果直接把數值代入公式中,所求得的邏輯回歸概率是不同同的,是不公平的)
? 獨熱碼,在英文文獻中稱做 one-hot code, 直觀來說就是有多少個狀態就有多少比特,而且只有一個比特為1(這里的1就是熱,獨熱就是比特值里只有一個數值是1的,其他全是0),其他全為0的一種碼制
? 獨熱編碼(啞變量 dummy variable)是因為大部分算法是基于向量空間中的度量來進行計算的,為了使非偏序關系的變量取值不具有偏序性,并且到圓點是等距的。使用one-hot編碼,將離散特征的取值擴展到了歐式空間,離散特征的某個取值就對應歐式空間的某個點。將離散型特征使用one-hot編碼,會讓特征之間的距離計算更加合理。(獨熱編碼的歐式空間中的距離都是等距的)
? 獨熱編碼特點
? 優點:獨熱編碼解決了分類器不好處理屬性數據的問題,在一定程度上也起到了擴充特征的作用。它的值只有0和1,不同的類型存儲在垂直的空間。
? 缺點:當類別的數量很多時,特征空間會變得非常大。在這種情況下,一般可以用PCA來減少維度。而且one hot encoding+PCA這種組合在實際中也非常有用。(當100分類時要有100個100向量,這是就可以使用主成分分析了)
? from sklearn.preprocessing import OneHotEncoder, LabelEncoder
? OneHotEncoder 獨熱編碼
? LabelEncoder 標簽化
? 可以把先標簽化將字符串信息變成數字來分類,然后用toarray方法來把標簽化之后的數字進行轉換得到獨熱編碼
? 常用方法 fit_transform()擬合并轉化
? 邏輯回歸模型優缺點:
? 優點
? 模型簡單,易于解釋
? 算法容易并行,適合大數據的求解
? 缺點
? 不能擬合非線性數據(突出短板)
? 采用何種特征組合需要一定的數據敏感性
? 特征多了:提高模型效果,但是計算成本高,需要數據量大,否則會過擬合
? 特征少了:有欠擬合的風險
? 刪除無用特征需要進行多重共線性判斷(人力成本)
np.ravel把多維數組變成一維數組
邏輯回歸模型對象.predict_proba是把參數放回到模型中,進行擬合得到是0和1的可能性,每行的和為1,表示0和1的概率占比(預測值的預測概率)
LabelEnocoder()標準化,把單詞換成數字來表達
邏輯回歸中的網格搜索參數param_grid的C表示正則化的系數為1/C(轉置后的正則化系數),后面傳入的參數都作C被1除然后當作正則化的系數
分類問題中,模型分數和準確率的分數是一樣的
總結
以上是生活随笔為你收集整理的11、数据分析--逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019参加Python开发培训靠谱吗?
- 下一篇: r7 5800x配什么主板和显卡