케라스 Mnist 샘플 보려면 여기
'AI, ML > ML' 카테고리의 다른 글
랜덤 포레스트(random forest) (1) | 2023.10.15 |
---|---|
윈도우 환경에서 ML환경 구축 (0) | 2022.03.09 |
Bayesian Online Changepoint Detection 논문리딩 (0) | 2019.08.21 |
부스팅(boosting) (0) | 2019.05.28 |
Word2Vec (0) | 2019.04.24 |
케라스 Mnist 샘플 보려면 여기
랜덤 포레스트(random forest) (1) | 2023.10.15 |
---|---|
윈도우 환경에서 ML환경 구축 (0) | 2022.03.09 |
Bayesian Online Changepoint Detection 논문리딩 (0) | 2019.08.21 |
부스팅(boosting) (0) | 2019.05.28 |
Word2Vec (0) | 2019.04.24 |
논문: https://arxiv.org/pdf/0710.3742.pdf
첫번째 핵심이 되는 수식은 다음과 같다.
결합확률 $$P(x_{t+1} \cap x_{1:t}) = P(x_{t+1}|x_{1:t})P(x_{1:t}) = \sum_{r_t}P(x_{t+1}|r_t, x_t^{(r)})P(r_t|x_{1:t})$$
해석해보면.. 1부터 t까지의 샘플을 보고 t+1의 샘플을 예측하는 것(확률 분포를 구하는것)
대략 아래 그림에서 층별로 잘라내서 분리해서 더한걸로 어느정도 이해가 된다.
중간식에서 오른쪽 식으로 변하는 수학적 디테일이 좀 불명확하긴 함
근데 change point에 대한 확률이 아니라 $x_{t+1}$자체를 예측하는거임? > $x_{1:t}$를 보고 $r_t$를 예측하는 식이 더 중요하고 곧 나옴 ㅋ
run length: time since the last changepoint
$r_t$: length of the current run at time t.
아래를 보면 $r_t$개념은 명확해진다. $r_2=1, r_3=2, r_5=0, r_6=1$이런식인것
$x_t^{(r)}$: set of observations associated with the run $r_t$ .. 흠 정의가 좀 모호하네
이 논문에서는 $x_t^{(r_t)}$ denotes the most recent data corresponding to the run $r_t$라고 돼있네.
즉 $r_{13}$에 대한 $x_t^{(r_13)} = \{x_{11}, x_{12}, x_{13}\}$이라는것 같다.
조건부 확률공식 $P(A|B)=\frac{P(A, B)}{P(B)}$ 에 따라 가장 핵심이 되는 수식은 다음과 같다.
$$P(r_t|x_{1:t}) = \frac{P(r_t,x_{1:t})}{P(x_{1:t})}$$
그다음에 이걸 $P(r_t, x_{1:t})$에 대해서 정리하면서 r-1과 r에 대한 recursive form으로 바꿔보면 다음과 같이 된다.
(수학적 디테일은 살짝 스킵하자)
윈도우 환경에서 ML환경 구축 (0) | 2022.03.09 |
---|---|
케라스(Keras) (0) | 2020.04.13 |
부스팅(boosting) (0) | 2019.05.28 |
Word2Vec (0) | 2019.04.24 |
weka (0) | 2019.02.28 |
bagging은 decision tree쪽에서 활용되는 기술이며 bootstrapping을 통해 강한 오버피팅모델 여러개를 만들어 correlation을 줄인다음 앙상블 하는 기술
bootstrap sampling(중복을 허용하여 전체가 아닌 부분을 샘플링하는 것) 을 통해 여러개 모델을 병행적으로 동시에 학습시키고 평균을 취하는 것(voting)
아래처럼 acc가 높은 상황에서 모델별로 오동작 하는 영역이 다르면 최상의 결과를 가져옴
error rate가 50%에 가까운(49%등) weak classifier를 사용하는 것 가능(!!)
케라스(Keras) (0) | 2020.04.13 |
---|---|
Bayesian Online Changepoint Detection 논문리딩 (0) | 2019.08.21 |
Word2Vec (0) | 2019.04.24 |
weka (0) | 2019.02.28 |
1D CNN (0) | 2019.02.26 |
참고한 링크는 여기
말 그대로 단어를 벡터로 바꿔주는 알고리즘. 뉴럴 네트워크를 사용함.
단어를 벡터로 바꾸는 가장 간단한 방법은 ont-hot encoding 인데, 이걸로 하면 단어간 유사성을 계산할 수 없는 단점이 존재.
2가징 방법론이 있는데
CBOW(Continuous Bag of Words)는 주변에 있는 단어들을 가지고, 중간에 있는 단어들을 예측하는 방법.
Skip-gram은 반대로 중간에 있는 단어로 주변 단어들을 예측하는 방법
Word2Vec의 입력은 모두 one-hot vector가 되어야 한다. 아래 그림 두 장을 보면 대체로 이해가 된다.
하나의 hidden layer만 사용하기 때문에 deep하지 않음에 주목.
hidden layer의 노드 개수가 결과적으로 인코딩 되는 벡터의 차원수가 된다.
Bayesian Online Changepoint Detection 논문리딩 (0) | 2019.08.21 |
---|---|
부스팅(boosting) (0) | 2019.05.28 |
weka (0) | 2019.02.28 |
1D CNN (0) | 2019.02.26 |
의사결정나무(Decision Tree) (0) | 2019.02.07 |
캐글에 실제로 도전해 보는건 처음이다.
도전하려고 하는 것은 이 문제 이며, 간단한(?) classification으로 보여서 해보려고 한다.
(나중에 알았지만 이 문제는 예측할때 여러 class를 동시에 낼 수 있는 multi-class문제여서 생각보다는 복잡했다.)
캐글에 로그인한 다음 competition에 join하고 new kernel하면 ipython notebook 환경으로 들어갈 수가 있다.
이 글에 사용된 kernel은 여기를 눌러서 확인
여기참조해서 작성했음을 밝힙니다.
ML하는데 있어서 기본 적인 툴, Java로 작성되어 있으며 오픈소스이다(여기서 다운로드)
다양한 종류의 ML알고리즘을 제공하며 간단하게 유명한 알고리즘들을 빠르게 돌려보고 싶을때 유용하다(앙상블 알고리즘 돌려보는데도 좋다)
단 커스터마이징이 커맨드라인 옵션 수준이라 나만의 모델을 만드는데 적합하지는 않은것 같다.
data입출력에 CSV와 유사한 ARFF포맷 사용
weka 실행 후 Explorer 누르고 Open file 누르고 설치폴더 data 안에 들어가면 기본적으로 제공되는 많은 arff 파일들을 살펴볼 수 있다.
추가적인 데이터는 여기서 살펴보면 좋다.
데이터 자체를 살펴보고 싶으면 Edit버튼을 누르고 보면 된다.
처음에 둘러보기 좋은 데이터는 iris 추천.. 꽃잎 length랑 width가 주어지고 class로 세가지 iris종류가 label되어 있는 자료이다.
특정 인풋컬럼(feature)에 대해서 노말라이즈하기, 비주얼라이즈하기
Select Attributes 탭에서 feature selection 하기 (유의미한 컬럼 순으로 나열해서 필요없는 컬럼 제거하거나 할 수 있다)
Attribute Evaluator는 CorrelationAttributeEval이나 InfoGainAttributeEval 이런거 고르면 된다.
classification하기..
Classify탭에서 알고리즘 고르고 Start 버튼 누르면 된다. baseline performance는 ZeroR로 하면 좋다고 한다.(Zero Rule)
Zero Rule 알고리즘은 단순히 개수가 많은쪽 class로 몰빵해서 예측하는 알고리즘이라고 함
(classification이 아닌 regression의 경우는 평균값으로 예측한다고 함)
5 Top algorithms that you can use for classification include:
- Logistic Regression (functions.Logistic).
- Naive Bayes (bayes.NaiveBayes).
- k-Nearest Neighbors (lazy.IBk).
- Classification and Regression Trees (trees.REPTree).
- Support Vector Machines (functions.SMO).
regression하기..
Weka는 기본적으로 Classification에 강한 툴이지만 regression 알고리즘 및 샘플 데이터도 어느정도 제공한다.
여기서 regression용 추가 데이터 다운로드(jar파일이라 압축해제해야 arff파일들 나온다)
classfication과 마찬가지로 ZeroR로 베이스라인 성능 확인하고(Root mean squared error 등) 다음 알고리즘들 돌려보면 된다.
5 Top algorithms that you can use for regression include:
- Linear Regression (functions.LinearRegression).
- Support Vector Regression (functions.SMOReg).
- k-Nearest Neighbors (lazy.IBk).
- Classification and Regression Trees (trees.REPTree).
- Artificial Neural Network (functions.MultilayerPerceptron).
Ensemble하기..(classification, regression 둘 다 지원)
앙상블은 일종의 메타 알고리즘이라 어떤걸 sub알고리즘으로 사용할지 커맨드라인에서 지정해줘야함에 주의.. 기본적으로는 ZeroR로 세팅된 경우가 많아서 더욱 그렇다.
5 Top ensemble algorithms that you can use include:
- Bagging (meta.Bagging).
- Random Forest (trees.RandomForest).
- AdaBoost (meta.AdaBoost).
- Voting (meta.Voting).
- Stacking (meta.Stacking).
부스팅(boosting) (0) | 2019.05.28 |
---|---|
Word2Vec (0) | 2019.04.24 |
1D CNN (0) | 2019.02.26 |
의사결정나무(Decision Tree) (0) | 2019.02.07 |
[데이터 전처리] clipping vs trimming (0) | 2019.01.04 |
소스코드는 여기서 확인가능(macOS에서 동작확인함)
convolution 자체에 대한 좋은 튜토리얼은 여기
일반적인 CNN에 대해서 좋은 튜토리얼 여기(1D CNN포함)
A 1D CNN is very effective when you expect to derive interesting features from shorter (fixed-length) segments of the overall data set and where the location of the feature within the segment is not of high relevance.
짧은 구간에 대해서 흥미로운 패턴을 인식하고 싶고, location에 상관없을 때 좋다고 한다. 2D이미지로 따지자면 고양이가 이미지 상에서 어느 location에 있던지 상관없어야 하니 맞는말인듯 하다. 주식에 대입해보면 어떨까? 아쉽게도 주식은 trend 및 seasonality가 존재하기 때문에 location에 영향을 받는다고 해야할 것 같다. 상승 패턴이라고 하더라도 방금전에 나온것과 한달전에 나온것은 다르기 때문이다.
여기 개념 잘 봐두자.
[첫번째 conv layer]
센서x,y,z를 width로 둔다 따라서 값은 3
feature detector 또는 필터의 경우 가로3, 세로 10의 사이즈를 가진다.
이 필터를 아래쪽으로 height만큼 슬라이딩 한다. (80-10+1 = 71)
필터 하나당 숫자 하나가 나와서 결과적으로 71개의 숫자가 나오고 필터 개수가 100개면 71x100개의 아웃풋이 나온다.
(위의 그림의 경우 height라고 표시하고 개념은 커널사이즈인걸로 보여서 헷갈린다. 문서 뒷부분에 보면 height랑 kernel size를 같은거라고 또 적어놨다 -_-)
아래그림에서 height는 인풋에 들어가는 개수라고 설명되어 있다. 최근 80개의 센서값이 네트웍 인풋으로 들어간다는 듯
[두번째 conv layer]
비슷한 작업을 한차례 더한다. (71-10+1 = 62)
해서 62 x 100 사이즈의 아웃풋이 나온다.
[pooling]
3개당 하나씩 풀링해서 62x100을 20x100으로 만든다 (왜 21이 아니고 20일까?)
그 이후는 트리비얼 한듯
Word2Vec (0) | 2019.04.24 |
---|---|
weka (0) | 2019.02.28 |
의사결정나무(Decision Tree) (0) | 2019.02.07 |
[데이터 전처리] clipping vs trimming (0) | 2019.01.04 |
Standardization vs normalization (0) | 2019.01.04 |
Decision Tree가 무엇인지는 아래 그림보면 한 번에 이해가 됨(출처)
weka (0) | 2019.02.28 |
---|---|
1D CNN (0) | 2019.02.26 |
[데이터 전처리] clipping vs trimming (0) | 2019.01.04 |
Standardization vs normalization (0) | 2019.01.04 |
Gym (0) | 2018.11.07 |
extreme value에 대해서 범위내 값으로 치환하는 것(버리진 않음)
extreme value에 대해서 버리는 것
1D CNN (0) | 2019.02.26 |
---|---|
의사결정나무(Decision Tree) (0) | 2019.02.07 |
Standardization vs normalization (0) | 2019.01.04 |
Gym (0) | 2018.11.07 |
크로스엔트로피 손실함수 (0) | 2018.10.02 |