alt + enter 자동완성

ctrl + space 자동완성 basic code completion

현재 year 가져오기 Calendar.getInstance().get(Calendar.YEAR)

UI를 위한 변수를 자동생성 해주기 위해 필요    

import kotlinx.android.sythetic.main.activity_main.*    

android toast message

Toast.makeText().show()   

kotlin random integer

Random.nextInt()

android drawable

<selector>

      <item>

            <shape>

                  <solid>

                  <corner>

android ImageView

resource 로 부터 이미지 가져오기 

ImageView.setImageResource()

android ListView

BaseAdapter , getItem, getCount, getItemId, getView

ListView.adapter = BaseAdapter를implement한obj

android view layout 

context객체.getSystemService()

android LayoutInflator 객체 얻는법

layoutInflator객체.inflate(Context.LAYOUT_INFLATER_SERVICE)

android activity 

다른 actvity로 이동

Intent, intent객체.putExtra(), startActivity() 

android Bundle activity Intent

intent에서 bundle data가져오기

intent객체.extras 는 Bundle 객체를 return. bundle객체.getString(”키이름”)

android ListView change delete update adapter

adapter객체.notifyDataSetChanged()

kotlin inner class access property

inner modifier

https://stackoverflow.com/a/45418262/3151712

android image drawable mipmap

한번에 다양한 크기의 같은 이미지 생성 프로그램

final_android_resizer

android GridView

ListView와 제작방법이 거의 동일하다.BaseAdapter , getItem, getCount, getItemId, getView. 단 GridView에 numColumns, columnWidth, horizontalSpacing 속성을 추가로 설정해야 한다.

GridView.adapter = BaseAdapter를implement한obj

android internet permission http

<uses-permission android:name = “android.permission.INTERNET”/>

android kotlin thread background

AsyncTask<> , doInBackground, onProgressUpdate, onPreExecute, onPostExecute

kotlin try catch

try{

}catch (ex:Exception){

}

android kotlin url connection

Url(url스트링) 하면 url객체를 얻을 수 있다. 

url객체.openConnection()하면 urlconnection객체를 얻을수있고 이를 HttpUrlConnection 객체나 HttpsUrlConnection객체로 타입전환할수 있다. HttpUrlConnection객체.connectTimeout() 을 통해 제한시간 설정가능

HttpUrlConnection.inputStream 을 통해 외부로부터 data를 받을수 있게 된다.

InputStream, InputStreamReader, BufferedReader 를 사용 한줄 한줄 읽어 온다.

android json 

JSONObect(스트링) , getJSONObect() 또는 getJSONArray()를 통해 한단계씩 들어가서 데이터를 가져온다.

android drawable background 

상태에 따른 스타일 바꾸기

<selector>  <item> <shape> <corner> <stroke> <solid> <padding>

<item android:state_pressed= “true”>

android firebase authentication analytics

Udemy kotlin android 강좌 

google firebase 사용방법 121 analytics ,122  authentication 매우 간단하고 이해하기 쉽다.

124 analytics

127 datastore database

130 3:00 addValueEventListener

android notification 

NotificationCompat.builder()

setDefault() setSmallIcon() setContentTitle() setContentText() setNumber()

context.getSystemService(context.NOTIFICATION_SERVICE)

Udemy kotlin android 강좌 132

android notification channel

NotificationChannel()

android image 사용 external storage camera permission

ActivityCompat.checkSelfPermission() 

requestPermissions()

onRequestPermissionsResult()

udemy 136 3:00 

android image file 디바이스에 있는 image file 가져오기

intent   intent.ACTION_PICK   android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI   startActivityForResult()

android image file content provider 사용자가 선택한 화일 가져오기

image

android filebase storage imageview에 있는 이미지를 압축해서 firebase storage에 올리기

FirebaseStorage   FirebaseStorage객체.getRefenceFromUrl()   

udemy 137

image

android google firebase authentication 

FirebaseAuth   createUserWithEmailAndPassword()   addOnCompleteListener()

FirebaseUser 

image

android picasso imageview image

udemy 140 9:00

android cloud messaging firebase

앱을 사용하는 다수의 사용자에게 message 보낼때사용. udemy 144

FirebaseMessaging.getInstance().subscribeToTopic()

manifest에 service추가 , meta-data 추가

Service class 작성  onMessageReceived()   

android kotlin variable element

참고) kotlin에서는 findById()과정없이 바로 element id통해 접근가능하다.

아래와 같이 사용해도 된다.

image

위와 같이 activity 안에 요소를 위한 variable을 만들고 view type을 명시적으로 해준경우 아래와 같이 <Button>을 해줘도 되고 안해도 된다.

image

그러나 아래와 같이 activity 안 어느 함수안에서 variable이 정의된경우 photoGalleryButton처럼 명시해주어야 한다.

image

android kotlin clicklistener listener lambda button

image

android kotlin photo picture intent

image

android photo gallery pick intent

image

android kotlin element id variable

image

kotlin에서는 findById()과정없이 바로 element id통해 접근가능하다.

android kotlin inputStream url http read buffer BufferedReader InputStreamReader

image

참고) BuffredReader에 대하여 https://www.baeldung.com/java-buffered-reader

android kotlin Toolbar ActionBar

아래에서는 toolbar는 activity_main layout에 있는 toolbar 의 id 이다.

image

android kotlin network 

network에 연결되었는지 확인하는 경우

image
image

android kotlin AlertDialog 

image
image

android kotlin bitmap url http 

image

android kotlin progress bar 

image

android kotlin button drawable background

gradientdrawable을 xml이 아닌 코드상에서 만드는 방법

image

android kotlin dp float drawable

gradientdrawable을 xml이 아닌 코드상에서 만들때 코너를 둥글게 만드는 경우 dp 사이즈를 설정해 주는데 이때 필요한 dp 값을 구하는 방법이다.

image

kotlin inner class nested 

https://stackoverflow.com/a/46730214/3151712

android kotlin listener anonymous class lambda sam

https://antonioleiva.com/lambdas-kotlin-android/

android kotlin listener anonymous class lambda sam

https://antonioleiva.com/listeners-several-functions-kotlin/

https://antonioleiva.com/lambdas-kotlin/

android kotlin draw onDraw

https://stackoverflow.com/questions/13640541/view-ondrawcanvas-c-versus-drawcanvas-c-in-android

android kotlin TextUtils isEmpty EditText가 비었는지 확인 축약형

https://stackoverflow.com/a/6290637/3151712

android kotlin bundle 만들기 축약형

https://medium.com/@programmerr47/creating-bundles-nicely-with-kotlin-1526fc173d01

옛날방법 https://stackoverflow.com/a/59957980/3151712

android kotlin invoke operator overload

https://stackoverflow.com/questions/45173677/invoke-operator-operator-overloading-in-kotlin

android studio json to kotlin plugin

json 내용을 보고 그에 맞는 kotlin classes를 자동으로 만들어 준다.

android studio – > preferences -> plugin -> json to kotlin 검색

kotlin reference member class ::

https://stackoverflow.com/a/51813211/3151712

kotlin by keyword delegate delegation

https://stackoverflow.com/a/57637851/3151712

required form field를 위한 model field 설정

https://docs.djangoproject.com/en/3.0/topics/forms/modelforms/#field-types

https://stackoverflow.com/a/27036431

p103 Model EmailField()

p104 null=True , blank=True

p105 model verbose_name option

p106-7 admin.py admin.ModelAdmin을 통해 admin 에서 볼수 있는 model들의 설정을 바꿀수 있다.

p107 admin.py admin.ModelAdmin 를 통해서 admin 화면 customizing이 가능하다.

p120 HttpRequest.META 안에 각종 header정보가 있다.

p124- 126 basic form GET 사용법

p133 basic form POST 작동원리 and 에러 

forms.ModelForm customizing하기

p136 forms.Form의 다른 widget으로 바꾸기

p138 forms.Form의 기본 validation 규칙 , 기본값 설정하기 

p139 custom validation 설정하기, label바꾸기

p140 field별로 html tag , message 출력하기

p147 공통된 url prefix를 설정하기

p162 wrapper를 이용해 여러 view들에 사전 작업을 처리할수 있다. (ex login wrapper) decorator와 같은 원리 이다.

p163 urls include

p174 template autoescape off 하는 방법

p176 {{data | default:”3 &lt; 2”}} template에서 기본값설정하는데 special character escaped

p256 cookies에 접근하는 법

p258 session 이용

p261 session check

p264 request.user

p265 request.user.is_authenticated()

p277 auth.authenticate() 와 auth.login()와 auth.logout()

p269 login_required decorator

p270 permission_required decorator

user_passes_test()

p271 creating user, set password , check password

  • User.objects.create_user(), User.set_password(), User.check_password()

p273 template에서 authentication data 사용하기

django docs Form 기본

django docs ModelForm

Using the Django authentication system

https://docs.djangoproject.com/en/3.0/topics/auth/default/#module-django.contrib.auth.forms

creating form from model

https://docs.djangoproject.com/en/3.0/topics/forms/modelforms/#django.forms.ModelForm

working with form

https://docs.djangoproject.com/en/3.0/topics/forms/

modelform customizing

https://colinkingswood.github.io/Model-Form-Customisation/

customizing UserCreationForm

https://stackoverflow.com/a/5745488

adjusting height with bootstrap

https://www.w3schools.com/bootstrap4/bootstrap_utilities.asp

https://getbootstrap.com/docs/4.0/utilities/sizing/

(input 의 높이를 지정하는 방법으로 percentage사용불가)

PasswordInput() 사용예시

https://www.programcreek.com/python/example/107521/django.forms.PasswordInput

message framework (ontime message to next view)

https://docs.djangoproject.com/en/2.0/ref/contrib/messages/

using authentication system in django

https://docs.djangoproject.com/en/3.0/topics/auth/default/

AuthenticationForm 수정 custom customizing하기

https://stackoverflow.com/a/12333660

AuthenticationForm수정 custom customizing하기

https://stackoverflow.com/a/12333660

==========================================================…original source : https://www.youtube.com/playlist?list=PLS1QulWo1RIYt4e0WnBp-ZjCNq8X0FX0J

image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

자바, kotlin의 경우 여러개의 생성자를 정의할수 있다. 

image
image
image
image
image

==========================================================

.

.

.

module

image
image

위위의 myfunctions.py 모듈을 import로 가져와서 사용하는 것을 보여주고 있다.

==========================================================

.

.

.

image

위는 모듈이 다른 directory에 있을 때를 보여주고 있다.

image

위는 모듈이 다른 directory에 있을 때의 또 다른 방법을 보여주고 있다

image

==========================================================

.

.

.

image
image
image

==========================================================

.

.

.

image

==========================================================

.

.

.

image
image
image

==========================================================

.

.

.

하나의 class 가 하나의 class안에 들어가는 것을 composition 이라고 한다. 

image
image

==========================================================

.

.

.

image

==========================================================

.

.

.

exception

image
image
image

==========================================================

.

.

.

__name__   property 

image

==========================================================

.

.

.

writing file

image
image

==========================================================

.

.

.

reading files

image

아래와 같이 없는 화일의 이름으로 여는 경우 filenotfounderror가 발생한다.

image
image
image
image
image
image
image
image
image
image

==========================================================

.

.

.

json file 읽고 쓰기

image
image
image
image
image

==========================================================

.

.

.

iterator

image
image

==========================================================

.

.

.

generators

image
image
image

==========================================================

.

.

.

command line arguments

image
image
image

==========================================================

.

.

.

lambda 

image
image

==========================================================

.

.

.

nested function and closure

image
image
image
image
image

==========================================================

.

.

.

decorator

image
image
image
image
image
image

==========================================================

.

.

.

operator overloading

image
image
image
image

==========================================================

.

.

.

global, local, nonlocal 변수

original source : https://www.youtube.com/playlist?list=PLlxmoA0rQ-LwgK1JsnMsakYNACYGa1cjR

image

var 는 변수 , val은 상수 설정한다.

var의 경우 data type을 정해주거나 기본값을 설정함으로써 암시적으로 data type을 결정해야 한다.

image

==========================================================

.

.

.

class , function

image

==========================================================

.

.

.

string interpolation

image

==========================================================

.

.

.

package , import

아래와 같이 두 화일이 다른 package에 있는데 이쪽화일에서 저쪽 화일의 내용을 사용해야 하는 경우 아래와 같이 import를 사용한다.

class Person(var name: String)은 기본 contructor 기능을 수행하며 name property를 만든다.

image
image

==========================================================

.

.

.

data type

image
image

==========================================================

.

.

.

data type

image

==========================================================

.

.

.

string interpolation

image
image

==========================================================

.

.

.

range 

image
image

==========================================================

.

.

.

if statement, if expression

image
image

==========================================================

.

.

.

where statement, where expression

image
image
image

==========================================================

.

.

.

Loops, iterator, Loop statement

image
image
image

==========================================================

.

.

.

image
image

==========================================================

.

.

.

image
image

==========================================================

.

.

.

break statement

image
image
image
image

==========================================================

.

.

.

continue statement

image
image
image
image

==========================================================

.

.

.

function

image
image

==========================================================

.

.

.

function as expression

image

==========================================================

.

.

.

interoperability

image
image

==========================================================

.

.

.

image
image

==========================================================

.

.

.

kotlin 화일명에 kt를 붙인 것이 보통 class 이름으로 사용되는데 이를 변경하고자 하는 경우 아래 방법을 이용한다.

image
image

==========================================================

.

.

.

kotlin 화일과 java 화일이 각각 다른 package에 있는 경우 import를 이용한다.

image
image

==========================================================

.

.

.

default fuction and @JvmOverloads

image
image
image

==========================================================

.

.

.

named parameter

==========================================================

.

.

.

android animation의 종류로는 기본적으로 3가지가 있다.

1. frame animation

2. tween animation (view animation)

3. property animation

.

.

.

.

.

.

.

.

frame animation

frame animation은 xml화일에 <animation-list> 와 <item>을 이용하여 만든다. 이를 ImageView에 src에 연결한다. 코드상에서는 ImageView를 통해서 AnimationDrawable obj형태로 받아오게된다.

res/drawable에 xml 형태로 저장된다.

참조) android docs AnimationDrawable https://developer.android.com/reference/android/graphics/drawable/AnimationDrawable

예시코드)

<!-- Animation frames are wheel0.png through wheel5.png
     files inside the res/drawable/ folder -->
 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
    <item android:drawable="@drawable/wheel3" android:duration="50" />
    <item android:drawable="@drawable/wheel4" android:duration="50" />
    <item android:drawable="@drawable/wheel5" android:duration="50" />
 </animation-list>
// Load the ImageView that will host the animation and
 // set its background to our AnimationDrawable XML resource.
 ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
 img.setBackgroundResource(R.drawable.spin_animation);

 // Get the background, which has been compiled to an AnimationDrawable object.
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

 // Start the animation (looped playback by default).
 frameAnimation.start();

.

.

.

.

.

.

.

.

tween animation (view animation)

  • view의 display형태만 바꾸는 방법이며 실제로 view의 위치는 바뀌지 않는다. 사용자가 이동된 위치에서 터치를 해도 반응하지 않는다. 
  • animation은 translate, scale, rotate, alpha 4가지가 있다.
  • xml 형태로 만든 animation은 res/anim 폴더안에 넣는다.
  • tween animation은 view, drawable (ShapeDrawable, BitmapDrawable), layout에 적용가능하다.
  • tween animation은 내부적으로 Matrix, Transformation class를 사용한다. 
  • AnimationUtils의 loadAnimation()를 이용해서 xml형태의 Animation을 가져온다.

tween animation에서 만들때 사용가능한 animation tag들은 아래와 같다.

image
image

.

.

image
image
image
image

.

.

<set>을 이용하여 여러가지 animation을 동시에 구현할수 있다.

image
image
image
image

.

.

일반적으로 사용되는 위의 4가지 animation이 아닌 다른 움직임을 구현하기 위해서는 custom animation을 이용한다. 이는 Animation을 extends하고 필요한 method를 override해서 구현한다.

image

.

.

xml형태로 만들어진 tween animation은 layoutAnimation에 적용가능하다. layoutAnimation을 이용하면 layout내의 view들이 처음 등장할때 animation대로 등장하게된다.

https://youtu.be/qMQar9UNqjU?t=2311

image

.

.

activity간 전환에 적용되는 animation도 tween animation (view animation) 이다.

app 내에서 모든 window의 생성, 사라짐에 사용되는 animation를 지정할때는 theme에서 사용될 view animation을 지정해 주면된다.

image
image

단하나 주의점은 animation의 작동시간을 지정해도 0.25초안에 마무리 되게 된다. 

image
image

.

.

fragment 전환간 animation에도 tween animation (view animation)이 사용된다.

image
image

.

.

추가적으로 ViewSwitcher (TextSwitcher, ImageSwitcher), ViewFlipper는 tween animation (view animation)을 이용한다. 맨 아래부분 참조

.

.

.

.

.

.

.

.

property animation

ValueAnimator, ObjectAnimator를 이용하는 방법이 있다. 기본적으로 ObjectAnimator는 ValueAnimator를 기반으로 extends 해서 만들어졌다.

ValueAnimator는 특정범위에안에서 변화된 값을 만들어낸다. 이때 addUpdateListener를 통해 연결된 listener에서 onAnimationUpdate() 안에서 변화되는 값에 접근할수 있다.

Animator, ObjectAnimator를 xml로 만드는 경우에는 res/animator에 만든다.

아래는 code에서 ValueAnimator를 이용한 경우

image

.

아래는 xml를 이용한 ValueAnimator 경우

image
image

.

ObjectAnimator를 code에서 이용하는 법과 xml을 통해 이용하는 방법을 보여주고 있다.

image
image

.

.

animator 를 이용한 animation을 AnimatorSet으로 묶어서 순서를 가지고 수행하거나 동시에 수행하는 방법을 설명하고 있다.

image
image

.

.

Animator를 이용해서 layout내의 view가 등장하거나 사라지거나 다른 view가 등장 사라짐에따라 위치가 변경되는 경우에 사용되는 animation을 만들수 있으며 이를 LayoutTransition이라고 한다.

image

.

.

Animator를 이용한 animation인데 기존의 경우 ValueAnimator가 특정범위에안에서 변화된 값을 만들어내고 addUpdateListener를 통해 연결된 listener에서 onAnimationUpdate() 안에서 변화되는 값을 통해 view의 속성값을 변화시켰다. 아래의 경우도 같은 효과를 가진다. 다만 ViewPropertyAnimator (support library를 사용한겨우 ViewPropertyAnimatorCompat)를 생성하기위해 View.animate (또는 support 라이브러리의 경우 ViewCompat.animate) 에 속성값을 animate할 view를 arg로 받게 된다.

image
image

.

.

RecyclerView내의 item이 생성되거나 사라질때 애니메이션을 이용할수 있는데 이때에도 Animator를 기반으로한 property animation을 사용한다. 

참조 영상 ) RecyclerView 내의 item 생성소멸시 animation 사용예 https://youtu.be/8sQmuafiaAQ?t=220  

image
image

.

.

AdapterViewAnimator, AdapterViewFlipper, StackView는 property animator를 기반으로 하고 있다.

.

.

.

.

.

이름이 ViewAnimator이지만 기본적으로 ViewSwitcher (TextSwitcher, ImageSwitcher), ViewFlipper는 tween animation (view animation)을 이용한다.

AdapterViewAnimator, AdapterViewFlipper, StackView는 property animator를 기반으로 하고 있다.

실제 사용 예시)

https://www.coursera.org/learn/machine-learning/lecture/OVM4M/deciding-what-to-try-next

Deciding What to Try Next

image

machine learning의 성능개선을 위해 해볼수 있는 조치들이다.

image


https://www.coursera.org/learn/machine-learning/lecture/yfbJY/evaluating-a-hypothesis

Evaluating a Hypothesis

image

overfitting을 방지하는 방법중의 하나로 데이터를 둘로 구분해서 한 부분( 70% )에 대한 Hypothesis (쎄타)값을 얻고 나머지 데이터에 적용해 보는 것이 있다.

image
image

https://www.coursera.org/learn/machine-learning/supplement/aFpD3/evaluating-a-hypothesis

Evaluating a Hypothesis

image
image


https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets

Model Selection and Train/Validation/Test Sets

image

 여러가지의  model을 생각할수 있다. 모든 features를 넣은 모델도 생각할수 있지만 적은 features만으로도 더 좋은 성능을 보이는 model이 있을수 있으며 이를 사용한다. 각각 model의 J() 최소값을 비교해서 결정할수 있다. 다만 모든 data를 training set으로 사용하면 그 data에 최적화된 model을 구할수 있지만 다른 새로운 data에 잘 부합하는지 확인할 방법이 없다. 확인을 위해 또 다른 data가 추가로 필요하다. 그러므로 주어진 data를 training set, cross validation set, test set으로 구분해서 각각이용하는 것이 좋다.  

image
image

위의 그림에서는 cross validation J()값이 제일 작은 d4를 model을 사용하는 것을 보여준다.

https://www.coursera.org/learn/machine-learning/supplement/XHQqO/model-selection-and-train-validation-test-sets

Model Selection and Train/Validation/Test Sets

image


https://www.coursera.org/learn/machine-learning/lecture/yCAup/diagnosing-bias-vs-variance

Diagnosing Bias vs. Variance

image
image

cross validation J() 를 대신해서 test J() 사용해도 된다.   

image

https://www.coursera.org/learn/machine-learning/supplement/81vp0/diagnosing-bias-vs-variance

Diagnosing Bias vs. Variance

image
image


https://www.coursera.org/learn/machine-learning/lecture/4VDlf/regularization-and-bias-variance

Regularization and Bias/Variance

image
image

training J() – (이 함수에 lamda가 있는데 유의)를 통해 최적의 theta를 구한다 그리고 또 이를 cross validation J() –(이함수에는 lamda가 없음에 유의)에 대입해서 가장 낮은 손실값을 가지는 theta를 구한다. 또 이를 test J() –(이함수에는 lamda가 없음에 유의) 에 대입해 본다.

image

https://www.coursera.org/learn/machine-learning/supplement/JPJJj/regularization-and-bias-variance

Regularization and Bias/Variance

image
image


https://www.coursera.org/learn/machine-learning/lecture/Kont7/learning-curves

Learning Curves

image
image

cross validation J()와 training J()가 높은 error에서 만난다는 것에 유의한다. 위 그림 좌측 하단 참조

image

https://www.coursera.org/learn/machine-learning/supplement/79woL/learning-curves

Learning Curves

image
image


https://www.coursera.org/learn/machine-learning/lecture/zJTzp/deciding-what-to-do-next-revisited

Deciding What to Do Next Revisited

training J() , cross validation J() 의 결과를 보고 어떤 조치를 해야 하는지에 대한 방법 설명

image

각 상황에 어떤 조치를 취해야 하는지 위에 그림 하단을 참조한다.

image


https://www.coursera.org/learn/machine-learning/lecture/4h5X4/prioritizing-what-to-work-on

Error Analysis

image

andrew 교수는 지저분하고 거칠수도 있지만 간단히 사용할수 있는 알고리즘을 통해 프로젝트에 접근하는 것을 추천한다.

image

이 강의에서는 spam 방지 알고리즘을 예로 들고 있다. 에러 분석 과정에서는 cross validation set에서 error를 일으킨(예상값과 실제값이 다른경우) 데이타를 category별로 구분하고 그 갯수를 확인한다. 그리고 이를 통해 어떤 새로운 방법을 적용할지 생각해 낸다.

image

알고리즘을 보완해 줄것이라고 예상되는 방법을 실제 적용해 보고 결과 수치가 어떻게 변화하는지 확인한다.

https://www.coursera.org/learn/machine-learning/supplement/Z11RP/error-analysis

Error Analysis

image
image


https://www.coursera.org/learn/machine-learning/lecture/tKMWX/error-metrics-for-skewed-classes

Error Metrics for Skewed Classes

본래 발생 가능성이 낮은 경우를 예측하는 경우 몇번의 우연한 예측이 들어 맞아도 좋은 성능을 보이는 알고리즘으로 평가 될수 있는데 이는 정확하지 않는 평가이다. 이와 같은 경우를 skewed class라고 하며 이를 평가할때는 precision과 recall 수치를 이용한다.

image


https://www.coursera.org/learn/machine-learning/lecture/CuONQ/trading-off-precision-and-recall

Trading Off Precision and Recall

image

cancer 여부를 판단하는 알고리즘을 예로 들고 있다. 예를 들어 계산값 판단기준을 0.99 와 같이 높게 잡으면 알고리즘의 정확성은 올라가지만  ( precision 값이 높아짐 ) 많은 경우 이미 암에 걸린 사람도 아닌것으로 판단될 가능성이 있다( recall 값이 낮아짐 ). 반대로 기준값을 0.01과 같이 낮추면 대부분의 사람이 암으로 판단되므로 정확성은 낮아 지고 recall값은 높아지게 된다. 그러므로 적당한 기준값을 설정해야 하며 이는 precision과 recall 값 둘다 적당히 유지 되어야 한다. 두 값을 적절히 조합한 수치가 f1 score이며 이를 알고리즘 성능 판단기준으로 삼는다.

image

기준값을 결정하는 방법으로 F1 score를 이용할수 있다. 


https://www.coursera.org/learn/machine-learning/lecture/XcNcz/data-for-machine-learning

Data For Machine Learning

대부분의 경우에는 많은 양의 training set이 머신러닝의 성능을 높이는데 도움이 된다.그렇지만 꼭 많은 데이터가 있어야만 하는 것은 아니다. 

image

대개 사람이 바로 대답할수 있는 질문의 경우 많은 양의 데이터가 필요하지 않다. 위의 그림의 two 단어 채우기 같은 작업을 들수 있다. 

많은 features를 가지고 있는 linear regression, logistic regression 많은 hidden layer를 가지고 있는 neural network의 경우 많은 데이터가 필요하다.