1. 程式人生 > >【Trick】機器學習特徵工程處理(一)

【Trick】機器學習特徵工程處理(一)

前言

機器學習特徵工程處理系列部落格為博主學習相關視訊教程以及結合平時接觸到的特徵工程處理方法,總結出的一些處理技巧,本篇部落格介紹資料格式化、資料清洗、資料取樣等,我在之前有總結過一篇部落格介紹資料預處理的常用方法,對其中的部分操作有涉及,如有需要,可參考本篇部落格。

資料格式化

儲存格式

(一)時間戳/時間段/時間記錄標準
對於同類屬性,比如時間屬性,表達形式不同,但要採取同樣的記錄格式,一般來講,通過網路爬蟲爬取的web資料,通常這類屬性較為整齊,不需要做過多的處理,但生成或人工記錄的資料,可能會出現不同差異,比如時間屬性的記錄,像R語言本身會以1970年1月1日00:00作為時間戳記錄現在時間距離上述時間的秒數,而認為設定的時間記錄標準可能為:年-月-日、月-日-年、按星期記錄、12小時制(am、pm)、24小時制等等,當這類資料生成之後,處理時候就會非常麻煩,解決這類資料的最好方法就是扼殺在萌芽之中,即同一個專案,儘量採取相同的相似屬性記錄方式,這樣,在以後的屬性轉換、預處理中都會極大的簡化處理過程。
(二)行為記錄/行為群記錄
這個好理解,就是單個屬性的多個行為記錄,要麼分條列出來,要麼整體列出來,舉個例子,我再之前進行資料爬取時,

資料清洗

這部分在之前的那個部落格中介紹的非常詳細,其中涉及很多清洗方法。

資料取樣

在實際的建模過程中,經常會遇到需要進行資料取樣的問題,很多情況下正負樣本是不均衡的,比如電商中使用者購買/未購買過的商品;電信使用者中流失/保留的使用者量等等,大多數模型對正負樣本的量是敏感的,比如LR,如果不進行樣本取樣,就會嚴重影響模型效果。
資料不均勻問題很常見,也很容易被忽視掉,資料不均勻會導致模型精度下降,需要重視,假設有一個數據集,是一個二分類資料集,包含的正負樣本的比例為10:1,可以採用如下中的一種進行處理:
(1)從正樣本中隨機抽取十分之一與負樣本組成訓練集。這種情況需要注意:一定要保證是在資料量足夠大的情況下,如果資料本身就很少,這樣做反而會更加麻煩。
(2)賦予負樣本十倍於正樣本權重。由於負樣本比較少,這時增加負樣本權重,會彌補由於負樣本數量少帶來的影響。
(3)將負樣本資料額外複製9份,並新增極小噪聲。
下面是一個例項介紹資料不均勻會帶來的影響,可能有點極端,但用來解釋這個問題很合適。資料集:正樣本:9900個,負樣本100個,合計10000個樣本點,用來進行二分類研究,如果直接進行建模,可能出現的一種情況是:模型將所有輸入都預測為正樣本,最終依舊會得到很高(99%)的準確率,而對於負樣本的召回率為0,如果只是對模型精度進行判斷根本檢查不出異常,但這樣的模型又是萬萬不能在實際中應用的。
總結一下樣本不平衡的處理方法:
(1)正樣本>>負樣本,並且樣本量比較大的情況下,進行下采樣。
(2)正樣本>>負樣本,並且樣本量都不大的情況下:
a)增加資料
b)下采樣,如深度學習中的影象旋轉
c)修改損失函式

參考資料

roguesir的部落格:資料預處理的常用方法
七月線上機器學習第八期課程:機器學習中的特徵工程處理
周志華《機器學習》
李航《統計學習方法》
Ian Goodfellow等《deep learning》

相關推薦

Trick機器學習特徵工程處理

前言 機器學習特徵工程處理系列部落格為博主學習相關視訊教程以及結合平時接觸到的特徵工程處理方法,總結出的一些處理技巧,本篇部落格介紹資料格式化、資料清洗、資料取樣等,我在之前有總結過一篇部落格介紹資料預處理的常用方法,對其中的部分操作有涉及,如有需要,可參考本

NIFI Apache NiFI 之 ExecuteScript處理 NIFI Apache NiFI 之 ExecuteScript處理

  本例介紹NiFI ExecuteScript處理器的使用,使用的指令碼引擎ECMScript   接上一篇【NIFI】 Apache NiFI 之 ExecuteScript處理(一) ExecuteScript使用   1、動態屬性     其中一個功能是動態屬性的概念,也稱為使用者定義屬性。這

ML1機器學習之EM演算法含演算法詳細推導過程

        寫在前面的話:對於EM演算法(Expectation Maximization Algorithm, 最大期望演算法), 大家如果僅僅是為了使用,則熟悉演算法流程即可。此處的演算法推導過程,僅提供給大家進階 之用。對於其應用,

ng機器學習視頻筆記——線性回歸、代價函數、梯度下降基礎

info 而且 wid esc 二維 radi pan 圖形 clas ng機器學習視頻筆記(一) ——線性回歸、代價函數、梯度下降基礎 (轉載請附上本文鏈接——linhxx) 一、線性回歸 線性回歸是監督學習中的重要算法,其主要目的在於用一個函數表

機器學習之數學基礎-微積分,概率論和矩陣

系列 學習 python 機器學習 自然語言處理 圖片 clas 數學基礎 記錄 學習python快一年了,因為之前學習python全棧時,沒有記錄學習筆記想回顧發現沒有好的記錄,目前主攻python自然語言處理方面,把每天的學習記錄記錄下來,以供以後查看,和交流分享。~~

貝葉斯在機器學習中的應用

需要 基礎 under 情況下 學生 意義 span 公式 ext 貝葉斯在機器學習中的應用(一) 一:前提知識 具備大學概率論基礎知識 熟知概率論相關公式,並知曉其本質含義/或實質意義

MybtaisMybatis 插件 Plugin開發動態代理步步解析

發現 返回 交集 hand proc 攔截 and mybatis invoke 需求:   對原有系統中的方法進行‘攔截’,在方法執行的前後添加新的處理邏輯。 分析:   不是辦法的辦法就是,對原有的每個方法進行修改,添加上新的邏輯;如果需要攔截的方法比較少,選擇此方法到

吳恩達老師機器學習筆記異常檢測

明天就要開組會了,天天在辦公室划水都不知道講啥。。。 今天開始異常檢測的學習,同樣程式碼比較簡單一點 異常檢測的原理就是假設樣本的個特徵值都呈高斯分佈,選擇分佈較離散的樣本的作為異常值。這裡主要注意的是通過交叉驗證對閾值的選擇和F1score的應用。 原始資料: 程式碼如下:

機器學習之數學系列矩陣與矩陣乘法

1.對於矩陣的認識應當把它看成是多個向量的排列表或把矩陣看成行向量,該行向量中的每個元素都是一個列向量,即矩陣是複合行向量。如下圖所示。 2.對於下面這個矩陣的乘法有兩種看法: (1)矩陣將向量[b1,b2,b3].T進行了運動變換,這種變換可以是同空間內變換,也可以是不同空間間的變換;

機器學習實戰》 筆記:K-近鄰演算法

一、K-近鄰演算法 1.1 k-近鄰演算法簡介 簡單的說,K-近鄰演算法採用測量不同特徵值之間的距離的方法進行分類。 1.2 原理 存在一個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料 與所屬分類的對應關係。輸入沒有標籤的新資料

Python機器學習基礎教程筆記

description: 《Python機器學習基礎教程》的第一章筆記,書中用到的相關程式碼見github:https://github.com/amueller/introduction_to_ml_with_python ,筆記中不會記錄。 為何選擇機器學習 人為制訂決

教程Matrikon OPC使用教程連載

MatrikonOPC介紹: Matrikon是基於OPC UA和基於OPC的控制自動化資料互操作性產品的供應商,提供自動化廠商的高階OPC UA開發工具包,適用於從嵌入式裝置到雲應用的所有產品線。對於終端使用者客戶,Matrikon提供了關鍵資料工具,以最好地促進企業廣泛的資料共享。產品主要包含:各類

機器學習技法筆記總結SVM系列總結及實戰

機器學技法筆記總結(一)SVM系列總結及實戰 1、原理總結 在機器學習課程的第1-6課,主要學習了SVM支援向量機。 SVM是一種二類分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性分類器。 (1)當訓練樣本線性可分時,通過硬間隔最大化,學習

系統學習自然語言處理--綜述

今天開始,進入NLP方向,目前在看《自然語言處理綜論》作為入門基礎,又不高興自己手打,所以,就參考了這篇部落格,作了一些修改。 另外,這本書的第二版,還沒有討論深度學習在NLP的應用,因此,可以作為一個基礎讀物,搞明白NLP是什麼,做什麼,怎麼做這些問題,但它比一般的N

機器學習實戰--決策樹

決策樹是一種通過推斷分解,逐步縮小待推測事物範圍的演算法結構,重要任務就是理解資料中所蘊含的知識資訊,可以使用不熟悉的資料集合,並從中提取出一系列規則,根據資料集建立規則的過程就是機器學習的過程。 優點:計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特

機器學習基本概念梳理

1.輸入空間:輸入所有可能取值的集合 2.輸出空間:輸出所有可能的集合 3.特徵空間:所有特徵向量存在的空間 4.統計學習方法三要素:模型、策略、演算法。 5.監督學習的目的在於找到一個從輸入到輸出的對映,分為學習和預測。 6.期望損失:又稱風險函式,R=∫L(

機器學習實戰決策樹——資訊增益與劃分資料集

from math import log #計算給定的熵 def calcsahnnonent(dataset): numentries = len(dataset) #計算例項的總數 labelcounts ={} #

更新LEADTOOLS v20最新版釋出

在數碼圖象開發工具領域中的全球領導者——LEADTOOLS v20已正式釋出,本站將以連載的形式為大家介紹新版本新增內容。本文主要介紹了LEADTOOLS v20新的發展平臺。 LEAD Technologies已經正式推出LEADTOOLS v20。這個新的版本將LEAD的成像技術擴充套件到新

深入淺出理解決策樹演算法-核心思想

演算法思想 決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。 其每個非葉節點表示一個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放一個類別。 使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇

原創從原始碼剖析IO流輸入流與輸出流--轉載請註明出處

InputStream與OutPutStream兩個抽象類,是所有的流的基礎,首先來看這兩個流的API InputStream: public abstract int read() throws IOException; 從輸入流中讀取資料的下個位元組