機器學習主要用于解決分類、回歸和聚類問題,分類屬于監督學習算法,是指根據已有的資料和标簽(分類的類别)進行學習,預測未知資料的标簽。分類問題的目标是預測資料的類别标簽(class label),可以把分類問題劃分為二分類和多分類問題。二分類是指在兩個類别中選擇一個類别,在二分類問題中,其中一個類别稱作正類(positive class),另一個類别稱作負類(negative class),比如判斷垃圾郵件。多分類問題是指從多個分類中選擇一個類别。
總體來說,資料分類是一個二階段的過程,第一個階段是學習階段,用于訓練分類模型,第二個階段是預測階段,使用模型預測新資料的類标簽。此外,由于現實生活中的資料不是完美的,在開始訓練模型之前,需要對資料進行預處理。在模型建構之後,還需要對模型進行評估和調參,選擇最優的參數,達到最優的分類效果。
舉個例子,下面的代碼實作了一個最簡單的knn分類器,沒有對資料進行預處理,也沒有對模型進行評估和調參。從代碼中可以看出,knn分類模型是由兩部分構成的:第一部分是拟合資料(fit),也就是訓練模型,第二部分是預測資料(predict)。
訓練資料是已标記的資料,由資料元組和其關聯的類标簽構成,訓練集的一個數組元組可以表示為:[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]],其類标簽表示為:['a','b','c']。元組中的每個字段叫做資料的特征,或屬性;類标号是指該資料元組的類别。
其實分類問題,可以看作一個公式 y=f(x),分類模型通過從訓練集中學習來構造分類器,即從訓練集中學習,獲得y=f(x)這個公式(模型),對于新的資料a,f(a)就是預測的結果。
在機器學習中,資料元組也稱為樣本、資料點或對象。資料在應用到模型之前,需要對資料進行預處理,資料預處理主要是指特征選擇、數值處理等。
sklearn中的分類估計器(Estimator)指的是分類的算法模型,用于對資料進行分類,sklearn的分類算法有:knn、貝葉斯、決策樹等算法。
估計器主要由拟合(fit)和預測(predict)構成:
fit(x,y):拟合,傳入資料以及标簽用于訓練模型,訓練的時間跟算法的參數設定、資料集的大小以及資料本身的特點有關
predict(x):預測,用于對新資料進行預測,該方法接受一個資料點,輸出該資料點的預測标簽。通常使用該方法傳回測試的結果,再将這個結果用于評估模型。
分類模型的評估由模型的正确率和預測的不确定度構成:
score(x,y):模型的正确率,用于對模型的正确率進行評分(範圍0-1),計算公式是:count(預測正确的資料點)/總的資料點數量
predict_prob(x):每個類别的機率,表示預測的置信度。
在評估模型時,不能僅僅限于模型的正确率(score),由于在不同的問題下,評判模型優劣的的标準不限于簡單的正确率,可能還包括召回率或者是查準率等其他的名額,特别是對于類别失衡的樣本,準确率并不能很好的評估模型的優劣,是以在對模型進行評估時,不要輕易的被score的得分蒙蔽。
關于分類模型評估的詳細資訊,請閱讀sklearn的官方文檔:《3.3. Model evaluation: quantifying the quality of predictions》